图像增强及其matlab实现实例
使用Matlab进行数字图像增强的方法

使用Matlab进行数字图像增强的方法引言:数字图像增强是一种改善图像质量和提升可视化效果的方法。
在实际应用中,我们常常需要对图像进行增强,以便更好地分析和理解图像内容。
使用Matlab作为工具,可以方便地对图像进行各种增强操作。
本文将介绍几种常用的数字图像增强方法,并结合具体示例演示其在Matlab中的实现。
一、直方图均衡化直方图均衡化是一种通过调整图像像素值的分布来增强对比度的方法。
它可以将像素值均匀分布在整个灰度级范围内,从而增强图像的细节和清晰度。
在Matlab中,我们可以使用函数histeq来实现直方图均衡化。
实例:假设我们有一张灰度图像lena.jpg,我们想对它进行直方图均衡化。
首先,我们可以使用imread函数读取图像,并将其转换为灰度图像。
```matlabimg = imread('lena.jpg');gray_img = rgb2gray(img);```然后,利用histeq函数对图像进行直方图均衡化。
```matlabenhanced_img = histeq(gray_img);``````matlabimshow(enhanced_img);```运行以上代码,我们可以得到一张直方图均衡化后的图像。
二、滤波增强滤波增强是一种通过应用滤波器来减少噪声和增强图像细节的方法。
在Matlab 中,我们可以使用各种滤波器函数来实现滤波增强,如均值滤波、中值滤波和高斯滤波等。
实例:假设我们有一张包含噪声的图像cameraman.jpg,我们想对其进行滤波增强。
首先,我们可以使用imnoise函数在图像中添加高斯噪声。
```matlabimg = imread('cameraman.jpg');noisy_img = imnoise(img, 'gaussian', 0, 0.01);```然后,我们可以使用imfilter函数对图像进行滤波增强。
MATLAB图像增强总结程序

MATLAB图像增强程序举例1.灰度变换增强程序:% GRAY TRANSFORMclc;I=imread('pout.tif');imshow(I);J=imadjust(I,[0.3 0.7],[0 1],1); %transforms the walues in the %intensity image I to values in J by linealy mapping %values between 0.3 and 0.7 to values between 0 and 1. figure;imshow(J);J=imadjust(I,[0.3 0.7],[0 1],0.5); % if GAMMA is less than 1,the mapping si weighted to ward higher (brighter)%output values.figure;imshow(J);J=imadjust(I,[0.3 0.7],[0 1],1.5); % if GAMMA is greater than 1,the mapping si weighted toward lower (darker)%output values.figure;imshow(J)J=imadjust(I,[0.3 0.7],[0 1],1); % If TOP<BOTTOM,the output image is reversed,as in a p hotographic negative.figure;imshow(J);2.直方图灰度变换%直方图灰度变换[X,map]=imread('forest.tif');I=ind2gray(X,map);%把索引图像转换为灰度图像imshow(I);title('原图像');improfile%用鼠标选择一条对角线,显示线段的灰度值figure;subplot(121)plot(0:0.01:1,sqrt(0:0.01:1))axis squaretitle('平方根灰度变换函数')subplot(122)maxnum=double(max(max(I)));%取得二维数组最大值J=sqrt(double(I)/maxnum);%把数据类型转换成double,然后进行平方根变换%sqrt函数不支持uint8类型J=uint8(J*maxnum);%把数据类型转换成uint8类型imshow(J)title('平方根变换后的图像')3.直方图均衡化程序举例% HISTGRAM EAQUALIZATIONclc;% Clear command windowI=imread('tire.tif');% reads the image in tire.tif into Iimshow(I);% displays the intensity image I with 256 gray levels figure;%creates a new figure windowimhist(I);% displays a histogram for the intensity image IJ=histeq(I,64);% transforms the intensity image I,returning J an intensity figure;%image with 64 discrete levelsimshow(J);figure;imhist(J);J=histeq(I,32);%transforms the intensity image ,returning in % J an intensity figure;%image with 32 discrete levelsimshow(J);figure;imhist(J);4.直方图规定化程序举例% HISTGRAM REGULIZATIONclc;%Clear command windowI=imread('tire.tif');%reads the image in tire.tif into IJ=histeq(I,32);%transforms the intensity image I,returning in%J an intensity image with 32 discrete levels[counts,x]=imhist(J);%displays a histogram for the intensity image IQ=imread('pout.tif');%reads the image in tire.tif into Ifigure;imshow(Q);figure;imhist(Q);M=histeq(Q,counts);%transforms the intensity image Q so that the%histogram of the output image M approximately matches counts figure;imshow(M);figure;imhist(M);空域滤波增强部分程序1.线性平滑滤波I=imread('eight.tif');J=imnoise(I,'salt & pepper',0.02);subplot(221),imshow(I)title('原图像')subplot(222),imshow(J)title('添加椒盐噪声图像')K1=filter2(fspecial('average',3),J)/255;%应用3*3邻域窗口法subplot(223),imshow(K1)title('3x3窗的邻域平均滤波图像')K2=filter2(fspecial('average',7),J)/255;%应用7*7邻域窗口法subplot(224),imshow(K2)title('7x7窗的邻域平均滤波图像')2.中值滤波器MATLAB中的二维中值滤波函数medfit2来进行图像中椒盐躁声的去除%IMAGE NOISE REDUCTION WITH MEDIAN FILTERclc;hood=3;%滤波窗口[I,map]=imread('eight.tif');imshow(I,map);noisy=imnoise(I,'salt & pepper',0.05);figure;imshow(noisy,map);filtered1=medfilt2(noisy,[hood hood]);figure;imshow(filtered1,map);hood=5;filtered2=medfilt2(noisy,[hood hood]);figure;imshow(filtered2,map);hood=7;filtered3=medfilt2(noisy,[hood hood]);figure;imshow(filtered3,map);3. 4邻域8邻域平均滤波算法% IMAGE NOISE REDUCTION WITH MEAN ALGORITHM clc;[I,map]=imread('eight.tif');noisy=imnoise(I,'salt & pepper',0.05);myfilt1=[0 1 0;1 1 1;0 1 0];%4邻域平均滤波模版myfilt1=myfilt1/9;%对模版归一化filtered1=filter2(myfilt1,noisy);imshow(filtered1,map);myfilt2=[1 1 1;1 1 1;1 1 1];myfilt2=myfilt2/9;filtered2=filter2(myfilt2,noisy);figure;imshow(filtered2,map);频域增强程序举例1.低通滤波器% LOWPASS FILTERclc;[I,map]=imread('eight.tif');noisy=imnoise(I,'gaussian',0.05);imshow(noisy,map);myfilt1=[1 1 1;1 1 1;1 1 1];myfilt1=myfilt1/9;filtered1=filter2(myfilt1,noisy);figure;imshow(filtered1,map);myfilt2=[1 1 1;1 2 1;1 1 1];myfilt2=myfilt2/10;filtered2=filter2(myfilt2,noisy); figure;imshow(filtered2,map);myfilt3=[1 2 1;2 4 2; 1 2 1]; myfilt3=filter2(myfilt3,noisy); figure;imshow(filtered3,map);2.布特沃斯低通滤波器图像实例I=imread('saturn.png');J=imnoise(I,'salt & pepper',0.02); subplot(121),imshow(J)title('含噪声的原图像')J=double(J);f=fft2(J);g=fftshift(f);[M,N]=size(f);n=3;d0=20;n1=floor(M/2);n2=floor(N/2);for i=1:M;for j=1:N;d=sqrt((i-n1)^2+(j-n2)^2);h=1/(1+0.414*(d/d0)^(2*n));g(i,j)=h*g(i,j);endendg=ifftshift(g);g=uint8(real(ifft2(g)));subplot(122),imshow(g)title('三阶Butterworth滤波图像')色彩增强程序举例1.真彩色增强实例:%真彩色图像的分解clc;RGB=imread('peppers.png');subplot(221),imshow(RGB)title('原始真彩色图像')subplot(222),imshow(RGB(:,:,1))title('真彩色图像的红色分量')subplot(223),imshow(RGB(:,:,2))title('真彩色图像的绿色分量')subplot(224),imshow(RGB(:,:,3))2.伪彩色增强举例:I=imread('cameraman.tif');imshow(I);X=grayslice(I,16);%thresholds the intensity image I using%threshold values 1/16,2/16,…..,15/16,returning an indexed %image in X figure;imshow(X,hot(16));3.假彩色增强处理程序举例[RGB]=imread('ghost.bmp');imshow(RGB);RGBnew(:,:,1)=RGB(:,:,3);RGBnew(:,:,2)=RGB(:,:,1);RGBnew(:,:,3)=RGB(:,:,2);figure;subplot(121);imshow(RGB);subplot(122);imshow(RGBnew);主要转载自:/s/blog_488c87020100cice.htm l。
基于MATLAB的图像增强处理

