灰度拉伸是灰度分段线性变换的一种,能够增强图像对比度,实际上增强原图各部分的反差,增强输入中感兴趣的灰度区域,抑制不感兴趣的灰度区域。
介绍
1、函数表达式如图,重要的参数是[x1,x2],[y1,y2].x1和x2是需要转换的灰度范围,y1和y2参数决定线性变换的斜率.可以看出函数表达式就是分段函数的表达式.
2、如图是x1,y1等值取一般值时,输入图像的灰度到输入图像灰度分段线性变换的映射.
3、当斜率大于1,拉伸区域会变亮,斜率小于1会变暗.
分析函数parse_inputs
1、对图像变换前,需要定义一个分析输入参数个数和有效性的函数parse_inputs.输出:图像A、索引图调色板map、参数组[x1,x2][y1,y2]
2、首先建立一个空map,以免后面调用isempty(map)出错.使用IPTCHECKNARGIN检查输入参数个数是否符合要求,使用IPTCHECKINPUT检查给定矩阵元素是否属于给定的类型列表.
3、然后根据参数个数不同,分别确定相应的返回值.
4、检测输入参数的有效性,检查RGB数组.
5、检查调色板map.
6、最后将int16矩阵化为uint16类型.
函数imgrayscaling
1、该函数进行灰度拉伸,若输入图像不是灰度图像,会自动将图像转化为灰度形式.
2、计算输入图像A的数据类型对应的取值范围.
3、对非灰度图像进行转换.
4、读取原图大小并初始化输出图像.
5、使用嵌套循环和选择结构进行分段线性变换.
6、将输出图像的格式变为与输入图像相同.
7、输出,如果没有提供参数接受返回值.
示例
1、以自带的coins.png为例,原图如图.
2、[x1x2][y1y2]为[0.30.7][0.150.85]灰度拉伸后的图像如图.
3、[x1x2][y1y2]为[0.150.85][0.30.7]灰度拉伸后的图像如图.