数字图像处理之亮度变换
by方阳
版权声明:本文为博主原创文章,转载请指明转载地址
http://www.cnblogs.com/fydeblog/p/6557603.html
第二篇博客,为自己加油加油!!
今天写一点亮度变换的东西;亮度变换主要有线性与非线性变化和直方图处理,线性变化有分段线性和直接线性之分,非线性有对数变换,幂律变换等等,直方图处理有直方图均衡和直方图归一化,今天只讲直方图均衡。
今天选的是被广泛使用的lena图片,大家有眼福了!直方图用的是细胞图,比较明显!
参考书籍:数字图像处理(matlab版)——冈萨雷斯
直接线性变换:直接乘以倍数
参考代码:
I=imread('lena.bmp');
I1=I*2;
I2=I/2;
figure;
subplot(1,3,1);
imshow(I);
title('原图');
subplot(1,3,2);
imshow(I1);
title('线性2倍');
subplot(1,3,3);
imshow(I2);
title('线性1/2倍');
运行结果;
非线性变换:对数和幂律变换
参考代码:
figure;
A=double(I);
B=40*(log(A+1));
I3=uint8(B);
subplot(1,3,1);
imshow(I3);
title('对数');
I_D=double(I);
C=I_D/255;
I4=uint8(255*(C.^0.7));
subplot(1,3,2);
imshow(I4);
title('幂律变换—γ=0.5');
I5=uint8(255*(C.^1.3));
subplot(1,3,3);
imshow(I5);
title('幂律变换—γ=1.5');
运行结果:
分段线性变换:这里只介绍灰度层分级,其他的类似
参考代码:
figure;
subplot(1,3,1);
imshow(I);
title('原图');
I6=fy_PiecewiseLinear(I,100,170,1.5);
subplot(1,3,2);
imshow(I6);
title('100到170乘以1.5');
I7=fy_PiecewiseLinear(I,170,220,1/2);
subplot(1,3,3);
imshow(I7);
title('170到220除以1/2');
灰度级分层函数的实现代码:
%该函数实现分段线性
%by方阳
function image_out=fy_PiecewiseLinear(image_in ,low_in,high_in,linear_number)
[m,n]=size(image_in);
for i=1:m
for j=1:n
if image_in(i,j)>low_in
if image_in(i,j)<high_in
image_in(i,j)=image_in(i,j)*linear_number;
end
end
end
end
image_out=image_in;
运行结果:
最后介绍直方图均衡
参考代码:
figure;
I8=imread('fig819.bmp');
h=imhist(I8);
subplot(2,2,1);
imshow(I8);
title('原始图像');
subplot(2,2,2);
imhist(I8);%imhist是实现显示当前图像的直方图分布
ylim('auto');
title('原始图像的直方图');
I9=histeq(I8,256);%histeq是实现直方图均衡
subplot(2,2,3);
imshow(I9);
title('变换后的图像');
subplot(2,2,4);
imhist(I9);
title('变换后的直方图');
ylim('auto');
运行结果:
就写到这吧,SEE YOU!!!