灰度变换增强:像素的选择:>> rgb=imread('peppers.png'); >> c=[12 146 410];>> r=[104 156 129];>> pixels=impixel(rgb,c,r);62 34 63166 54 6059 28 47绘制像素灰度分布曲线:>> i=fitsread('solarspectra.fts'); >> imshow(i,[]);>> improfile>> i=imread('liftingbody.png'); >> subplot(1,2,1);imshow(i);>> x=[19 427 416 77];>> y=[96 462 37 33];>> subplot(1,2,2);improfile(i,x,y); >> grid on;绘制图像的等值线:>> i=imread('circuit.tif'); >> subplot(1,2,1);imshow(i); >> subplot(1,2,2);imcontour(i,3);直方图:>> i=imread('pout.tif');>> subplot(1,2,1);imshow(i); >> subplot(1,2,2);imhist(i);图像像素的统计特性:>> i=imread('pout.tif'); >> b=mean2(i)b =110.3037>> c=std2(i)c =23.1811>> j=medfilt2(i);>> r=corr2(i,j)r =0.9959图像的区域属性:>> bw=imread('text.png'); >> l=bwlabel(bw);>> stats=regionprops(l,'all');>> stats(23)ans =Area: 48Centroid: [121.3958 15.8750]BoundingBox: [118.5000 8.5000 6 14]SubarrayIdx: {[9 10 11 12 13 14 15 16 17 18 19 20 21 22] [119 120 121 122 123 124]}MajorAxisLength: 15.5413MinorAxisLength: 5.1684Eccentricity: 0.9431Orientation: -87.3848ConvexHull: [10x2 double]ConvexImage: [14x6 logical]ConvexArea: 67Image: [14x6 logical]FilledImage: [14x6 logical]FilledArea: 48EulerNumber: 1Extrema: [8x2 double]EquivDiameter: 7.8176Solidity: 0.7164Extent: 0.5714PixelIdxList: [48x1 double]PixelList: [48x2 double]灰度变换:线性变换:>> x=imread('forest.tif');>> f0=0;g0=0;>> f1=10;g1=10;>> f2=180;g2=1800;>> f3=255;g3=255;>> figure;plot([f0,f1,f2,f3],[g0,g1,g2,g3]);>> axis tight;>> r1=(g1-g0)/(f1-f0);>> b1=g0-r1*f0;>> r2=(g2-g1)/(f2-f1);>> b2=g1-r2*f1;>> r3=(g3-g2)/(f3-f2);>> b3=g2-r3*f2;>> [m,n]=size(x);>> x1=double(x);>> for i=1:mfor j=1:nf=x1(i,j);g(i,j)=0;if(f>=f1)&(f<=f2)g(i,j)=r1*f+b2;else if(f>=f2)&(f<=f3)g(i,j)=r3*f+b3;end;end;end;end;>> figure;imshow(mat2gray(g))分段线性变换:>> x=imread('forest.tif');>> f0=0;g0=0;>> f1=50;g1=50;>> f2=220;g2=250;>> f3=255;g3=255;>> subplot(1,2,1);plot([f0,f1,f2,f3],[g0,g1,g2,g3]); >> axis tight;>> r1=(g1-g0)/(f1-f0);>> b1=g0-r1*f0;>> r2=(g2-g1)/(f2-f1);>> b2=g1-r2*f1;>> r3=(g3-g2)/(f3-f2);>> b3=g2-r3*f2;>> [m,n]=size(x);>> x1=double(x);>> for i=1:mfor j=1:nf=x1(i,j);g(i,j)=0;if(f>=f1)&(f<=f2)g(i,j)=r1*f+b2;else if(f>=f2)&(f<=f3)g(i,j)=r3*f+b3;end;end;end;end;>> subplot(1,2,2);imshow(mat2gray(g));非线性灰度变换:>> x=imread('forest.tif');>> c=255/log(256);>> x=0:255;>> y=c*log(1+x);>> subplot(1,2,1);plot(x,y);axis tight; >> [m,n]=size(x);>> x1=double(x);>> for i=1:mfor j=1:ng(i,j)=0;g(i,j)=c*log(x1(i,j)+1);end;end;>> subplot(1,2,2);imshow(mat2gray(g));对灰度图像进行灰度值调整:>> p=imread('pout.tif');>> pj=imadjust(p);>> ph=histeq(p);>> pa=adapthisteq(p);>> subplot(1,2,1);imshow(p);>> subplot(1,2,2);imshow(pj);对索引图像进行灰度值调整:>> rgb1=imread('football.jpg');>> rgb2=imadjust(rgb1,[.2 .3 0;.6 .7 1],[]);>> subplot(1,2,1);imshow(rgb1);>> subplot(1,2,2);imshow(rgb2);增加图像的亮度:>> rgb1=imread('football.jpg');>> rgb2=imadjust(rgb1,[.2 .3 0;.6 .7 1],[]);>> subplot(1,2,1);imshow(rgb1);>> subplot(1,2,2);imshow(rgb2);>> clear;>> figure('Renderer','zbuffer');axesm bries;>> text(1.2,-1.8,'Briesemeister projection');>> framem('FlineWidth',1);>> load topo;>> geoshow(topo,topolegend,'DisplayType','texturemap'); >> demcmap(topo);>> set(gcf,'color','w');>> brighten(.5);直方图均衡化:>> i=imread('tire.tif');>> j=histeq(i);>> subplot(2,2,1);imshow(i); >> subplot(2,2,2);imshow(j); >> subplot(2,2,3);imhist(i,64); >> subplot(2,2,4);imhist(j,64);直方图的规定化:>> i=imread('forest.tif');>> h=0:255;>> subplot(2,2,1);imshow(i); >> j=histeq(i,h);>> subplot(2,2,2);imshow(j); >> subplot(2,2,3);imhist(i,64); >> subplot(2,2,4);imhist(j,64);空域滤波增强:平滑滤波器:>> i=imread('cameraman.tif'); >> subplot(2,2,1);imshow(i); >> h=fspecial('motion',20,45); >> mb=imfilter(i,h,'replicate'); >> subplot(2,2,2);imshow(mb); >> h=fspecial('disk',10);>> bl=imfilter(i,h,'replicate'); >> subplot(2,2,3);imshow(bl); >> h=fspecial('unsharp');>> sh=imfilter(i,h,'replicate'); >> subplot(2,2,4);imshow(sh);用各种尺寸的模板平滑图像:>> i=imread('eight.tif');>> j=imnoise(i,'salt & pepper',0.025); >> subplot(2,3,1);imshow(i);>> subplot(2,3,2);imshow(j);>> k1=filter2(fspecial('average',3),j); >> k2=filter2(fspecial('average',5),j); >> k3=filter2(fspecial('average',7),j); >> k4=filter2(fspecial('average',9),j); >> subplot(2,3,3);imshow(uint8(k1)); >> subplot(2,3,4);imshow(uint8(k2)); >> subplot(2,3,5);imshow(uint8(k3)); >> subplot(2,3,6);imshow(uint8(k4));中值滤波器:>> i=imread('cameraman.tif'); >> j1=imnoise(i,'salt & pepper',0.01); >> k1=medfilt2(j1);>> j2=imnoise(i,'gaussian',0.01); >> k2=medfilt2(j2);>> subplot(2,3,1);imshow(i);>> subplot(2,3,2);imshow(j1);>> subplot(2,3,3);imshow(k1);>> subplot(2,3,4);imshow(j2);>> subplot(2,3,5);imshow(k2);>> i=imread('cameraman.tif');>> j1=imnoise(i,'salt & pepper',0.01); >> k1=medfilt2(j1,[6,6]);>> j2=imnoise(i,'gaussian',0.01); >> k2=medfilt2(j2,[6,6]);>> subplot(2,3,1);imshow(i);>> subplot(2,3,2);imshow(j1);>> subplot(2,3,3);imshow(k1,[]); >> subplot(2,3,4);imshow(i);>> subplot(2,3,5);imshow(j2);>> subplot(2,3,6);imshow(k2,[]);带噪声的图像的最小值与最大值滤波图像:>> a=imread('eight.tif');>> b=imnoise(a,'salt & pepper',0.025);>> do=[0 0 1 0 0;0 1 0 1 0;1 0 1 0 1;0 1 0 1 0;0 0 1 0 0]; >> c=ordfilt2(b,1,do);>> d=ordfilt2(b,9,do);>> subplot(2,2,1);imshow(a);>> subplot(2,2,2);imshow(b);>> subplot(2,2,3);imshow(c);>> subplot(2,2,4);imshow(d);自适应滤波器:>> rgb=imread('saturn.png'); >> i=rgb2gray(rgb);>> j=imnoise(i,'gaussian',0,0.025); >> k=wiener2(j,[5 5]);>> subplot(1,3,1);imshow(i); >> subplot(1,3,2);imshow(j); >> subplot(1,3,3);imshow(k);锐化滤波器:线性锐化滤波器:>> i=imread('rice.png');>> h=fspecial('laplacian');>> i2=filter2(h,i);>> subplot(1,2,1);imshow(i); >> subplot(1,2,2);imshow(i2);非线性锐化滤波器:>> [i,map]=imread('eight.tif'); >> subplot(2,2,1);imshow(i,map); >> i=double(i);>> [ix,iy]=gradient(i);>> gm=sqrt(ix.*ix+iy.*iy);>> out1=gm;>> subplot(2,2,2);imshow(out1,map); >> out2=i;>> j=find(gm>=15);>> out2(j)=gm(j);>> subplot(2,2,3);imshow(out2,map); >> out3=i;>> j=find(gm>=20);>> out3(j)=255;>> q=find(gm<20);>> out3(q)=0;>> subplot(2,2,4);imshow(out3,map);>> i=imread('eight.tif');>> subplot(2,2,1);imshow(i); >> h1=fspecial('sobel');>> i1=filter2(h1,i);>> h2=fspecial('prewitt'); >> i2=filter2(h2,i);>> h3=fspecial('log');>> i3=filter2(h3,i);>> subplot(2,2,2);imshow(i1); >> subplot(2,2,3);imshow(i2); >> subplot(2,2,4);imshow(i3);频域滤波增强:低通滤波:>> i1=imread('eight.tif');>> i2=imnoise(i1,'salt & pepper'); >> f=double(i2);>> g=fft2(f);>> g=fftshift(g);>> [N1,N2]=size(g);>> n=2;>> d0=50;>> n1=fix(N1/2);>> n2=fix(N2/2);>> for i=1:N1for j=2:N2d=sqrt((i-n1)^2+(j-n2)^2);h=1/(1+0.414*(d/d0)^(2*n));s1(i,j)=h*g(i,j);if(g(i,j)>50)s2(i,j)=0;elses2(i,j)=g(i,j);end;end;end;>> s1=ifftshift(s1);>> s2=ifftshift(s2);>> x2=ifft2(s1);>> x3=uint8(real(x2));>> x4=ifft2(s2);>> x5=uint8(real(x4));>> subplot(2,2,1);imshow(i1); >> subplot(2,2,2);imshow(i2); >> subplot(2,2,3);imshow(x3); >> subplot(2,2,4);imshow(x5);高通滤波器:>> j=imread('rice.png');>> subplot(2,3,1);imshow(uint8(j)); >> j=double(j);>> f=fft2(j);>> g=fftshift(f);>> [M,N]=size(f);>> n1=floor(M/2);>> n2=floor(N/2);>> d0=20;>> for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);if d>=d0h1=1;h2=1+0.5;elseh1=0;h2=0.5;end;g1(i,j)=h1*g(i,j);g2(i,j)=h2*g(i,j);end;end;>> g1=ifftshift(g1);>> g1=uint8(real(ifft2(g1)));>> g2=ifftshift(g2);>> g2=uint8(real(ifft2(g2)));>> subplot(2,3,2);imshow(g1);>> subplot(2,3,3);imshow(g2);>> n=2;>> d0=20;>> for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);if d==0h1=0;h2=.5;elseh1=1/(1+(d0/d)^(2*n));h2=1/(1+(d0/d)^(2*n))+0.5;end;gg1(i,j)=h1*g(i,j);gg2(i,j)=h2*g(i,j);end;end;>> gg1=ifftshift(gg1);>> gg1=uint8(real(ifft2(gg1)));>> gg2=ifftshift(gg2);>> gg2=uint8(real(ifft2(gg2)));>> subplot(2,3,4);imshow(gg1);>> subplot(2,3,5);imshow(gg2);同态滤波器:>> i=imread('eight.tif');>> j=double(i);>> f=fft2(j);>> g=fftshift(f);>> [M,N]=size(f);>> d0=10;>> r1=0.5;>> rh=2;>> c=4;>> n1=floor(M/2);>> n2=floor(N/2);>> for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);h=(rh-r1)*(1-exp(-c*(d.^2/d0.^2)))+r1;end;end;>> g=ifftshift(g);>> g=uint8(real(ifft2(g)));>> subplot(1,2,1);imshow(i);>> subplot(1,2,2);imshow(g);彩色增强:利用密度分割法进行伪彩色增强:>> a=imread('eight.tif');>> subplot(1,2,1);imshow(a);>> c=zeros(size(a));>> pos=find(a<20);>> c(pos)=a(pos);>> b(:,:,3)=c;>> c=zeros(size(a));>> pos=find((a>20)&(a<40));>> c(pos)=a(pos);>> b(:,:,2)=c;>> c=zeros(size(a));>> pos=find(a>=40);>> c(pos)=a(pos);>> b(:,:,1)=c;>> b=uint8(b);>> subplot(1,2,2);imshow(b);真彩色增强:>> rgb=imread('peppers.png');>> subplot(2,2,1);imshow(rgb); >> subplot(2,2,2);imshow(rgb(:,:,1)); >> subplot(2,2,3);imshow(rgb(:,:,2)); >> subplot(2,2,4);imshow(rgb(:,:,3));。
Matlab中的图像增强技术与应用

