Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Matlab编程实现图像增强与去噪

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:rowfor n=1:colD1(m,n)=sqrt(m^2+n^2);H(m,n)=r+(rh/(1+(D0/D1(m,n))^(2*N)));endendI3=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图1 lena原图像使用如上程序对上图lena图像进行处理,分别得到下图所示的结果:
图2 图像增强——直方图均衡化
图3 图像去噪效果对比图 Matlab与C/C++联合编程之从Matlab调用C/C++代码 http://www.linuxidc.com/Linux/2012-08/68148.htm二分类SVM方法Matlab实现 http://www.linuxidc.com/Linux/2013-05/84050.htmMatlab中的取整函数fix, floor, ceil与round http://www.linuxidc.com/Linux/2013-10/91161.htmMatlab编译cuda的.cu文件 http://www.linuxidc.com/Linux/2014-04/100675.htm本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-06/103669.htm