将给定的图像进行增强处理,分别使用线性变换增强、对数变换增强、指数变换增强以及伪彩色增强处理,分析增强后的视觉效果。首先,将原始图像进行灰度图像处理,以达到增强效果和原始图像对比。然后,分别根据线性变换增强、对数变换增强、指数变换增强和伪彩色增强公式,设置相应参数,由于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),观察分析其显示结果。
伪彩色增强需要多重循环对不同坐标像素灰度值进行处理。
五、实验结果及分析
直方图均衡化扩展了原图的直方图,使图像的对比度扩大。但是比原图显得更粗糙,整体效果并不是很理想。
实验可得,原图中低灰度值的部分在经过对数变换后灰度值有所增强。高灰度值的部分也同时增强了。
当r1时,图像变暗。
利用空间域灰度级-彩色变化发对图像进行伪彩色增强,效果理想。
来源:https://blog.csdn.net/Prototype___/article/details/125327277
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |