数字图像处理之亮度变换
数字图像处理之亮度变换
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!!!