图像平滑处理的空域算法和频域分析
- 格式:doc
- 大小:721.00 KB
- 文档页数:11
python简单图像处理(10)空间域图像平滑图象平滑的主要⽬的是减少图像噪声图像噪声来⾃多⽅⾯,常见的噪声有以下⼏种:加性噪声、乘性噪声、量化噪声、椒盐噪声减少噪声的⽅法可以在空间域或是在频率域在空间域,基本⽅法是求像素的平均值或中值在频率域,运⽤的是低通滤波技术在这⾥我们只讲空间域的图象平滑。
频率域以后有机会再讲空间域的各种滤波器虽然形状不同,但在空间域实现图像滤波的⽅法是相似的。
都是利⽤模板卷积,即将图像模板下的像素与模板系数的乘积求和操作。
我们先来看3×3的模板:我们先来看看领域平均法:常⽤的平滑掩模算⼦有我们写程序来实现:import cvdef Filter(image,array):w = image.widthh = image.heightsize = (w,h)iFilter = cv.CreateImage(size,8,1)for i in range(h):for j in range(w):if i in [0,h-1] or j in [0,w-1]:iFilter[i,j] = image[i,j]else:a= [0]*9for k in range(3):for l in range(3):a[k*3+l] = image[i-1+k,j-1+l]sum = 0for m in range(9):sum = sum+array[m]*a[m]iFilter[i,j] = int(sum)return iFilterH1 = [1.0/9]*9H2 = [1.0/10]*9H2[4] = 0.2H3 = [1.0/16,2.0/16,1.0/16,2.0/16,4.0/16,2.0/16,1.0/16,2.0/16,1.0/16]H4 = [1.0/8]*9H4[4] = 0image = cv.LoadImage('lena.jpg',0)iH1F = Filter(image,H1)iH2F = Filter(image,H2)iH3F = Filter(image,H3)iH4F = Filter(image,H4)cv.ShowImage('image',image)cv.ShowImage('iH1F',iH1F)cv.ShowImage('iH2F',iH2F)cv.ShowImage('iH3F',iH3F)cv.ShowImage('iH4F',iH4F)cv.WaitKey(0)效果如下:不同算⼦间差别很⼩,⾄少这幅图是这样的我们再来看看中值滤波器中值滤波器不存在算⼦的概念,只有窗⼝的概念选取以某⼀点为中⼼的窗⼝,对窗⼝中所有点灰度值取中值,将灰度值的中值付给这⼀点。
空域处理方法和频域处理方法是数字图像处理中常见的两种基本处理方法,它们在处理图像时有着不同的特点和适用范围。
下面将从原理、应用和效果等方面对两种处理方法进行简要介绍,并对它们的区别进行分析。
一、空域处理方法1. 原理:空域处理是直接对图像的像素进行操作,常见的空域处理包括图像增强、平滑、锐化、边缘检测等。
这些处理方法直接针对图像的原始像素进行操作,通过像素之间的关系来改变图像的外观和质量。
2. 应用:空域处理方法广泛应用于图像的预处理和后期处理中,能够有效改善图像的质量,增强图像的细节和对比度,以及减轻图像的噪声。
3. 效果:空域处理方法对图像的局部特征和细节有很好的保护和增强作用,能够有效地改善图像的视觉效果,提升图像的清晰度和质量。
二、频域处理方法1. 原理:频域处理是通过对图像的频率分量进行操作,常见的频域处理包括傅立叶变换、滤波、频域增强等。
这些处理方法将图像从空间域转换到频率域进行处理,再通过逆变换得到处理后的图像。
2. 应用:频域处理方法常用于图像的信号处理、模糊去除、图像压缩等方面,能够有效处理图像中的周期性信息和干扰信号。
3. 效果:频域处理方法能够在频率域对图像进行精细化处理,提高图像的清晰度和对比度,对于一些特定的图像处理任务有着独特的优势。
三、空域处理方法和频域处理方法的区别1. 原理不同:空域处理方法直接对图像像素进行操作,而频域处理方法是通过对图像进行频率分析和变换来实现图像的处理。
2. 应用范围不同:空域处理方法适用于对图像的局部特征和细节进行处理,而频域处理方法适用于信号处理和频率信息的分析。
3. 效果特点不同:空域处理方法能更好地保护和增强图像的细节和对比度,频域处理方法能更好地处理图像中的周期性信息和干扰信号。
空域处理方法和频域处理方法是数字图像处理中常用的两种处理方法,它们在原理、应用和效果等方面有着不同的特点和适用范围。
在实际应用中,可以根据图像的特点和处理需求选择合适的方法,以获得更好的处理效果。
数字图像处理作业题目:图像的平滑处理与锐化处理:一凡学号:104753130764专业:计算机应用技术1.1理论背景现实中的图像由于种种原因都是带噪声的,噪声恶化了图像质量,使图像模糊,甚至淹没和改变特征,给图像分析和识别带来了困难。
一般数字图像系统中的常见噪声主要有:高斯噪声、椒盐噪声等。
图像去噪算法根据不通的处理域,可以分为空间域和频域两种处理方法。
空间域处理是在图像本身存在的二维空间里对其进行处理。
而频域算法是用一组正交函数系来逼近原始信号函数,获得相应的系数,将对原始信号的分析转动了系数空间域。
在图像的识别中常需要突出边缘和轮廓信息,图像锐化就是增强图像的边缘和轮廓。
1.2介绍算法图像平滑算法:线性滤波(邻域平均法)对一些图像进行线性滤波可以去除图像中某些类型的噪声。
领域平均法就是一种非常适合去除通过扫描得到的图像中的噪声颗粒的线性滤波。
领域平均法是空间域平滑噪声技术。
对于给定的图像()j i f,中的每个像素点()nm,,取其领域S。
设S含有M个像素,取其平均值作为处理后所得图像像素点()nm,处的灰度。
用一像素领域各像素灰度平均值来代替该像素原来的灰度,即领域平均技术。
领域S 的形状和大小根据图像特点确定。
一般取的形状是正方形、矩形及十字形等,S 的形状和大小可以在全图处理过程中保持不变,也可以根据图像的局部统计特性而变化,点(m,n)一般位于S 的中心。
如S 为3×3领域,点(m,n)位于S 中心,则()()∑∑-=-=++=1111,91,i j j n i m f n m f 假设噪声n 是加性噪声,在空间各点互不相关,且期望为0,方差为2σ,图像g 是未受污染的图像,含有噪声图像f 经过加权平均后为()()()()∑∑∑+==j i n M j i g M j i f M n m f ,1,1,1, 由上式可知,经过平均后,噪声的均值不变,方差221σσM =,即方差变小,说明噪声强度减弱了,抑制了噪声。
第5章图像的平滑处理本章要点:☑平滑处理的基本方法☑噪声消除法☑邻域平均法☑中值滤波☑产生噪声5.1平滑处理的基本方法众所周知,实际获得的图像在形成、传输、接收和处理的过程中,不可避免地存在着外部干扰和内部干扰,如光电转换过程中敏感元件灵敏度的不均匀性、数字化过程的量化噪声、传输过程中的误差以及人为因素等,均会存在着一定程度的噪声干扰。
噪声恶化了图像质量,使图像模糊,特征淹没,给分析带来困难。
因此,去除噪声,恢复原始图像是图像处理中的一个重要内容。
消除图像噪声的工作称之为图像平滑或滤波。
平滑的目的有两个:改善图像质量和抽出对象特征。
由于噪声源众多(如光栅扫描,底片颗粒,机械元件,信道传输等),噪声种类复杂(如加性噪声,乘性噪声,量化噪声等),所以平滑方法也多种多样。
平滑可以在空间域进行,也可以在频率域进行。
本章主要介绍在空间域上图像平滑常用的方法,频率域平滑将在第九章中论述。
在空域法中,图像平滑常用的方法是采用均值滤波或中值滤波。
对于均值滤波采用一个有奇数点的滑动窗口在图像上滑动,窗口中心点所对应像素的灰度值用窗口内所有像素的平均值代替,在取均值过程中,如果窗口规定了各个像素点所占的权重,也就是各个像素点的系数,则称为加权均值滤波。
对于中值滤波,窗口中心点所对应像素的灰度值用窗口内内所有像素的中间值代替。
实现均值或中值滤波时,为了简便编程工作,可以定义一个N×N的模板数组。
另外,在用窗口扫描图像过程中,对于图像四个边缘的像素点,可以不处理;也可以用灰度值为”0”的像素点扩展图像的边缘。
在空间域平滑滤波有很多种算法,其中最常见的有:线性平滑、非线性平滑、自适应平滑。
1.线性平滑线性平滑就是对每一个像素点的灰度值用它的邻域值来代替,其邻域大小为:N×N,N一般取奇数。
如3×3均值滤波、N×N均值滤波器。
经过线性平滑滤波,相当于图像经过了一个二维的低通滤波器,虽然是降低了噪声,但同时也模糊了图像边缘和细节,这是这类滤波器存在的通病。
图像空间域平滑的几种简单算法摘要:图像平滑或去噪就是为了抑制噪声,以达到改善图像质量的目的,既可以在空间域又可以频率域中实现,在数字图像处理中起着重要的作用。
本文将主要介绍空间域的几种平滑法的算法:邻点平均法、K 个邻点平均法、最大均匀性平滑,其中操作平台是matlab 7.1。
关键字:数字图像处理,图像平滑,K 个邻点平均法,最大均匀性平滑一、 局部平滑法(邻域平均法) 1、算法介绍局部平滑法是一种直接在空间域上进行平滑处理的技术。
假设图像是由许多灰度恒定的小块组成,相邻像素间存在很高的空间相关性,而噪声则是统计独立的。
因此,可以用邻域内各像素的灰度平均值代替该像素原来的灰度值,以去除噪声,实现图像的平滑。
设有一幅 N ×N 的图像f(x,y),若平滑图像为g(x,y),则有可知邻域平均法就是将当前像素邻域内各像素的灰度平均值作为其输出值的一种简单的去噪方法。
)12.4-如图所示:在3*3的窗口中将中心像素所包括的邻域和中心像素的均值作为中心像素的灰度值在实际中由于第一行、最后一行、第一列、最后一列,不能满足有八个邻域的条件,因此将它们的数据保存不变,最后把这些数据和变化后的数据一起组成图像的灰度矩阵并显示出来。
2、软件流程图3、算法处理效果图与分析3.1算法效果图图(1)图(2)3.2算法效果图分析如图(1):对于picture(2,2)=106,其邻域有picture(1,1) ,picture(1,2),picture(1,3),picture(2,1),picture(2,3),picture(3,1),picture(3,2),picture(3,3)其邻域平均后的值zuihou(2,1)= (picture(1,1) +picture(1,2)+picture(1,3)+ picture(2,1)+picture(2,2)+picture(2,3)+picture(3,1)+picture(3,2)+picture(3,3))/9=968/9=107.5555 56=108而在图示中zuihou(2,1)=108和我们计算的结果吻合,说明算法正确4、算法程序picture =imread('pout.tif');n=291;m=240;I=im2double(picture) ; %由于matlab中读入的图像是uint8的,在求平均值时很容易溢出,因此将其转换成double型进行运算for h=1:mX(1,h)=I(1,h);X(291,h)=I(291,h);endfor j=1:n%由于第一行第一列以及最后一行最后一列的值不改变,因此将他们的值单独取出来X(j,1)=I(j,1);X(j,240)=I(j,240);endfor i=2:n-1for j=2:m-1X(i,j)=(I(i-1,j-1)+I(i-1,j)+I(i-1,j+1)+I(i,j-1)+I(i,j)+I(i,j+1)+I(i+1,j-1)+I(i+1,j)+I(i+1,j+1))/9;%将中心像素的邻域和中心像素相加求平均值endendzuihou=im2uint8(X);%将double型数据转换成uint8imshow(picture),title('原图');figure;imshow(zuihou),title('3*3窗口邻点平均后的图像');二、灰度最相近的K个邻点平均法1、算法介绍该算法的出发点是:在n×n的窗口内,属于同一集合体的像素,它们的灰度值的高度相关。
图像平滑处理的空域算法和频域分析1 技术要求对已知图像添加高斯白噪声,并分别用低通滤波器(频域法)和邻域平均法(空域法)对图像进行平滑处理(去噪处理),并分析比较两种方法处理的效果。
2 基本原理2.1 图像噪声噪声在理论上可以定义为“不可预测,只能用概率统计方法来认识的随机误差”。
实际获得的图像一般都因受到某种干扰而含有噪声。
引起噪声的原因有敏感元器件的内部噪声、相片底片上感光材料的颗粒、传输通道的干扰及量化噪声等。
噪声产生的原因决定了噪声的分布特性及它和图像信号的关系。
根据噪声和信号的关系可以将其分为两种形式:(1)加性噪声。
有的噪声与图像信号g(x,y)无关,在这种情况下,含噪图像f(x,y)可表示为f(x,y)=g(x,y)+n(x,y)(2)乘性噪声。
有的噪声与图像信号有关。
这又可以分为两种情况:一种是某像素处的噪声只与该像素的图像信号有关,另一种是某像点处的噪声与该像点及其邻域的图像信号有关,如果噪声与信号成正比,则含噪图像f(x,y)可表示为f(x,y)=g(x,y)+n(x,y)g(x,y)另外,还可以根据噪声服从的分布对其进行分类,这时可以分为高斯噪声、泊松噪声和颗粒噪声等。
如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声,一般为加性噪声。
2.2 图像平滑处理技术平滑技术主要用于平滑图像中的噪声。
平滑噪声在空间域中进行,其基本方法是求像素灰度的平均值或中值。
为了既平滑噪声又保护图像信号,也有一些改进的技术,比如在频域中运用低通滤波技术。
(1)空域法在空域中对图像进行平滑处理主要是邻域平均法。
这种方法的基本思想是用几个像素灰度的平均值来代替每个像素的灰度。
假定有一幅N*N 个像素的图像f(x,y),平滑处理后得到一幅图像g(x,y)。
g(x,y)由下式决定式中,x,y=0,1,2,…,N-1;S 是(x,y)点邻域中点的坐标的集合,但其中不包括(x,y)点;M 是集合内坐标点的总数。
上式说明,平滑化的图像g(x,y)中每个像素的灰度值均由包含在(x,y)的预定邻域中的f(x,y)的几个像素的灰度值的平均值来决定。
(2)频域法低通滤波法是一种频域处理方法。
在分析图像信号的频率特性时,一幅图像的边缘、跳跃部分以及颗粒噪声代表图像信号的高频分量,而大面积的背景区则代表图像信号的低频分量。
用滤波的方法滤除其高频部分就能去掉噪声,使图像得到平滑。
由卷积定理可知其中F(u,v)是含有噪声的图像的傅立叶变换,G(u,v)是平滑处理后的图像的傅立叶变换,H(u,v)是传递函数。
选择传递函数H(u,v),利用H(u,v)使F(u,v)的高频分量得到衰减,得到G(u,v)后再经傅立叶反变换后就可以得到所希望的平滑图像g(x,y)了。
根据前面的分析,显然H(u,v)应该具有低通滤波特性,所以这种方法叫低通滤波法平滑化处理。
常用的低通滤波器有如下几种: a.理想低通滤波器一个理想的二维低通滤波器有一个参数 。
它是一个规定的非负的量,叫做理想低通滤波器的截止频率。
所谓理想低通滤波器是指以截频 为半径的圆内的所有频率都能无损地通过,而在截频之外的频率分量完全被衰减。
理想低通滤波器可以用计算机模拟实Mn m f y x g Sn m ∑∈=),(),(),(),(),(),(G v u F v u H v u ∙=0D 0现,但是却不能用电子元器件实现。
b.布特沃斯(Butterworth)低通滤波器一个n 阶布特沃斯低通滤波器的传递函数由下式表示式中, 为截止频率。
布特沃斯低通滤波器又称最大平坦低通滤波器。
它与理想低通滤波器不同,它的通带与阻带之间没有明显的不连续性。
也就是说,在通带和阻带之间有一个平滑的过度带,通常把H(u,v)下降到某一值的那一点定为截止频率 。
一般情况下常常采用下降到H(u,v)最大值的 那一点为截止频率点,该点也常称为半功率点,这样上式可修改成c.指数低通滤波器在图像处理中常用的另一种平滑滤波器是指数低通滤波器,由于指数低通滤波器有更快的衰减率,所以,经指数低通滤波器处理的图像比布特沃斯低通滤波器处理的图像稍模糊一些。
3 建立模型描述图像平滑处理用到两种方法,其中空域法使用邻域平均法处理,其流程图如图1所示⎥⎦⎤⎢⎣⎡+=D v u D nv u H 011),(),(2D 0D 021[]⎥⎦⎤⎢⎣⎡-+=D v u D nv u H 01211),(),(2图1 邻域平均法模型图频域法用二阶布特沃斯低通滤波器对图像滤除噪声,其程序流程图如图2所示:图2 低通滤波法模型图4 源程序代码(1)邻域平均法源程序clear;clc;close all;I=imread('tu.jpg'); %读取图像f=rgb2gray(I);%转化成灰度图subplot(2,3,1);% 分割2*3个窗口。
取第一个窗口,下面在第一个窗口处显示图像imshow (f);%显示灰度图colormap(gray);title('原始图')%给显示的图像命名为“原始图”J=imnoise(f,'gaussian',0,0.09);%给原始图加入参数为0.09的高斯白噪声subplot(2,3,2);% 分割2*3个窗口。
取第二个窗口,如果下面有绘图语句,就表示要%在第二个窗口中绘图imshow(J);%显示加了高斯白噪声的图像Jtitle('噪声图')%命名为“噪声图”[m n]=size(f); %获取灰度图的大小f=double(f);%转换f为双精度型c=1/9*[1 1 1;1 1 1;1 1 1]; %3*3模板for i=1:mfor j=1:nL=f(i:i,j:j).*c; %求点积G(i,j)=sum(sum(L));%求和endendsubplot(2,3,3);image(G);%取第三个窗口title('3*3模板')%命名为“3*3模板”c=1/25*[1 1 1 1 1;1 1 1 1 1;1 1 1 1 1]; %5*5模板for i=1:mfor j=1:nL=f(i:i,j:j).*c; %求点积G(i,j)=sum(sum(L));%求和endendsubplot(2,3,4);image(G);%在第四个窗口中显示图像title('5*5模板')% 命名为“5*5模板”c=1/49*[1 1 1 1 1 1 1;1 1 1 1 1 1 1;1 1 1 1 1 1 1]; %7*7模板for i=1:mfor j=1:nL=f(i:i,j:j).*c; %求点积G(i,j)=sum(sum(L));%求和endendsubplot(2,3,5);image(G);%在第五个窗口中显示图像title('7*7模板')% 命名为“7*7模板”(2)低通滤波法源程序clear;clc;close all;I=imread('tu.jpg'); %读取图像[m n p]=size(I);%获取图像矩阵大小I=double(I);将原来的图像矩阵转换为双精度型的I=I(1:m,1:n,1).*0.3+I(1:m,1:n,2).*0.51+I(1:m,1:n,1).*0.11;%将原图转换为灰度图subplot(2,3,1);image(I);colormap(gray); %分割2*3个窗口。
取第一个窗口,显示灰度图title('原始图')%命名为“原始图”Noise=wgn(m,n,25);%产生25dBm的高斯白噪声New = Noise + I;%将高斯白噪声与原始信号叠加subplot(2,3,2);image(New);%在第二个窗口中显示加了噪声的图像title('噪声图')%命名为“噪声图”g=fft2(New); % 傅立叶变换g=fftshift(g); % 转换数据矩阵[M,N]=size(g); %获取矩阵大小nn=2; % 定义二阶巴特沃斯(Butterworth)低通滤波器d0=20; %截止频率为20m=fix(M/2); n=fix(N/2);圆整函数for i=1:Mfor j=1:Nd=sqrt((i-m)^2+(j-n)^2);h=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数result(i,j)=h*g(i,j);%传递函数与信号傅立叶变换函数相乘endendresult=ifftshift(result);J2=ifft2(result); %逆傅立叶变换J3=uint8(real(J2));%将输出图像转换为8位数据存储subplot(2,3,3);image(J3); %在第三个窗口中显示滤波后的图像title('截止频率20 ') %命名为“截止频率20”nn=2; % 定义二阶巴特沃斯(Butterworth)低通滤波器d0=100; %截止频率为100m=fix(M/2); n=fix(N/2);圆整函数for i=1:Mfor j=1:Nd=sqrt((i-m)^2+(j-n)^2);h=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数result(i,j)=h*g(i,j); %传递函数与信号傅立叶变换函数相乘endendresult=ifftshift(result);J2=ifft2(result);%二维逆傅立叶变换J3=uint8(real(J2)); %转换为8位存储的图像subplot(2,3,4);image(J3); %在第四个窗口中显示绿波后的图像title('截止频率100 ')%命名为“截止频率100”5 调试过程及结论在MatLab中输入邻域平均法程序代码后运行程序,得到输出结果如图3所示:图3 邻域平均法输出图像由噪声图与滤波后的图像对比可看出,邻域平均法对抑制噪声有明显的效果,但随着邻域的加大,就是随着模板的加大,图像的模糊程度也愈加严重。
在MatLab中输入低通滤波法程序代码后运行程序,得到输出结果如图4所示:图4 低通滤波法输出图像巴特沃斯低通滤波器的去噪效果与所选的截止频率有关,由于一幅图像的边缘、跳跃部分以及颗粒噪声代表图像信号的高频分量,而大面积的背景区则代表图像信号的低频分量所以,截频设的太低会使图像变得越模糊,因为图像的许多细节信息也被滤掉了。
6 心得体会这次能力强化训练是《图像平滑处理的空预算法和频域分析》,需要有一定的对数字图像处理方面的知识,由于没有学习过《数字图像处理》这门课,已开始题目布置下来时感到无从下手,查阅了大量资料,对图像平滑处理有了一定的了解,对于MatLab刚开始接触,许多语法、函数都不会使用,于是和同学互相讨论,通过参考大量资源,站在巨人的肩膀上稍加整合创新,最终得出了自己的程序,程序调试运行后,发现最开始根本无法显示图像,检查原因,原来是对MatLab的符号规则不清楚,MatLab中的标点符号必须是在英文状态下输入,这在编写程序时必须小心!修改后得到了正确的显示,但是图像效果对比不明显,通过不断摸索试探,使用不同的图像显示函数,得到了对比鲜明的图像,对分析不同方法的优缺点提供了很大方便。