Matlab中的图像增强技术与应用图像增强技术是数字图像处理领域中的重要方向之一。
通过增强图像的亮度、对比度、锐度以及去除噪声、伪彩色等方法,可以使图像更加清晰、具有更好的可视化效果。
Matlab作为一种常用的图像处理工具,提供了丰富的图像增强函数和工具箱,可以帮助我们实现各种图像增强技术的应用。
本文将介绍一些常用的图像增强技术,并结合Matlab来演示它们的应用。
一、灰度变换与直方图均衡化灰度变换是最基础的图像增强技术之一,它通过调整图像中像素的灰度值来改变图像的亮度和对比度。
在Matlab中,我们可以使用imadjust函数来实现灰度变换。
imadjust函数可以根据输入的灰度范围,将图像像素的灰度值进行线性映射,从而改变图像的亮度。
直方图均衡化是一种改善图像对比度的方法,它通过对图像中像素的灰度分布进行调整,使得图像中的灰度级尽可能均匀分布。
在Matlab中,我们可以使用histeq函数来实现直方图均衡化。
该函数会自动计算图像的累积直方图,并将其映射为均匀分布的灰度级。
二、滤波器与空域增强滤波器是一种常见的图像增强工具,它可以通过删去或者增强图像中的某些频率成分,从而实现图像的去噪和锐化。
在Matlab中,我们可以使用imfilter函数来实现各种滤波操作。
常见的滤波器包括均值滤波器、中值滤波器以及高斯滤波器等。
均值滤波器可以平滑图像,减少图像中的噪声;中值滤波器可以有效抑制椒盐噪声等随机噪声;高斯滤波器可以平滑图像并增强图像的边缘。
除了滤波器,空域增强也是一种常用的图像增强技术。
通过对图像进行锐化、增强边缘等操作,可以使图像更加清晰和鲜明。
在Matlab中,我们可以使用imsharpen函数来实现图像的锐化操作。
该函数可以增强图像的高频信息,使得图像的细节更加突出。
三、变换域增强变换域增强是一种通过将图像从空域转换到频域,进行增强操作的方法。
其中最常用的变换是傅里叶变换和小波变换。
在Matlab中,我们可以使用fft2函数和dwt2函数来实现傅里叶变换和小波变换。
图像增强及其matlab实现实例

