将给定的图像进行增强处理,分别使用线性变换增强、对数变换增强、指数变换增强以及伪彩色增强处理,分析增强后的视觉效果。首先,将原始图像进行灰度图像处理,以达到增强效果和原始图像对比。然后,分别根据线性变换增强、对数变换增强、指数变换增强和伪彩色增强公式,设置相应参数,由于matlab中没有相应库函数进行使用,因此需要设置线性变换参数等值。最后,将增强后图像与原始图像输出进行对比。
一、主要设计思想
线性变换增强对图像进行均衡化处理,并显示处理后图像及其直方图,与原图像作比较;对数变换常用来扩展低值灰度,压缩高值灰度,这样可以使低值灰度的图像细节,指数变换增强由于Matlab中没有相应库函数进行使用,因此需要设置线性变换参数等值;利用空间域灰度级-彩色变化对图像进行伪彩色增强。
二、实现算法及程序流程图
三、源程序
1、线性变换增强
%线性变换增强
i=imread('D:\pic\HG.bmp');%读原始图像
subplot(221),imshow(i),title('原图像');
subplot(222),imhist(i),title('原图像直方图');
j=histeq(i); %对图像i做直方图均衡化
subplot(223),imshow(j),title('直方图均衡化');
subplot(224),imhist(j),title('直方图均衡化');
2、对数变换增强
%对数变换增强
i=imread('D:\pic\HG.bmp');
j=double(i); ;%图像双浮点转换
figure
subplot(121),imshow(i),title('原图');
j1=(log(j+1))/10; %对数变换表达式
subplot(122),imshow(j1,[]),title('对数变换增强');
3、指数变换增强
%指数变换增强
i=double(imread('D:\pic\linumax.jpg'));
figure,subplot(221),imshow(i,[]);
c = 4; n1 = 0.5;n2=1;n3=5;%设定指数变换参数
i1 = c .* i .^n1;%指数变换表达式
i2 = c .* i .^n2;%指数变换表达式
i3 = c .* i .^n3;%指数变换表达式
subplot(222),imshow(i1,[]),title('r=0.5')
subplot(223),imshow(i2,[]),title('r=1')
subplot(224),imshow(i3,[]),title('r=5')
4、伪彩色增强
%伪彩色增强
i=imread('D:\pic\HG.bmp');%读原始图像
Gray=rgb2gray(i);%对图像灰度化
[m,n]=size(Gray);
J=zeros(m,n);
for i=1:m
for j=1:n
if Gray(i,j)>=225
j(i,j,1)=125;
else if Gray(i,j)<225&&Gray(i,j)>=125
J(i,j,2)=125;
else if Gray(i,j)<125&&Gray(i,j)>=40
J(i,j,1)=125;
else
J(i,j,3)=0;
end
end
end
end
end
subplot(121),imshow(J,[]),title('伪彩色增强');
四、主要技术问题的处理方法
线性变换增强任选一幅灰度图像,显示原图像,绘制其及直方图,然后对图像进行均衡化处理,并显示处理后图像及其直方图,与原图像作比较。
对数变换增强常用来扩展低值灰度,压缩高值灰度,这样可以使低值灰度的图像细节更容易看清楚。
指数变换增强是任选一副灰度图像对其进行指数变换增强,选择不同的r(分别取r=0.5,r= 1,r=5),观察分析其显示结果。
伪彩色增强需要多重循环对不同坐标像素灰度值进行处理。
五、实验结果及分析
直方图均衡化扩展了原图的直方图,使图像的对比度扩大。但是比原图显得更粗糙,整体效果并不是很理想。
实验可得,原图中低灰度值的部分在经过对数变换后灰度值有所增强。高灰度值的部分也同时增强了。
当r<1时,图像变亮;当r=1时,没有改变;当r>1时,图像变暗。
利用空间域灰度级-彩色变化发对图像进行伪彩色增强,效果理想。