编程图像去噪
1. 图像去噪方法有哪些
减少噪声的方法可以在图像空间域或在图像变换域中完成。
图像空间域去噪方法很多,如:线性滤波法、中值滤波法、维纳滤波法等。
图像变换域去噪方法有:傅里叶变换和小波变换等
2. matlab经典图像去噪方法有哪些
线性滤波去噪、中值滤波去噪、均值滤波去噪、维纳滤波去噪等
3. 我想问一下:怎么用matlab编写函数对图像进行高斯滤波以去除噪声
2. 噪声及其噪声的 Matlab 实现
imnoise 函数
格式:J=imnoise(I,type)
J=imnoise(I,type,parameter)
说明:J=imnoise(I,type) 返回对图像 I 添加典型噪声后的有噪图像 J ,参数 type 和 parameter 用于确定噪声的类型和相应的参数。
加权领域平均算法来进行滤波处理
由实验我们可以看出,一般的滤波器在对图像进行噪声滤除的同时对图像中的细节部分有不同程度的破坏,都不能达到理想的效果。但是采用加权的邻域平均算法对图像进行噪声滤除, 不仅能够有效地平滑噪声, 还能够锐化模糊图像的边缘。 加权的邻域平均算法的基本思想是: 在一个邻域内, 除了可以利用灰度均值外, 灰度的上偏差和下偏差也能够提供某些局部信息。算法的计算公式描述如下, 用f (x ,y ) 表示原始图像, g (x , y ) 为平滑后点(x , y ) 的灰度值,V x , y 表示以点(x , y ) 为中心的邻域, 该邻域包含N 个象素,m (x , y ) 表示邻域V x , y 内的灰度均值。NI表示邻域内大于平均值的像素个数,Ng表示小于平均值的像素个数,而N0表示等于平均值的像素个数。则修正的邻域平均法由下式给出:
m - A�0�3 m l; N l > max{N g ,N 0}
g(x,y)= m + A�0�3 m g; N g > max{N l ,N 0} (1)
m ; else
(1)式(1) 中, A为修正系数, 取值范围为0~ 1, 其大小反映V x , y 中的边缘状况。 以上是我认为在图像处理中比较有价值的两点,有兴趣的可以上网查阅相关的资料。
3. 图像滤波的 Matlab 实现
3.1 conv2 函数
功能:计算二维卷积
格式:C=conv2(A,B)
C=conv2(Hcol,Hrow,A)
C=conv2(...,'shape')
说明:对于 C=conv2(A,B) ,conv2 的算矩阵 A 和 B 的卷积,若 [Ma,Na]=size(A), [Mb,Nb]=size(B), 则 size(C)=[Ma+Mb-1,Na+Nb-1]; C=conv2(Hcol,Hrow,A) 中,矩阵 A 分别与 Hcol 向量在列方向和 Hrow 向量在行方向上进行卷积;C=conv2(...,'shape') 用来指定 conv2 返回二维卷积结果部分,参数 shape 可取值如下:
》full 为缺省值,返回二维卷积的全部结果;
》same 返回二维卷积结果中与 A 大小相同的中间部分;
valid 返回在卷积过程中,未使用边缘补 0 部分进行计算的卷积结果部分,当 size(A)>size(B) 时,size(C)=[Ma-Mb+1,Na-Nb+1]。
3.2 conv 函数
功能:计算多维卷积
格式:与 conv2 函数相同
3.3 filter2函数
功能:计算二维线型数字滤波,它与函数 fspecial 连用
格式:Y=filter2(B,X)
Y=filter2(B,X,'shape')
说明:对于 Y=filter2(B,X) ,filter2 使用矩阵 B 中的二维 FIR 滤波器对数据 X 进行滤波,结果 Y 是通过二维互相关计算出来的,其大小与 X 一样;对于 Y=filter2(B,X,'shape') ,filter2 返回的 Y 是通过二维互相关计算出来的,其大小由参数 shape 确定,其取值如下:
》full 返回二维相关的全部结果,size(Y)>size(X);
》same 返回二维互相关结果的中间部分,Y 与 X 大小相同;
》valid 返回在二维互相关过程中,未使用边缘补 0 部分进行计算的结果部分,有 size(Y)<size(X) 。
3.4 fspecial 函数
功能:产生预定义滤波器
格式:H=fspecial(type)
H=fspecial('gaussian',n,sigma) 高斯低通滤波器
H=fspecial('sobel') Sobel 水平边缘增强滤波器
H=fspecial('prewitt') Prewitt 水平边缘增强滤波器
H=fspecial('laplacian',alpha) 近似二维拉普拉斯运算滤波器
H=fspecial('log',n,sigma) 高斯拉普拉斯(LoG)运算滤波器
H=fspecial('average',n) 均值滤波器
H=fspecial('unsharp',alpha) 模糊对比增强滤波器
说明:对于形式 H=fspecial(type) ,fspecial 函数产生一个由 type 指定的二维滤波器 H ,返回的 H 常与其它滤波器搭配使用。
4. 关于图像去噪的matlab代码
I
=
imread('a.png');%读图像
J
=
imnoise(I,'salt
&
pepper',0.02);%加椒盐噪声
K
=
medfilt2(J);%用中值滤波去噪声。
imshow(K);
如果效果不好,加上图片问我。
5. 什么是图像去噪
图像去噪
简介:
现实中的数字图像在数字化和传输过程中常受到成像设备与外部环境噪声干扰等影响,称为含噪图像或噪声图像。减少数字图像中噪声的过程称为图像去噪。
去除图像噪声的方法:
均值滤波器
采用邻域平均法的均值滤波器非常适用于去除通过扫描得到的图像中的颗粒噪声。领域平均法有力地抑制了噪声,同时也由于平均而引起了模糊现象,模糊程度与领域半径成正比。
几何均值滤波器所达到的平滑度可以与算术均值滤波器相比,但在滤波过程中会丢失更少的图象细节。
谐波均值滤波器对“盐”噪声效果更好,但是不适用于“胡椒”噪声。它善于处理像高斯噪声那样的其他噪声。
逆谐波均值滤波器更适合于处理脉冲噪声,但它有个缺点,就是必须要知道噪声是暗噪声还是亮噪声,以便于选择合适的滤波器阶数符号,如果阶数的符号选择错了可能会引起灾难性的后果。
自适应维纳滤波器
它能根据图象的局部方差来调整滤波器的输出,局部方差越大,滤波器的平滑作用越强。它的最终目标是使恢复图像f^(x,y)与原始图像f(x,y)的均方误差e2=E[(f(x,y)-f^(x,y)2]最小。该方法的滤波效果比均值滤波器效果要好,对保留图像的边缘和其他高频部分很有用,不过计算量较大。维纳滤波器对具有白噪声的图象滤波效果最佳。
中值滤波器
它是一种常用的非线性平滑滤波器,其基本原理是把数字图像或数字序列中一点的值用该点的一个领域中各点值的中值代换其主要功能是让周围象素灰度值的差比较大的像素改取与周围的像素值接近的值,从而可以消除孤立的噪声点,所以中值滤波对于滤除图像的椒盐噪声非常有效。中值滤波器可以做到既去除噪声又能保护图像的边缘,从而获得较满意的复原效果,而且,在实际运算过程中不需要图象的统计特性,这也带来不少方便,但对一些细节多,特别是点、线、尖顶细节较多的图象不宜采用中值滤波的方法。
形态学噪声滤除器
将开启和闭合结合起来可用来滤除噪声,首先对有噪声图象进行开启操作,可选择结构要素矩阵比噪声的尺寸大,因而开启的结果是将背景上的噪声去除。最后是对前一步得到的图象进行闭合操作,将图象上的噪声去掉。根据此方法的特点可以知道,此方法适用的图像类型是图象中的对象尺寸都比较大,且没有细小的细节,对这种类型的图像除噪的效果会比较好。
小波去噪
这种方法保留了大部分包含信号的小波系数,因此可以较好地保持图象细节。小波分析进行图像去噪主要有3个步骤:
(1)对图象信号进行小波分解。
(2)对经过层次分解后的高频系数进行阈值量化。
(3)利用二维小波重构图象信号。
详细资料见网络:http://ke..com/view/4518756.htm
6. 怎样用python实现图像去噪
#coding:utf-8
importsys,os
fromPILimportImage,ImageDraw
#二值数组
t2val={}
deftwoValue(image,G):
foryinxrange(0,image.size[1]):
forxinxrange(0,image.size[0]):
g=image.getpixel((x,y))
ifg>G:
t2val[(x,y)]=1
else:
t2val[(x,y)]=0
#降噪
#根据一个点A的RGB值,与周围的8个点的RBG值比较,设定一个值N(0<N<8),当A的RGB值与周围8个点的RGB相等数小于N时,此点为噪点
#G:Integer图像二值化阀值
#N:Integer降噪率0<N<8
#Z:Integer降噪次数
#输出
#0:降噪成功
#1:降噪失败
defclearNoise(image,N,Z):
foriinxrange(0,Z):
t2val[(0,0)]=1
t2val[(image.size[0]-1,image.size[1]-1)]=1
forxinxrange(1,image.size[0]-1):
foryinxrange(1,image.size[1]-1):
nearDots=0
L=t2val[(x,y)]
ifL==t2val[(x-1,y-1)]:
nearDots+=1
ifL==t2val[(x-1,y)]:
nearDots+=1
ifL==t2val[(x-1,y+1)]:
nearDots+=1
ifL==t2val[(x,y-1)]:
nearDots+=1
ifL==t2val[(x,y+1)]:
nearDots+=1
ifL==t2val[(x+1,y-1)]:
nearDots+=1
ifL==t2val[(x+1,y)]:
nearDots+=1
ifL==t2val[(x+1,y+1)]:
nearDots+=1
ifnearDots<N:
t2val[(x,y)]=1
defsaveImage(filename,size):
image=Image.new("1",size)
draw=ImageDraw.Draw(image)
forxinxrange(0,size[0]):
foryinxrange(0,size[1]):
draw.point((x,y),t2val[(x,y)])
image.save(filename)
image=Image.open("d:/1.jpg").convert("L")
twoValue(image,100)
clearNoise(image,4,1)
saveImage("d:/5.jpg",image.size)
7. 图像去噪的方法
①高斯滤波:
高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的 加权平均灰度值 去替代模板中心像素点的值。
1.高斯滤波是平滑线性滤波器,在对邻域内像素灰度平均时赋予了 不同位置不同的权值,越靠近邻域中心权值越 大(?)。
2.高斯滤波技能平滑噪声,也能保留图像的整体灰度分布特征;
3.高斯滤波公式是各向同性扩散方程,在图像边缘处沿切向和法向是同等扩散的,所以绝大多数 边缘和细节纹理特征被模糊掉,损失了大量的信息。
4.高斯滤波 适合处理均值为零的高斯噪声,但 处理离散的点噪声时,会损失大量细节信息。
5.一维高斯函数:
二维高斯函数:
②中值滤波
中值滤波是统计排序滤波器,通过对邻域内所有像素的排序,然后取其 中值为邻域中心的像素。
1.该方法 不适合处理高斯噪声,但处理离散的点噪声效果明显。
2.该方法 忽略了像素点间的相关性,当目标图像细节纹理复杂时,中值滤波的结果会破坏其不分纹理。
8. Java图像去噪怎么实现
流程不外乎是
读取图像文件;
扫描噪点;
去除噪点;
保存图像文件。
Java2D操作好像使用BufferedImage读取图像文件最方便,有一阵没弄这了,忘了。应该可以读取JPG,PNG,GIF图像。
识别噪点应该有专门的算法,我没研究过,网络一下应该能找到专门算法,然后写段代码就可以。我个人以为是独立一个像素与周围一定范围内的像素差异过大,就认为是噪点。可以有亮度,色相上的差别。BufferedImage可以读取每个像素的RGB,从而能识别色相的差别;还有个矩阵,用来由RGB计算亮度的,也就可以计算亮度差别了,这个网上都能找到。
输出也使用BufferedImage就可以。
关键是每个像素都要和周围像素比较,还要计算亮度,最少是三重循环了,如何提高效率是个大问题了。这个代码写好了也算一个高手了。
9. 用opencv去噪
使用opencv-python的内置函数,对图片进行降噪处理。
8Fourier变换的应用——图像去噪
给出的图片是RGB图片,也就是需要有三个通道。
下面的函数用来去噪。
img=np.uint8(cv2.fastNlMeansDenoisingColored(img,None,10,10,7,21))
对这个图片进行局部自适应二值化处理:
img=hui(img)
th1 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,31,5)
另一种局部自适应二值化处理:
th2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,31,5)
在第一步连续执行两次去噪,得到的三幅图片是:
执行三次降噪。
连续10次降噪。
10. 如何根据噪声类型选择不同的去噪方法;
图像在采集和传输中会不可避免的受到噪声的污染,影响人们对图像的理解和分析处理。图像去噪的目的就是滤除噪声,减少噪声的影响,使图像信息更加真实的呈现。本文简单介绍了图像噪声的分类及常用的图像的去噪方法,对传统的中值滤波方法进行了分析,并针对传统的中值滤波方法存在的不足,提出自适应中值滤波方法,并在MATLAB软件上进行了编程和仿真。结果表明自适应中值滤波方法对噪声密度较大的图像比传统中值滤波有更好的滤波效果。
本文第一章对数字图像处理常用方法,图像噪声的分类和主要去噪方法等基础知识做了介绍,并对MATLAB软件发展主要组成和功能进行了概括,同时对用于图像处理的MATLAB主要函数进行了介绍。第二章对图像的中值滤波方法的原理和算法进行介绍,并分析其不足,提出自适应中值滤波器的设计。第三章对自适应中值滤波器的原理和设计算法做了分析,并在MATLAB软件上进行了编程和仿真,对处理结果进行比对、归纳。最后,对本论文做了总结。