图像增强及其matlab实现实例2007年12月10日星期一 09:35最近关于自己课题方面做了一些基础知识的总结,陆续将放到我的空间中来。
请网友多多提宝贵意见。
图像增强技术主要包括:直方图修改处理,图像平滑处理,图像尖锐化处理,彩色图像处理。
从纯技术上讲主要有两类:1)频域处理法2)空域处理法;频域处理法主要是卷积定理,采用修改图像傅立叶变换的方法实现对图像的增强处理技术;空域处理法:是直接对图像中的像素进行处理,基本上是以灰度映射变换为基础的。
2.1空域滤波增强空域滤波增强:使用空域模板进行的图像处理被称为空域滤波,模板本身被称为空域滤波器。
空域滤波器包括:线性滤波器和非线性滤波器空域滤波处理效果来分类,可以分为平滑滤波器,和锐化滤波器,平滑的目的在于消除混杂在图像中的干扰因素,改善图像质量,强化图像表现特征。
锐化的目的在于增强图像边缘,以及对图像进行识别和处理。
2.1.1 平滑滤波器:用于模糊处理和减小噪声,线性平滑滤波器平滑线性空间滤波器的输出(响应)是包含在滤波掩模邻域内像素的简单平均值。
因此这些滤波器也被称为均值滤波器。
平滑滤波器的概念很简单:它是用滤波掩模确定的领域内像素的平均值去代替图像每个像素点的值。
这种处理减少了图像灰度的尖锐化。
注:每个掩模前边的乘数等于它的系数值的和,以计算平均值。
(详见数字图像处理P93)我们经常用这些极端类型的模糊处理来去除图像中的一些小物体。
例子:在matlab中利用线性平滑滤波器处理一副图像(详见matlab7.0图像处理)I=imread('eight.tif');J=imnoise(I,'salt & pepper',0.02);>> %添加椒盐噪声>> subplot(221)>> imshow(I)>> title('原图像')>> subplot(222)>> imshow(J)>> title('添加椒盐噪声图像')K1=filter2(fspecial('average',3),J)/255;>> %应用3*3邻域窗口法>> subplot(223),imshow(K1)>> K2=filter2(fspecial('average',7),J)/255;>> %应用7*7邻域窗口法>> subplot(224),imshow(K2)领域平均法有力的抑制了噪声,同时也由于平均而引起了模糊(加宽)现象,模糊程度与邻域半径成正比。
图像增强与MATLAB实现

