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中的图像增强方法图像增强是数字图像处理中的一项重要技术,通过使用各种算法和方法,可以改善图像的质量、增加图像的信息量和清晰度。
在Matlab中,有许多强大而灵活的工具和函数,可以帮助我们实现图像增强的目标。
本文将介绍几种常用的Matlab图像增强方法,并探讨它们的原理和应用。
一、直方图均衡化直方图均衡化是一种常用的图像增强方法,通过调整图像的像素分布来增强图像的对比度和亮度。
在Matlab中,我们可以使用“histeq”函数来实现直方图均衡化。
该函数会根据图像的直方图信息,将像素的灰度值重新映射到一个均匀分布的直方图上。
直方图均衡化的原理是基于图像的累积分布函数(CDF)的变换。
它首先计算图像的灰度直方图,并根据直方图信息计算CDF。
然后,通过将CDF线性映射到期望的均匀分布上,将图像的像素值进行调整。
直方图均衡化的优点在于简单易实现,且效果较好。
但它也存在一些限制,比如对噪声敏感、全局亮度调整可能导致细节丢失等。
因此,在具体应用中,我们需要权衡其优缺点,并根据图像的特点选择合适的方法。
二、自适应直方图均衡化自适应直方图均衡化是对传统直方图均衡化的改进,它能够在改善对比度的同时,保持局部细节。
与全局直方图均衡化不同,自适应直方图均衡化采用局部的直方图信息来进行均衡化。
在Matlab中,我们可以使用“adapthisteq”函数来实现自适应直方图均衡化。
该函数会将图像分成小块,并在每个块上进行直方图均衡化。
通过这种方式,自适应直方图均衡化可以在增强图像对比度的同时,保留图像的细节。
自适应直方图均衡化的优点在于针对每个小块进行处理,能够更精确地调整局部对比度,避免了全局调整可能带来的细节丢失。
然而,相对于全局直方图均衡化,自适应直方图均衡化的计算量较大,因此在实时处理中可能会引起性能问题。
三、模糊与锐化图像增强不仅局限于对比度和亮度的调整,还可以改善图像的清晰度和边缘信息。
在Matlab中,我们可以使用一些滤波器来实现图像的模糊和锐化。
实验二 图像增强 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数字图像处理—图像增强汇总

图像增强图像增强的定义图像增强是指按特定的需要突出一幅图像中的某些信息,同时削弱或去除某些不需要的信息的处理方法,也是提高图像质量的过程[9]。
图像增强的目的是使图像的某些特性方面更加鲜明、突出,使处理后的图像更适合人眼视觉特性或机器分析,以便于实现对图像的更高级的处理和分析。
图像增强的过程往往也是一个矛盾的过程:图像增强希望既去除噪声又增强边缘。
但是,增强边缘的同时会同时增强噪声,而滤去噪声又会使边缘在一定程度上模糊,因此,在图像增强的时候,往往是将这两部分进行折中,找到一个好的代价函数达到需要的增强目的[10]。
传统的图像增强算法在确定转换函数时常是基于整个图像的统计量,如:ST 转换,直方图均衡,中值滤波,微分锐化,高通滤波等等。
这样对应于某些局部区域的细节在计算整幅图的变换时其影响因为其值较小而常常被忽略掉,从而局部区域的增强效果常常不够理想,噪声滤波和边缘增强这两者的矛盾较难得到解决。
常用的图像增强方法图像增强可分成两大类:空间域法和频率域法。
基于空间域的算法处理时直接对图像灰度级做运算;基于频率域的算法是在图像的某种变换域内对图像的变换系数值进行某种修正,是一种间接增强的算法。
基于空间域的算法分为点运算算法和邻域去噪算法。
点运算算法即灰度级校正、灰度变换和直方图修正等,目的或使图像成像均匀,或扩大图像动态范围,扩展对比度。
邻域增强算法分为图像平滑和锐化两种。
平滑一般用于消除图像噪声,但是也容易引起边缘的模糊。
常用算法有均值滤波、中值滤波。
锐化的目的在于突出物体的边缘轮廓,便于目标识别。
常用算法有梯度法、算子、高通滤波、掩模匹配法、统计差值法等。
基于频率域的算法把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。
采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则可增强边缘等高频信号,使模糊的图片变得清晰。
图像增强的方法是通过一定手段对原图像附加一些信息或变换数据,有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征,使图像与视觉响应特性相匹配。
Matlab技术图像增强方法

Matlab技术图像增强方法图像增强是数字图像处理的一个重要任务,通过改善图像的质量和视觉效果来提高图像的可读性和理解性。
在现实生活中,我们常常会遇到一些图像质量较差、光照不均匀或者图像噪声较多的情况,这时候就需要借助一些图像增强方法来改善图像。
Matlab作为一款强大的数学软件,提供了丰富的图像处理工具箱,其中包含了多种图像增强方法。
本文将介绍几种常用的Matlab图像增强方法,并对其原理和应用进行探讨。
一、直方图均衡化直方图均衡化是一种常用的图像增强方法,通过重新分配图像的灰度级来拉伸图像的灰度范围,以增强图像的对比度和细节。
在Matlab中,我们可以使用以下代码实现图像的直方图均衡化:```matlabimg = imread('image.jpg');img_eq = histeq(img);imshowpair(img, img_eq, 'montage');```直方图均衡化的原理是将图像的累积分布函数进行线性映射,使得图像的灰度级均匀分布,从而增强对比度。
然而,直方图均衡化有时候会导致图像过亮或者过暗,因为它只考虑了灰度分布,并未考虑图像的空间信息。
二、自适应直方图均衡化为了克服直方图均衡化的不足,自适应直方图均衡化应运而生。
自适应直方图均衡化是一种局部增强方法,它将图像划分为若干小区域,并对每个区域进行直方图均衡化,以保留图像的局部对比度。
Matlab中的自适应直方图均衡化函数为`adapthisteq`,使用方法如下:```matlabimg = imread('image.jpg');img_adapteq = adapthisteq(img);imshowpair(img, img_adapteq, 'montage');```自适应直方图均衡化在增强图像对比度的同时,能够保留图像的细节,并且不会引入过多的噪声。
Matlab中的图像增强算法研究

Matlab中的图像增强算法研究在数字图像处理领域,图像增强算法是一项重要的研究内容,可以提高图像的质量和清晰度。
Matlab作为一种常用的科学计算软件,提供了丰富的图像处理工具箱,包括多种图像增强算法。
本文将对Matlab中的一些图像增强算法进行研究和探讨。
一、直方图均衡化算法直方图均衡化是一种常用的图像增强算法,它通过调整图像像素的亮度分布,增强图像的对比度和细节。
在Matlab中,直方图均衡化算法可以通过histeq函数实现。
具体实现过程如下:1. 读取图像并转化为灰度图像。
2. 计算灰度图像的直方图。
3. 计算直方图的累积分布函数。
4. 根据累积分布函数对图像进行像素值映射。
5. 输出增强后的图像。
直方图均衡化算法能够有效增强图像的对比度和细节,但对于存在局部对比度不均匀的图像,效果可能不理想。
因此,需要对不同类型的图像选择合适的增强算法。
二、小波变换与图像增强小波变换是一种将信号分解为不同尺度的频率子带的方法,其在图像处理中的应用也十分广泛。
在Matlab中,可以使用wavedec2函数对图像进行小波分解,再利用小波反变换将分解后的图像进行增强。
小波变换的优点是可以同时捕捉图像的局部和全局细节信息,从而实现对图像的全方位增强。
但是,小波变换的计算复杂度较高,对于大尺寸的图像处理可能存在较长的计算时间。
三、空域滤波增强空域滤波增强是一种基于图像像素的局部空间信息进行增强的方法。
Matlab中常用的空域滤波增强算法包括均值滤波、中值滤波、高斯滤波等。
1. 均值滤波是一种简单且容易实现的滤波算法,它通过计算图像像素周围窗口的平均值来减小噪声的影响。
在Matlab中,可以使用fspecial函数生成均值滤波模板,再利用imfilter函数对图像进行滤波操作。
2. 中值滤波是一种基于排序统计的滤波方法,它通过计算图像像素周围窗口的中值来抑制噪声。
在Matlab中,可以使用medfilt2函数对图像进行中值滤波。
数字图像处理中图像增强的四种matlab编程方法

