将给定的图像进行增强处理,分别使用线性变换增强、对数变换增强、指数变换增强以及伪彩色增强处理,分析增强后的视觉效果。首先,将原始图像进行灰度图像处理,以达到增强效果和原始图像对比。然后,分别根据线性变换增强、对数变换增强、指数变换增强和伪彩色增强公式,设置相应参数,由于matlab中没有相应库函数进行使用,因此需要设置线性变换参数等值。最后,将增强后图像与原始图像输出进行对比。
文章目录
- 一、主要设计思想
- 二、实现算法及程序流程图
- 三、源程序
- 1、线性变换增强
- 2、对数变换增强
- 3、指数变换增强
- 4、伪彩色增强
- 四、主要技术问题的处理方法
- 五、实验结果及分析
一、主要设计思想
线性变换增强对图像进行均衡化处理,并显示处理后图像及其直方图,与原图像作比较;对数变换常用来扩展低值灰度,压缩高值灰度,这样可以使低值灰度的图像细节,指数变换增强由于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); ;%图像双浮点转换figuresubplot(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:mfor j=1:nif Gray(i,j)>=225j(i,j,1)=125; else if Gray(i,j)<225&&Gray(i,j)>=125J(i,j,2)=125; else if Gray(i,j)<125&&Gray(i,j)>=40J(i,j,1)=125; elseJ(i,j,3)=0;end end endendendsubplot(121),imshow(J,[]),title('伪彩色增强');
四、主要技术问题的处理方法
线性变换增强任选一幅灰度图像,显示原图像,绘制其及直方图,然后对图像进行均衡化处理,并显示处理后图像及其直方图,与原图像作比较。
对数变换增强常用来扩展低值灰度,压缩高值灰度,这样可以使低值灰度的图像细节更容易看清楚。
指数变换增强是任选一副灰度图像对其进行指数变换增强,选择不同的r(分别取r=0.5,r= 1,r=5),观察分析其显示结果。
伪彩色增强需要多重循环对不同坐标像素灰度值进行处理。
五、实验结果及分析
直方图均衡化扩展了原图的直方图,使图像的对比度扩大。但是比原图显得更粗糙,整体效果并不是很理想。
实验可得,原图中低灰度值的部分在经过对数变换后灰度值有所增强。高灰度值的部分也同时增强了。
当r1时,图像变暗。
利用空间域灰度级-彩色变化发对图像进行伪彩色增强,效果理想。