……………………………………………………………最新资料推荐…………………………………………………《数字图像处理》课程设计课设题目:图像增强与MATLAB实现学校学院:华东交通大学理学院学生班级:13级信息计算(2)班学生姓名:魏超学生学号:20130810010216指导老师:范自柱图像增强与MATLAB实现摘要数字图像处理是指将图像信号转换成数字格式并利用计算机对其进行处理的过程。
图像增强是数字图像处理的过程中经常采用的一种方法,它对提高图像质量起着重要的作用。
本文先对图像增强的原理进行概述,然后对图像增强的方法分类并给出直方图增强、对比度增强、平滑和锐化等几种常用的增强方法的理论基础,通过Matlab实验得出的实际处理效果来对比各种算法的优缺点,讨论不同的增强算法的技术要点,并对其图像增强方法进行性能评价。
关键字:图像;图像增强;算法目录一、MATLAB的简介01.1MATLAB主要功能0二、MATLAB的主要功能02.1数字增强技术概述02.2数字图像的表示 1三、直方图的均衡化13.1图像的灰度13.2灰度直方图23.3直方图均衡化3四、图像二值化44.1图像二值化4五、对比度增强65.1对比度增强65.2灰度调整75.3对数变换8六、滤波96.1平滑滤波96.2线性平滑滤波程序:10 6.3非线性滤波11七、锐化17八、参考文献19九、自我评价20一、Matlab的简介1.1MATLAB主要功能MATLAB是建立在向量、数组和矩阵基础上的一种分析和仿真工具软件包,包含各种能够进行常规运算的“工具箱”,如常用的矩阵代数运算、数组运算、方程求根、优化计算及函数求导积分符号运算等;同时还提供了编程计算的编程特性,通过编程可以解决一些复杂的工程问题;也可绘制二维、三维图形,输出结果可视化。
目前,已成为工程领域中较常用的软件工具包之一。
二、MATLAB的主要功能2.1数字增强技术概述图像增强是按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些信息使得图像更加实用。
实验二 图像增强 matlab程序和结果分析