数字图像处理中图像增强的四种matlab编程方法图像增强处理log图像增强程序:clear allclose alliptsetpref('ImshowBorder', 'tight')im1 = imread('f:\照片\57.jpg')%im5 =rgb2gray(im1)figureimshow(im1)im2=log(1+double(im1))*0.2%im3=imadjust(im2,[0.5 1],[0.1 0.5],0.6) figure imshow(im2)原图像Log 系数0.2时系数0.3系数为0.1时由图片看出当C在0.2附近时,图像效果有了明显的改善,当大于0.3时,图像白色加重,而当其小于0.1时,图像黑色加重.指数图像增强:程序clear allclose alliptsetpref('ImshowBorder', 'tight')im1 = imread('f:\照片\57.jpg')%im5 =rgb2gray(im1)figureimshow(im1)im3=log(double(im1))im2=exp(double(im3))*0.01figureimshow(im2)原图像系数为0.001时系数为0.02系数为0.01系数为0.06由图片看出当C在0.02附近时,图像效果有了明显的改善,当大于0.06时,图像白色加重,而当其小于0.01时,图像黑色加重.绝对值图像增强程序:clear allclose alliptsetpref('ImshowBorder', 'tight')im1 = imread('f:\照片\57.jpg')%im5 =rgb2gray(im1)figureimshow(im1)im2=abs(double(im1))*0.01 其中调整系数为cfigureimshow(im2)原图像系数为0.015时系数为0.03时系数为0.005时由图片看出当C在0.015附近时,图像效果有了明显的改善,当大于0.003时,图像白色加重,而当其小于0.005时,图像黑色加重开方图像增强程序:clear allclose alliptsetpref('ImshowBorder', 'tight')im1 = imread('f:\照片\57.jpg')%im5 =rgb2gray(im1)figureimshow(im1)im2=sqrt(double(im1))*0.08%im3=imadjust(im2,[0.5 1],[0.1 0.5],0.6) figure imshow(im2)原图像系数为0.03时系数为0.05时系数为0.005时由图片看出当C在0.03附近时,图像效果有了明显的改善,当大于0.05时,图像白色加重,而当其小于0.005时,图像黑色加重。
图像变换与增强matlab程序

试验一 MATLAB图像增强与变换处理实验试验一 MATLAB图像增强与变换处理实验一、实验目的1、熟悉掌握数字图像处理的基本概念。
2、了解MATLAB的的编程环境,图像处理工具箱的使用方法。
3、掌握数字图像处理图像增强的基本方法。
4、掌握图像变换的基本方法。
5、学会使用MATLAB完成图像处理的主要功能。
二、实验任务(1)各种格式的数字图像的读取、显示、存储。
(2)图像的空域增强方法。
(3)图像的频率域增强方法。
(4)图像的锐化增强方法。
(5)图像的快速傅里叶变换与反变换。
三、实验配套的主要仪器设备及台(套)数教师示范用投影仪一台微型计算机每个学生一台四、报告要求完成实验任务的每一步,并记录每一步的实验结果。
图1 原始图像图 2 转化为灰度图像的图像(1)各种格式的数字图像的读取、显示、存储将该图像放入MATLAB的work文件夹中。
在.m文件中输入以下代码:clear all;close all;f=imread('1.jpg'); %读入原图像文件f1=rgb2gray(f); %将彩色图片转换为灰度图imshow(f1);imwrite(f1,'gai0.jpg');imwrite(f1,'gai1.png');imwrite(f1,'gai2.bmp');imwrite(f1,'gai3.tiff');(2)则把彩色图片转化为灰度图,,显示图像为图2。
同时我们可以在工作区中输入imfinfo gai0.jpg;,我们可以得到我们保存后图片的相关信息,其输入结果如下:Filename: 'gai1.png'FileModDate: '01-May-2012 20:14:13'FileSize: 414165Format: 'png'FormatVersion: []Width: 1024Height: 768BitDepth: 8ColorType: 'grayscale'FormatSignature: [137 80 78 71 13 10 26 10]Colormap: []Histogram: []InterlaceType: 'none'Transparency: 'none'SimpleTransparencyData: []BackgroundColor: []RenderingIntent: []Chromaticities: []Gamma: []XResolution: []YResolution: []ResolutionUnit: []XOffset: []OffsetUnit: []SignificantBits: []ImageModTime: '1 May 2012 12:14:13 +0000'Title: []Author: []Description: []Copyright: []CreationTime: []Software: []Disclaimer: []Warning: []Source: []Comment: []OtherText: []同理我们可以得到其他三种格式的图像的相关信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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。