灰度变换函数
imadjust
- g=imadjust( f, [low_in high_in] ,[low_out,high_out],gamma)
- 功能:将输入图像 f 中灰度值 映射为图像 g中新值
- 参数说明:
[low_in high_in] ,[low_out,high_out] 默认[0 1]
- 将[low_in high_in] 之间的值映射到[low_out,high_out]
- low_in以下和high_in以上将截去,统一映射成low_out和high_out
- 所有值在0-1之间,输入图像可以uint8、uint16等,(如uint8在进行处理的时候乘以255即可)
gamma默认:1
当gamma<1,映射曲线如图,将低灰度 映射到 高灰度,呈现效果就是图片变白 ![在这里插入图片描述][20181105222728568.jpg] 当gamma=1,映射曲线如图,图像是线性,呈现效果就是图片没变(等值映射,否则有变化,得到灰度值扩大或者缩小) ![在这里插入图片描述][20181105222755639.jpg] 当gamma>1,映射曲线如图,将高灰度 映射到 低灰度,呈现效果就是图片变黑
代码实例:
I = imread(‘pout.tif’);
imshow(I);figure
A=imadjust(I,[0 1],[1 0],1); %负片,可以用A=imcomplement(I) 函数得到,强调一大片黑色区域中的白色细节的时候很有效
imshow(G);figure
B=imadjust(I,[0.3 0.8],[0 1],1); %将0.3到0.8之间扩展到0-1,强调感兴趣的灰度区域
imshow(B);
stretchlim
- Low_High=stretchlim( f ,tol )
- f是输入图像,tol 可以是二维行向量,如:[0.1 0.9] ,返回Low_High也是两个元素的向量,tol是一个百分比,它的意思:图像所有像素底部10%的那个位置像素 到 高部分90%的那个位置像素,这两个位置分别对应输出Low High。
- 如果tol是一个数,则等价于[tol 1-tol]
- 忽略tol :[0.01 0.99]
- tol是0:返回Low:min(f) High:max(f) 相当于整个图像的像素范围
得到负片代码实例
I = imread(‘pout.tif’);
figure(1)
J=imadjust(I,[0 1],[1 0]); %从0-1之间,但有可能图像范围没有那么广,或者只有很少的椒盐噪声,那么0和1周围的像素点属于无效映射
imshow(J)figure(2)
G=imadjust(I,stretchlim(I),[1 0]);% 利用stretchlim得到I图像的范围,得到负片的对比于上一种方法
imshow(G)
figure1
figure2
还没有评论,来说两句吧...