线性对比度展宽的MATLAB实现
实现程序如下图所示:
% 线性对比度展宽示例
% 设置参数
function [G]=dip(ImPath,fa,fb,ga,gb)
F = imread(ImPath); % 读入图像到矩阵F
F = rgb2gray(F); % 图像变为灰度图像
[m,n] = size(F); % 得到F的行列数m,n
G = zeros(m,n); % 初始化输出矩阵G
for i=1:m
for j=1:n
if(F(i,j)<fa)
G(i,j)=(ga/fa)*F(i,j);
elseif(F(i,j)<fb)
G(i,j)=((gb-ga)/(fb-fa))*(F(i,j)-fa)+ga;
else
G(i,j)=((255-gb)/(255-fb))*(F(i,j)-fb)+gb;
end
end
end
figure,imshow(uint8(F));title('原图');
figure,imshow(uint8(G));title('线性对比度展宽后的图像');
end
命令行窗口输入如下代码:
ImPath='img\pict1.png'; % 路径设置
fa = 5; fb = 30;
ga = 80; gb = 100;
[G]=dip(ImPath,fa,fb,ga,gb);
原图是在黄昏时段拍摄的,由于时间偏晚,拍摄下来的场景不够好。利用MATLAB进行对比度展宽处理后,画面的效果明显得到改善。