Matlab编程达成图像增强与去噪
发布时间:2021-11-20 14:36:48 所属栏目:PHP教程 来源:互联网
导读:Matlab中为我们提供了大量的函数,以方便我们对设计的算法进行验证,方便我们进行科学研究等等。使用Matlab处理数字图像也是相当方便的,它给我们提供了很多函数,如读取(imread)、显示(imshow)、存储(imwrite)、直方图均衡化(histeq)......,相当丰
Matlab中为我们提供了大量的函数,以方便我们对设计的算法进行验证,方便我们进行科学研究等等。使用Matlab处理数字图像也是相当方便的,它给我们提供了很多函数,如读取(imread)、显示(imshow)、存储(imwrite)、直方图均衡化(histeq)......,相当丰富的函数。 图像增强使用直方图均衡化方法,利用Matlab的histeq函数实现。使用Matlab自带函数加入椒盐噪声,分别使用低通滤波、中值滤波、同态滤波进行去噪。下面给出Matlab代码,涉及到的函数如有不清楚的,可以在Matlab命令窗口输入help 函数名,或者doc 函数名,查看帮助。 使用本程序,请新建一个.m文件,并命名为:imenhden.m,保存,将原始的图片与此m文件都放在Matlab当前工作目录下,然后在命令窗口输入:imenhden( 'lena.png');回车即可,其中lena.png为原始图片名。 function [ ] = imenhden( fineName ) %% 读入图像 I = imread(fineName); figure(1); subplot(2,2,1); imshow(I); title('原图像'); %% 直方图均衡化 m = 16; H = histeq(I,m); subplot(222); imshow(H,[]); title('均衡后的图像'); subplot(223); hist(double(I),m); title('直方图'); subplot(224); hist(double(H),m) title('均衡后的直方图'); %% 噪声与滤波 figure(2) subplot(3,2,1); imshow(I); title('原图像'); % 加入椒盐噪声并显示 II = imnoise(I,'salt & pepper'); subplot(3,2,2); imshow(II); title('加入椒盐噪声后的图像'); % 低通滤波平滑 [B,A] = butter(6,0.2,'low'); J = filter(B,A,double(II)); subplot(3,2,3); imshow(J,[]); title('低通滤波平滑'); % 中值滤波平滑 J = medfilt2(II); subplot(3,2,4); imshow(J,[]); title('中值滤波平滑'); % 同态滤波 [I0,M] = imread(fineName); %I0 = II;M=[]; I1 = log(double(I0)+1); I2 = fft2(I1); N=2;D0=0.05*pi;rh=0.8;r=0.5; [row,col]=size(I2); for m=1:row for n=1:col D1(m,n)=sqrt(m^2+n^2); H(m,n)=r+(rh/(1+(D0/D1(m,n))^(2*N))); end end I3=I2.*single(H); I4=ifft2(I3); I5=exp(I4)-1; subplot(3,2,5); imshow(I0,M); title('原图像'); subplot(3,2,6); imshow(I5,M); title('同态滤波后的图像'); end (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |