利用分段线性变换函数来增强图像对比度的方法实际是增强原图各个部分的反差,即增强输入图像中感兴趣的灰度区域,相对抑制那些不感兴趣的灰度区域。分段线性函数的主要优势在于它的形式可以任意合成,而其缺点是需要更多的用户输入。
分段的灰度拉伸可以更加灵活地控制输出灰度直方图的分布,可以有选择的拉伸某段灰度区间以改善输出图像。如果一幅图像灰度集中在较暗的区域而导致图像偏暗,我们可以用灰度拉伸功能来扩展(斜率大于1)物体灰度区间以改善图像;同样,如果图像灰度集中在较亮的区域而导致图像偏亮,也可以用灰度拉伸功能来压缩(斜率小于1)物体灰度区间以改善图像质量。
灰度拉伸是通过控制输出图像中灰度级的展开程度来达到控制对比度的效果的。
用imgrayscaling 函数来实现灰度线性变换。为了使用可变个数的参数,imgrayscaling 函数中使用了细胞数组,将函数的输入参数整体看做一个细胞数组,为此需要编写一个parse-inputs函数来解析该细胞数组的内容,该函数返回值是imgrayscaling 中所有可能由用户初始化的参数值。
parse-inputs函数的实现
function [A , map, x1,x2,y1,y2]=parse-inputs(varargin)
map= [];
iptcheckinput(varargin{1}...
{'uint8', 'uint16' ,'int16' ,'double'},...
{'real' ,'nonsparse' }, mfilename ,'I, x or RGB ',1 );
swich nargin
case 3 <