- Github主页:https://linxid.github.io/
- 知乎:https://zhuanlan.zhihu.com/p/35775368
- CSDN:https://blog.csdn.net/linxid/article/details/79973258
亮度(灰度)变换是一种非常重要的空间域内处理图像的方法,主要介绍几个亮度变换函数,以及应用。
函数简介
1.imadjust
该函数用来调整亮度,可以映射加权至更高的或更低输出值。
imadjust是亮度变换的基本IPT工具,语法为:
g = imadjust(f,[low_ in high_ in],[low_ out, high_out],gamma);
f:输入图像;
low_in,high_in,low_out,high_out:将low_ in,至high _ in之间的灰度值映射到low _ out,high_ out。low_ in以下的值和high _ in以上的值被剪切掉。空矩阵默认为[0 1];
gamma:决定曲线的形状,对gamma不同的值,如下图所示,默认参数为1.
注意:
1.除图像f外,imadjust的其他输入为[0 1],不论图像的类。若f是unit8,则函数将乘以255。
2.若是high_out小于low_out怎会输出图像反转。
2.对数和对比度拉伸变换
这两种变换时进行动态范围处理的基本工具。
对数变换
- 实现语法:
g = c*log(1+double(f));
该函数的形状类似于gamma函数,但是gamma曲线形状可变,log不可变。 - 主要应用:压缩动态范围
比如傅里叶频谱的显示范围很大,高值部分占优,通过log变换可以进行压缩,便于处理。 - 注意:期望将导致的压缩至还原为显示的全范围,以下方法实现。
gs = im2unit8(mat2gray(g));
mat2gray将值限定在[0,1]范围内,im2unit8将值限定在[0,255]范围内。
###对比度拉伸变换 - 实现语法:
g = 1./(1 + (m./(double(f)+eps)).^E)
E:控制函数的斜率
m:显示的阈值,理想条件下及变成阈值函数。 - 主要应用:可以将输入值低于m的灰度级压缩为较暗灰度级范围内,同样,将高于m的灰度级压缩为较亮范围内。
变换图像如图所示:3.实例分析
我们自己写一个m函数,实现多种亮度(灰度)变换的功能,同时输入变量可以放宽,通过检测输入变量的个数,来设置默认值。
1 | function g = intrans(f,varargin) |