实验二图像增强李影通信092 092302一实验目的1.掌握图像灰度变换的基本原理。
2.掌握图像灰度级修正方法,即直方图均衡化法。
3.图像平滑的主要目的是减少噪声。
噪声有很多种类,不同的噪声有不同的抑制措施。
要求掌握常用的图像平滑的空间域方法和频率域方法。
4.锐化处理技术的主要目的用于加强图像的目标边界和图像细节,要求掌握常用的图像锐化的空间域方法和频率域方法。
二实验原理三 实验内容(一)图像灰度变换1.灰度线性变换—图像反转%图像反转线性变换I=imread('sailboat.bmp') %读原始图像%将图像矩阵转化为double 类型J=double(I);J=-J+(256-1); %图像反转线性变化%double 数据类型转化为unit8类型H=uint8(J);subplot(1,2,1),imshow(I);%显示灰度原始图像subplot(1,2,2),imshow(H);%显示灰度反转后图像2.灰度非线性变—对数变换%灰度非线性变换:对数变换I=imread('saturn.bmp'); %读原始图像J=double(I); %将图像矩阵转化为double 类型J=40*(log(J+1));%图像进行对数变换H=uint8(J);%double 数据类型转化为unit8类型subplot(2,1,1),imshow(I); %显示对数变换前的图像subplot(2,1,2),imshow(H); %显示对数变换前的图像3.灰度图像与对应直方图的显示%灰度图像与对应直方图的显示clear;close all;I=imread('elain.bmp'); %读原始图像figure,imshow(I,256); %显示灰度图像xlabel('f'),ylabel('g');figure,imhist(I,64); %显示直方图图像fg 0501001502002504.直方图均衡化%直方图均衡化前后的图像灰度分布I=imread('peppers.bmp') %读入原图像到I 变量J=histeq(I); %对图像I 直方图均衡化subplot(2,2,1),imshow(I); %显示原图像subplot(2,2,2),imshow(J); %显示处理后的图像subplot(2,2,3),imhist(I,64);%显示原图像的直方图灰度分布(二)图像平滑1.空间域(1)邻域平均法采用不同模板%5*5邻域平均图像平滑I=imread('elain.bmp'); %读原始图像J=imnoise(I,'salt & pepper',0.02);%加入均值为0,方差为0.02的噪声J1=filter2(fspecial('average',3),I)/255;%用3*3模板均值滤波J2=filter2(fspecial('average',5),I)/255;%用5*5模板均值滤波J3=filter2(fspecial('average',7),I)/255;%用7*7模板均值滤波imshow(I); %显示原图像figure,imshow(J);%显示加入噪声的图像figure,imshow(J1);%显示用3*3模板均值滤波后图像figure,imshow(J2);%显示用5*5模板均值滤波后图像figure,imshow(J3);%显示用7*7模板均值滤波后图像0100200001002000(2)在不同噪声下用中值滤波法%中值滤波处理I=imread('elain.bmp'); %读原始图像%加均值为0,方差为0.02的椒盐噪声J1=imnoise(I,'salt & pepper',0.02);%加均值为0,方差为0.02的高斯噪声J2=imnoise(I,'gaussian',0.02);%显示有椒盐噪声图像subplot(2,2,1),imshow(J1);;%显示有高斯噪声图像subplot(2,2,2),imshow(J2)%对有椒盐噪声图像进行5*5方形窗口中值滤波I1=medfilt2(J1,[5 5]);%对有高斯噪声图像进行5*5方形窗口中值滤波I2=medfilt2(J2,[5 5]);%显示有椒盐噪声图像的滤波结果subplot(2,2,3),imshow(I1);%显示有高斯噪声图像的滤波结果subplot(2,2,4),imshow(I2);(3)均值滤波法与中值滤波法对比%分别用均值滤波和中值滤波对图像平滑I=imread('elain.bmp');I1=imnoise(I,'salt & pepper',0.06);%加入椒盐噪声I2=double(I1)/255;%邻域运算h1=[1/9 1/9 1/9;1/9 1/9 1/9;1/9 1/9 1/9];%进行二维卷积操作实现均值滤波J1=conv2(I2,h1,'same');%进行二维3*3中值滤波J2=medfilt2(I2,[3 3]);subplot(2,2,1),imshow(I);subplot(2,2,2),imshow(I1);subplot(2,2,3),imshow(J1);subplot(2,2,4),imshow(J2);2.频率域%各种频域低通滤波器的MATLAB实现clc;[I,map]=imread('elain.bmp');%从图形文件中读取图像noisy=imnoise(I,'gaussian',0.01);%对原图象添加高斯噪声imshow(noisy,map);%显示加入高斯噪声后的图像[M,N]=size(I);F=fft2(noisy);%进行二维快速傅里叶变换fftshift(F);%把快速傅里叶变换的DC组件移到光谱中心Dcut=100;D0=150;D1=250;for u=1:Mfor v=1:ND(u,v)=sqrt(u^2+v^2);%巴特沃斯低通滤波器传递函数BUTTERH(u,v)=1/(1+(sqrt(2)-1)*(D(u,v)/Dcut)^2);%指数型低通滤波器传递函数EXPOTH(u,v)=exp(log(1/sqrt(2))*(D(u,v)/Dcut)^2);if D(u,v)<D0 %梯度低通滤波器传递函数TRAPEH(u,v)=1;elseif D(u,v)<=D1TRAPEH(u,v)=(D(u,v)-D1)/(D0-D1);elseTRAPEH(u,v)=0;endendendBUTTERG=BUTTERH.*F;BUTTERfiltered=ifft2(BUTTERG);EXPOTG=EXPOTH.*F;EXPOTGfiltered=ifft2(EXPOTG);TRAPEG=TRAPEH.*F;TRAPEfiltered=ifft2(TRAPEG);subplot(2,2,1),imshow(noisy) %显示加入高斯噪声后的图像subplot(2,2,2),imshow(BUTTERfiltered,map)%显示巴特沃斯低通滤波后的图像subplot(2,2,3),imshow(EXPOTGfiltered,map)%显示指数型低通滤波后的图像subplot(2,2,4),imshow(TRAPEfiltered,map)%显示梯形低通滤波后的图像(三)图象锐化1.空间域(1)高通滤波法%MATLAB空域高通滤波法程序I=imread('elain.bmp');J=im2double(I); %转换图像矩阵为双精度subplot(2,2,1),imshow(J,[]) %显示原图像h1=[0 -1 0, -1 5 -1,0 -1 0];h2=[-1 -1 -1, -1 9 -1,-1 -1 -1];h3=[1 -2 1, -2 5 -2, 1 -2 1];A=conv2(J,h1,'same'); %进行二维卷积操作subplot(2,2,2),imshow(A,[])B=conv2(J,h2,'same');subplot(2,2,3),imshow(B,[])C=conv2(J,h3,'same');subplot(2,2,4),imshow(C,[])(2)梯度法图象锐化[I,map]=imread('Boat.bmp');%读入原图像Subplot(2,3,1),imshow(I,map);%显示原始图像I=double(I);[IX,IY]=gradient(I);GM=sqrt(IX.*IX+IY.*IY);%计算梯度的幅度OUT1=GM;%显示第1种梯度的图像锐化 Subplot(2,3,2),imshow(OUT1,map);OUT2=I; J=find(GM>=10);%阈值T=10 OUT2(J)=GM(J); %显示第2种梯度的图像锐化 Subplot(2,3,3),imshow(OUT2,map);OUT3=I; J=find(GM>=10); OUT3(J)=255; %显示第3种梯度的图像锐化Subplot(2,3,4),imshow(OUT3,map);OUT4=I;J=find(GM<=10);OUT4(J)=255;%显示第4种梯度的图像锐化Subplot(2,3,5),imshow(OUT4,map);OUT5=I;J=find(GM>=10);OUT5(J)=255;Q=find(GM<10);OUTS(Q)=0;%显示第5种梯度的图像锐化Subplot(2,3,6),imshow(OUT5,map);(3)用Sobel 算子对图像滤波%利用Sobel 算子对图像滤波I=imread('elain.bmp');%读入图像文件H=fspecial('sobel');%选择Sobel 算子subplot(1,2,1),imshow(I)%显示原图像J=filter2(H,I);%卷积运算subplot(1,2,2),imshow(J)%显示Sobel 算子对图像锐化的结果(4)利用拉普拉斯算子对模糊图像进行增强%用拉普拉斯算子对模糊图像进行增强I=imread('barbara.bmp');I=double(I);subplot(1,2,1),imshow(I,[])h=[0 1 0,1 -4 1,0 1 0]; %拉普拉斯算子J=conv2(I,h,'same'); %用拉普拉斯算子对图像进行二维卷积运算K=I-J; %增强的图像为原始图像减去拉普拉斯算子滤波的图像subplot(1,2,2),imshow(K,[])2.频率域图象锐化%频域高通滤波法对图像进行增强clc;[I,map]=imread('elain.bmp');noisy=imnoise(I,'gaussian',0.01);[M N]=size(I);F=fft2(noisy);fftshift(F);Dcut=100;D0=250;D1=150;for u=1:Mfor v=1:ND(u,v)=sqrt(u^2+v^2);BUTTERH(u,v)=1/(1+(sqrt(2)-1)*(Dcut/D(u,v))^2); %巴特沃斯低通滤波器传递函数EXPOTH(u,v)=exp(log(1/sqrt(2))*(Dcut/D(u,v))^2); %指数型低通滤波器传递函数if D(u,v)<D1 %梯度低通滤波器传递函数THPFH(u,v)=0;elseif D(u,v)<=D0THPFH(u,v)=(D(u,v)-D1)/(D0-D1);elseTHPFH(u,v)=1;endendendBUTTERG=BUTTERH.*F;BUTTERfiltered=ifft2(BUTTERG);EXPOTG=EXPOTH.*F;EXPOTGfiltered=ifft2(EXPOTG);THPFG=THPFH.*F;THPFfiltered=ifft2(THPFG);subplot(2,2,1),imshow(noisy)subplot(2,2,2),imshow(BUTTERfiltered) subplot(2,2,3),imshow(EXPOTGfiltered) subplot(2,2,4),imshow(THPFfiltered);四思考题1.均值滤波和中值滤波有那些优缺点?2.窗口尺寸对平滑滤波结果有什么影响?3.常用的锐化滤波算子都有哪些?。
图像增强实验及MATLAB在图像处理中的一些函数资料

