对数变换
对数变换的一项主要应用是压缩动态范围。一些特别的图像在实际显示中,高灰度值部分较占优势,而低灰度值的可见细节部分丢失。通过计算对数,如10的动态范围会降至14左右[即 ln10=13.8],这样就更易于处理。
对数变换就是压缩图像的高灰度值部分,扩张低灰度值部分。其函数表达式为:
s=clog(1+r)
其中cc为常数,rr为浮点数。
在MATLAB中,常使用mat2gary函数进行对数变换,如:
I= mat2gray(ss);
示例代码
示例程序如下所示:
I = imread('office_1.jpg');
I_1 = double(I); %将输入图像由uint8类型转换
成double类型
s = log(1+I_1); %对数变换
I_2 = mat2gray(s) %将结果标定为[0 1]范围
内的double类的数组
J = im2uint8(I_2); %将数组转换成uint8类
型的图像
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(J);
效果图片
对数变换后的图像与原图像相比,视觉效果大幅提升,如下图所示。