实验一图像增强实验1.1 直方图一.实验目的1.熟悉matlab图像处理工具箱及直方图函数的使用;2.理解和掌握直方图原理和方法;二.实验目标Matlab自带图片,存储地址:E:\MATLAB2011\toolbox\images\imdemos(根据安装位置调整)三.程序设计在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。
I=imread('cameraman.tif');%读取图像subplot(1,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(1,2,2),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像;3.浏览源程序并理解含义;4.运行,观察显示结果;5.结束运行,退出;五.实验结果观察图像matlab环境下的直方图分布。
(a)原始图像 (b)原始图像直方图六.实验报告要求1、给出实验原理过程及实现代码;2、输入一幅灰度图像(不得使用“cameraman.tif”),给出其灰度直方图结果,并进行灰度直方图分布原理分析。
1、实验原理过程:每一张图片都是一张灰度图片,都是由一些像素点组成,matlab 读取图片,并显示该图片的灰度级范围。
实现代码:I=imread('D:\MATLAB7\toolbox\images\imdemos\rice.png');%读取图像 subplot(1,2,1),imshow(I) %输出图像 subplot(1,2,2),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题 2、0100200原始图像直方图实验1.2 灰度均衡化一.实验目的1.熟悉matlab 图像处理工具箱中灰度均衡函数的使用; 2.理解和掌握灰度均衡原理和实现方法;二.实验设备1.PC 机一台;2.软件matlab ;三.程序设计在matlab 环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图像增强及其matlab实现实例
图像增强技术主要包括:直方图修改处理,图像平滑处理,图像尖锐化处理,彩色图像处理。
从纯技术上讲主要有两类:1)频域处理法2)空域处理法;频域处理法主要是卷积定理,采用修改图像傅立叶变换的方法实现对图像的增强处理技术;空域处理法:是直接对图像中的像素进行处理,基本上是以灰度映射变换为基础的。
2.1 空域滤波增强
空域滤波增强:使用空域模板进行的图像处理被称为空域滤波,模板本身被称为空域滤波器。
空域滤波器包括:线性滤波器和非线性滤波器
空域滤波处理效果来分类,可以分为平滑滤波器,和锐化滤波器,平滑的目的在于消除混杂在图像中的干扰因素,改善图像质量,强化图像表现特征。
锐化的目的在于增强图像边缘,以及对图像进行识别和处理。
2.1.1 平滑滤波器:用于模糊处理和减小噪声,
线性平滑滤波器
平滑线性空间滤波器的输出(响应)是包含在滤波掩模邻域内像素的简单平均值。
因此这些滤波器也被称为均值滤波器。
平滑滤波器的概念很简单:它是用滤波掩模确定的领域内像素的平均值去代替图像每个像素点的值。
这种处理减少了图像灰度的尖锐化。
注:每个掩模前边的乘数等于它的系数值的和,以计算平均值。
(详见数字图像处理P--93)
我们经常用这些极端类型的模糊处理来去除图像中的一些小物体。
例子:在matlab中利用线性平滑滤波器处理一副图像(详见matlab7.0图像处理)
I=imread('eight.tif');
J=imnoise(I,'salt & pepper',0.02);
>> %添加椒盐噪声
>> subplot(221)
>> imshow(I)
>> title('原图像')
>> subplot(222)
>> imshow(J)
>> title('添加椒盐噪声图像')
K1=filter2(fspecial('average',3),J)/255;
>> %应用3*3邻域窗口法
>> subplot(223),imshow(K1)
>> K2=filter2(fspecial('average',7),J)/255;
>> %应用7*7邻域窗口法
>> subplot(224),imshow(K2)
领域平均法有力的抑制了噪声,同时也由于平均而引起了模糊(加宽)现象,模糊程度与邻域半径成正比。
2.1.2中值滤波器(最大值滤波器和最小值滤波器)
基本原理是把数字图像或数字序列中某一点的值用该点的一个邻域中各点值的中值交换。
中值滤波器的窗口可以取方形,圆形,十字形等。
2.1.3锐化滤波器
锐化处理主要目的是突出图像中的细节或者增强被模糊了的细节,这种模糊不是由于错误操作,就是特殊图像获取方法的固有影响。
1)微分法
梯度是图像处理常用的一次微分方法。
在灰度骤变区域,梯度值大,在灰度相似区域,梯度值小。
在灰度级为常数的区域,梯度为零
Laplacian算子是线性二次微分算子,与梯度算子一样,具有旋转不变性,从而满足不同走向的图像边界的锐化要求。
2)模板匹配法
此法除了能够增强图像边缘外,还具有平滑噪声的优点。
2.2 频率域增强
2.2.1 低通滤波器
一幅图像的边缘,跳跃部分以及颗粒噪声代表图像信号的高频分量,而大面积的背景区域代表了图像信号的低频分量。
低通滤波器的作用就是滤除这些高频分量,保留低频分量,使图像信号平滑。
包括:理想低通滤波器,布特沃斯低通滤波器,指数低通滤波器和梯形低通滤波器等。
2.2.2 高通滤波器
与低通滤波器相反,它将高频信号通过,而抑制了低频信号。
2.2.3同态滤波器
把频率过滤和灰度变换结合起来的图像处理方法叫同态滤波。
他是把图像的照明反射模型作为频域处理的基础,利用压缩亮度范围和增强对比度来改善的一种处理技术。
频域增强实例
I=imread('saturn.png');
>> J=imnoise(I,'salt & pepper',0.02);
>> subplot(121),imshow(J)
>> title('含噪声的图像')
J=double(J);
>> f=fft2(J);
>> g=fftshift(f);
>> [M,N]=size(f);
>> n=3;d0=20;
>> n1=floor(M/2);n2=floor(N/2);
>> for i=1:M
for j=1:N
d=sqrt(i-n1)^2+((i-n2)^2);
h=1/(1+0.414*(d/d0)^(2*n));
g(i,j)=h*g(i,j);
end
end
g=ifftshift(g);
>> g=uint8(real(ifft2(g)));
>> subplot(122),imshow(g)
>> title('三阶Butterworth滤波图像')。