2019-03-22 16:43:18 weixin_41284599 阅读数 3600
  • Java经典算法讲解

    在面试中,算法题目是必须的,通过算法能够看出一个程序员的编程思维,考察对复杂问题的设计与分析能力,对问题的严谨性都能够体现出来。一个算法的好坏,直接影响一个方法调用的性能,进而影响软件的整体性能。算法是学习所有编程语言的基础,在Java的学习过程中首先也会选择以算法起步,本次课程重点讲解Java开发中常用的基本算法。

    30389 人正在学习 去看看 张中强

图像降噪算法总结

分析各种算法的优点和缺点

1、BM3D 降噪
2、DCT 降噪
3、PCA 降噪
4、K-SVD 降噪
5、非局部均值降噪
6、WNNM 降噪
7、基于主成分分析和双边滤波的图像降噪算法
8、小波变换
9、小波阈值降噪
10、Contourlet 变换
11、基于平移不变 Contourlet 变换的 SAR 图像降噪
**

1、BM3D 降噪
BM3D 是一种降噪方法提高了图像在变换域的稀疏表示。BM3D 降噪方法的优点是更好的保留图像中的一些细节,BM3D采用了不同的去噪策略。通过搜索相似块并在变换域进行滤波,得到块评估值,最后对图像中每个点进行加权得到最终去噪效果。 
原理:首先将一幅图像分割成尺寸较小的小像素片,选定参考片后,寻找与参考片相似的小片组成 3D 块。此过程过后将得到 3D 块。然后将所有相似块进行 3D 变换。将变换后的 3D 块进行阈值收缩,这也是除去噪声的过程。然后进行 3D 逆变换。最后将所有的 3D 块通过加权平均后还原到图像中。
BM3D算法的大致流程:
第1步. 初始估计
(1)逐块估计。对含噪图像中的每一块 
 (i)分组。找到它的相似块然后把它们聚集到一个三维数组。 
(ii)联合硬阈值。对形成的三维数组进行三维变换,通过对变换域的系数进行硬阈值处理减弱噪声,然后逆变换得到组中所有图像块的估计值,然后把这些估计值返回到他们的原始位置。
(2)聚集。对得到的有重叠的块估计,通过对他们进行加权平均得到真实图像的基础估计。 
第2步. 最终估计
(1)逐块估计。对基础估计图像中的每一块 
  (i) 分组。通过块匹配找到与它相似的相似块在基础估计图像中的位置,通过这些位置得到两个三维数组,一个是从含噪图像中得到的,一个是从基础估计图像中得到的。 
   (ii)联合维纳滤波。对形成的两个三维数组均进行三维变换,以基础估计图像中的能量谱作为能量谱对含噪三维数组进行维纳滤波,然后逆变换得到组中所有图像块的估计,然后把这些估计值返回到他们的原始位置。
(2)聚集。对得到的有重叠的局部块估计,通过对他们进行加权平均得到真实图像的最终估计。

2、DCT 降噪
DCT 变换是正交变换。这个方法是对滑动的窗口内的图像做 DCT 变换,在局部变换域做系数收缩。由滑动窗口产的重叠部分满足图像的过完备表示。如果采用的变换不能将普通图像的细节过完备表示,那么这种变换的过完备性就不能抵消无效的收缩。因此只使用二维变换获得稀疏表示只适于特定的图像模式。
B-DCT图像降噪方法一般是处理逐像素滑动的窗口得到的像素矩阵,对矩阵做二维DCT变换,(这以过程可以看作是在矩阵左右两侧同时乘正交矩阵,左乘的矩阵相当于对像素矩阵做列DCT变换,右乘的正交矩阵相当于对像素矩阵做行DCT变换)在变换域中对系数进行硬阈值收缩,然后对收缩后的矩阵做二维DCT逆变换。与B-DCT变换不同的是 SA-DCT变换可以对任意形状的像素片做DCT变换,它的方法是分别对每行和每列做一维DCT变换做完后进行系数收缩,然后再相应一维 DCT 变换的顺序做逆变换。
形状自适应变换域系数收缩降噪方法面临两点问题:1、变换能否适应像素片形状,2、像素片形状是否适应图像的纹理特点。PSA-DCT 方法针对第二点采用 LPA-ICI 方法获得与图像纹理特点对应的像素小片。实验虽然获得了较好的降噪效果,但是 DCT 变换降噪这种方法本质上的问题:1、由于是逐像素滑动变换动窗口带来的数据存储和 DCT 变换计算量较大。2、还有DCT变换基底并没有将自然图像信息与噪声做出良好的分割导致了这类方法的局限性。

3、PCA 降噪
PCA应用于图像降噪的方法的提出克服了标准正交变换带来的缺点,这种方法对于高结构性的图像细节都有很好的结果。但是由于噪声的存在势必影响主成分分析的准确性。

4、K-SVD 降噪
K-SVD降噪方法解决了固定变换矩阵基底不能自适应图像纹理信息的缺点,,这种算法的缺点是更新字典的计算量较大。
5、非局部均值降噪
早期的降噪方法一般为局部平滑滤波方法,例如,高斯滤波降噪,局部均值滤波降噪。这类方法很难处理图像的非平滑部分,像添加的噪声和图像的纹理信息,去噪的同时不能有效保留纹理信息。非局部均值降噪方法就为解决这一问题。

6.WNNM 降噪
设y=x+n,y是含噪声的图像,x是清晰图像,n是均值为零标准差为σ_n的高斯白噪声。y中局部小片yj,在y寻找yj的相似片,形成矩阵Yj,我们就 Yj=Xj+Nj,Xj和Nj是原图像和噪声形成的矩阵,Xj是一个低阶矩阵,通过这个性质可以解析下式达到降噪的目的:
在这里插入图片描述
这是一个WNNM问题,可以通过收缩Yj的奇异值方法解得。首先对Yj做SVD分解,得到特征矩阵U和V还有奇异值矩阵Σ. 对每个奇异值Σij减去权值??,
即Sw (Σ)ij=max(Σ_ii-wi,0),权值w与Xj的奇异值有关,记Xj的奇异值为:
大的奇异值为Xj的主成分,收缩的少。在这里插入图片描述
小的奇异值收缩的
在这里插入图片描述
7、基于主成分分析和双边滤波的图像降噪算法
方法主要分为两步进行处理。第一步首先采用局部像素块匹配算法选出 PCA 的训练样本集,然后应用主成分分析法滤除绝大部分的高斯噪声,第二步对系数收缩重构图像的残余噪声方差进行估计,然后将一步去噪后的图像输入自适应双边滤波器中,最后输出降噪后的图像。
8、小波变换
小波变换作为一种新的时频分析方法,具有多尺度、多分辨率分析的特点,为信号处理提供了一种新的强有力手段。小波变换在图像降噪领域的成功应用主要得益于其具有低熵性、多分辨率特性、去相关性和选基灵活性的优点。
小波降噪本质上是一个信号的滤波问题,实际上是特征提取和低通滤波的综合。波降噪的处理流程是:首先对含有噪声的信号进行多尺度小波变换,在各尺度下尽可能提取出小波系数,最后利用逆小波变换重构信号。

9、小波阈值降噪
信号通常是低频或者平稳信号的形式,而噪声一般都是高频信号,所以降噪的过程也就是滤除高频信号的一个过程,小波阈值降噪就是利用的这一原理。
小波阈值降噪方法就是通过设置某种阈值,将小波系数与阈值进行比较,将小于阈值的系数设置为 0,而对大于阈值的小波系数,通过某种阈值函数(也称阈值规则)进行修正得到其估计系数。阈值的确定是最为关键的问题。阈值的选择对降噪效果有着很大的影响,如果阈值太小,降噪后的信号仍然有噪声存在,反之,阈值太大则重要的图像特征又将被滤除,造成图像模糊,阈值的选择始终是在抑制噪声和保护图像细节之间折中。目前应用较多的阈值方法包括针对多维正态变量联合分布的 Visushrink 阈值方法、利用均方差准则的无偏估计的 Sureshrink 阈值方法、利用贝叶斯最大后验概率估计理论的 Mapsbrink 阈值方法、利用邻域信息的分块阈值方法等。
10、Contourlet 变换
Contourlet 变换是一种多分辨率、多方向的图像稀疏表示方法。它能够用少量的系数有效地表示图像中的轮廓等重要特征。它主要利用了拉普拉斯塔形分解和方向滤波器组来实现图像的稀疏表示。
①改进阈值法:改进阈值法主要有两种改进方法,第一种就是对阈值的选取进行改进,改进后仍然是一个硬阈值,这种方法与全局阈值法有所不同,它是根据系数及其领域系数的关系来计算出阈值,这种方法在一定程度上改善了降噪效果,但是该方法的阈值选取具有一定的随机性,降噪效果不稳定。第二种就是自适应的阈值方法,如引入高频能量比来不断更新阈值,但是这种改进的阈值方法也有一定的缺陷,因为它只是在全局阈值的基础上加了一个调节因子,得到的阈值时不够准确的,降噪效果不是很理想,也会损失图像的细节信息。
②Wiener 滤波:在 Contourlet 分解的基础上加入了 Wiener 滤波这一步骤,它的原理是对 Contourlet 分解的高频系数进行椭圆窗口的 Wiener 滤波;利用自适应窗口的 Wiener 滤波对 Contourlet 分解得到的高频子带进行滤波。
③建模法:据高频系数及其邻域系数的相关性,对这些系数进行 HMT 建模,然后应用到图像中对图像进行降噪处理;对信号方差进行最优估计,然后对图像进行阈值去噪。此类方法的优点是利用了系数间的相关性,缺点是并没有充分利用系数间的相关性。
④改进 Contourlet 降噪算法由于 Contourlet 变换的下采样操作导致 Contourlet没有平移不变性,LP 滤波器组缺乏局部化能力,这使 DFB 频谱中出现了频谱混叠。抗混叠 Contourlet 变换对 LP 的滤波器组进行了一些改进,采用可分离低通滤波器以及满足 Nyquist 抽样定律的高通滤波器来代替 Contourlet 中的 LP 滤波器组,图像通过高通滤波器后级联 DFB,这样使各方向的子带中无法出现由多尺度分解造成的频谱混叠,抑制了频谱混叠问题。
11、基于平移不变 Contourlet 变换的 SAR 图像降噪
Contourlet 变换会在重构图像中会出现严重的划痕原因是Contourlet 变换在 LP 和 DFB 分解中采用了下采样操作,导致了局部性不够理想,不能够平移不变 。 鉴于这个原因,本文采用了 Eslami 提出的平移不变 Contourlet变换(TICT),该变换克服了 Contourlet 不能够平移不变的缺点,不仅能很好的抑制噪声,还能达到更强的鲁棒性。

2017-12-16 17:36:21 u012123989 阅读数 16663
  • Java经典算法讲解

    在面试中,算法题目是必须的,通过算法能够看出一个程序员的编程思维,考察对复杂问题的设计与分析能力,对问题的严谨性都能够体现出来。一个算法的好坏,直接影响一个方法调用的性能,进而影响软件的整体性能。算法是学习所有编程语言的基础,在Java的学习过程中首先也会选择以算法起步,本次课程重点讲解Java开发中常用的基本算法。

    30389 人正在学习 去看看 张中强

python数字图像处理-图像噪声与去噪算法

figure_1.png

图像噪声

椒盐噪声

概述: 椒盐噪声(salt & pepper noise)是数字图像的一个常见噪声,所谓椒盐,椒就是黑,盐就是白,椒盐噪声就是在图像上随机出现黑色白色的像素。椒盐噪声是一种因为信号脉冲强度引起的噪声,产生该噪声的算法也比较简单。

给一副数字图像加上椒盐噪声的步骤如下:

  1. 指定信噪比 SNR (其取值范围在[0, 1]之间)
  2. 计算总像素数目 SP, 得到要加噪的像素数目 NP = SP * (1-SNR)
  3. 随机获取要加噪的每个像素位置P(i, j)
  4. 指定像素值为255或者0。
  5. 重复3,4两个步骤完成所有像素的NP个像素
  6. 输出加噪以后的图像

高斯噪声

概述: 加性高斯白噪声(Additive white Gaussian noise,AWGN)在通信领域中指的是一种功率谱函数是常数(即白噪声), 且幅度服从高斯分布的噪声信号. 这类噪声通常来自感光元件, 且无法避免.

去噪算法

中值滤波

概述: 中值滤波是一种非线性空间滤波器, 它的响应基于图像滤波器包围的图像区域中像素的统计排序, 然后由统计排序结果的值代替中心像素的值. 中值滤波器将其像素邻域内的灰度中值代替代替该像素的值. 中值滤波器的使用非常普遍, 这是因为对于一定类型的随机噪声, 它提供了一种优秀的去噪能力, 比小尺寸的均值滤波器模糊程度明显要低. 中值滤波器对处理脉冲噪声(也称椒盐噪声)非常有效, 因为该噪声是以黑白点叠加在图像上面的.

与中值滤波相似的还有最大值滤波器和最小值滤波器.

均值滤波

概述: 均值滤波器的输出是包含在滤波掩模领域内像素的简单平均值. 均值滤波器最常用的目的就是减噪. 然而, 图像边缘也是由图像灰度尖锐变化带来的特性, 所以均值滤波还是存在不希望的边缘模糊负面效应.

均值滤波还有一个重要应用, 为了对感兴趣的图像得出一个粗略描述而模糊一幅图像. 这样, 那些较小物体的强度与背景揉合在一起了, 较大物体变得像斑点而易于检测.掩模的大小由即将融入背景中的物体尺寸决定.

代码

https://github.com/wangshub/python-image-process

2017-03-30 00:08:25 jaych 阅读数 10444
  • Java经典算法讲解

    在面试中,算法题目是必须的,通过算法能够看出一个程序员的编程思维,考察对复杂问题的设计与分析能力,对问题的严谨性都能够体现出来。一个算法的好坏,直接影响一个方法调用的性能,进而影响软件的整体性能。算法是学习所有编程语言的基础,在Java的学习过程中首先也会选择以算法起步,本次课程重点讲解Java开发中常用的基本算法。

    30389 人正在学习 去看看 张中强

本文参考论文:Denoising image sequences does not require motion estimation
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.131.6394&rep=rep1&type=pdf

这篇论文主要写的是如何利用多帧图像进行降噪处理。

论文主要从以下几个部分展开:
1、NLmeans
先是介绍了non local means降噪算法。该算法之前有介绍过,主要是通过单帧图像中的冗余信息来进行降噪处理。通过在一帧图像中查找当前像素的相似像素点,然后对这些像素进行加权平均操作。评判是否相似可以有多种方式,基于L2或者高斯核等等。

2、把nlmeans引申到多帧场景。
多帧场景中,在不同帧的类似像素点位置,总是能够找到类似的像素点,因此,通过这些像素点的加权平均,我们也可以得到较为干净的图像。
作者表示这样的操作可以避免运动估计处理,运动估计不仅费时,而且如果存在误差,对于结果则会适得其反。而查找类似像素点的方式并不会严格要求图像对齐。

3、多帧降噪与其他算法对比
其他算法包括光流法、模版匹配法进行运动估计的算法。

总的来说,这篇论文还是比较好理解的。关键在于如何压缩算法复杂度,怎样保证快速高效才是重点。该算法可以运用在video denoising的场景,但是如何达到实时,还需要不断的尝试。后续在这方面有进展再进行更新。

2015-07-11 16:26:06 u011675242 阅读数 7860
  • Java经典算法讲解

    在面试中,算法题目是必须的,通过算法能够看出一个程序员的编程思维,考察对复杂问题的设计与分析能力,对问题的严谨性都能够体现出来。一个算法的好坏,直接影响一个方法调用的性能,进而影响软件的整体性能。算法是学习所有编程语言的基础,在Java的学习过程中首先也会选择以算法起步,本次课程重点讲解Java开发中常用的基本算法。

    30389 人正在学习 去看看 张中强

 空间域图像去噪算法

 

       图像去噪希望使用图像自身的冗余信息来去除图像噪声但不影响图像细节。但常常两者不可兼得。下面主要介绍基于空间域高斯加权的三种去噪算法,分别为高斯滤波算法,双边滤波和非局部均值滤波。下面将从滤波方法,滤波性能以及计算复杂度角度分析各个滤波器。

 

高斯滤波 gaussian filter:

        高斯滤波是根据邻域间像素距离大小的高斯加权来分配权重,具体公式如下

2D高斯函数

   

3D高斯核函数

   

       对二维高斯函数核进行傅里叶变换,可以发现其实高斯滤波是一种低通滤波器。当sigma取值逐渐变大的过程,高斯的傅里叶变换频率宽度逐渐变小,也即是滤除了更多的高频信号。

       滤波性能:对图像高斯噪声等具有较好的滤除效果,但对图像的细节有较大的损坏。

 

双边滤波 bilateral filter:

      双边滤波是在高斯滤波的基础上根据图像像素值间相似度来进一步修改加权权重。

     具体的权重计算有两部分组成,分别为根据邻域像素位置差异计算的权重,即定义域核,该部分就是高斯滤波的函数核:

        

      根据邻域像素值差异计算的权重,即值域核:

       

最后的权重:

       

       滤波性能:双边滤波通过增加值域核来校正高斯滤波核,在一定程度上改变了细节部分的函数核,较单纯的高斯滤波算法,双边滤波在满足去除噪声的基础上保证了一定程度对细节部分的识别与保留。

 

非局部均值滤波 nonlocal mean filter:

       非局部均值滤波是Buades等 在2005年提出的一种滤波方法。其基本思想是根据图像的自相似性来计算邻域像素的权重。

       NML算法首先需要选取两个窗,分别为相似窗和搜索窗,相似窗被选取用于比较两个像素的相似性,搜索窗被选择用于确定计算相似像素的范围。中心像素i与其邻域的像素j之间的相似性权重是根据两像素相似窗高斯加权的欧式距离决定,公式如下:

        

       非局部均值滤波有与双边滤波相比,非局部均值根据具有一定大小的图像片之间的相似性来决定两像素的相似性,较双边滤波可以更好的识别图像的细节。但非局部均值算法的滤波参数h比较难调,h控制衰减的速度,如果没有过大的衰算法会退化为均值滤波,过小的衰减算法又会没有平滑效果,一般h参数的选择会参照图像噪声的标准差。

 

 参考文献

BUADESA,COLL B,MOREL J M. A review of image denoising algorithms,with a new one.

 

2014-12-18 20:39:59 aidem_brown 阅读数 6687
  • Java经典算法讲解

    在面试中,算法题目是必须的,通过算法能够看出一个程序员的编程思维,考察对复杂问题的设计与分析能力,对问题的严谨性都能够体现出来。一个算法的好坏,直接影响一个方法调用的性能,进而影响软件的整体性能。算法是学习所有编程语言的基础,在Java的学习过程中首先也会选择以算法起步,本次课程重点讲解Java开发中常用的基本算法。

    30389 人正在学习 去看看 张中强

图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响到后续的图像处理工作如图像分割、边缘检测等。图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生)、椒盐噪声(主要是图像切割引起的黑图像上的白点噪声或光电转换过程中产生的泊松噪声)等;
目前比较经典的图像去噪算法主要有以下三种:
均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊,可以对其进行改进,主要避开对景物边缘的平滑处理。
中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。
Wiener维纳滤波:使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。对于去除高斯噪声效果明显。

实验一:均值滤波对高斯噪声的效果

复制代码
I=imread('C:\Documents and Settings\Administrator\桌面\1.gif');%读取图像

J
=imnoise(I,'gaussian',0,0.005);%加入均值为0,方差为0.005的高斯噪声

subplot(
2,3,1);imshow(I);

title(
'原始图像');

subplot(
2,3,2); imshow(J);

title(
'加入高斯噪声之后的图像');

%采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波

K1
=filter2(fspecial('average',3),J)/255; %模板尺寸为3

K2
=filter2(fspecial('average',5),J)/255;% 模板尺寸为5

K3
=filter2(fspecial('average',7),J)/255; %模板尺寸为7

K4
= filter2(fspecial('average',9),J)/255; %模板尺寸为9

subplot(
2,3,3);imshow(K1);

title(
'改进后的图像1');

subplot(
2,3,4); imshow(K2);

title(
'改进后的图像2');

subplot(
2,3,5);imshow(K3);

title(
'改进后的图像3');

subplot(
2,3,6);imshow(K4);

title(
'改进后的图像4');
复制代码
PSfilter2用法
fspecial函数用于创建预定义的滤波算子,其语法格式为:
h = fspecial(type)
h = fspecial(type,parameters)
参数type制定算子类型,parameters指定相应的参数,具体格式为:
type='average',为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为[3,3]
type= 'gaussian',为高斯低通滤波器,参数有两个,n表示模版尺寸,默认值为[3,3]sigma表示滤波器的标准差,单位为像素,默认值为
0.5
type= 'laplacian',为拉普拉斯算子,参数为alpha,用于控制拉普拉斯算子的形状,取值范围为[0,1],默认值为0.2
type= 'log',为拉普拉斯高斯算子,参数有两个,n表示模版尺寸,默认值为[3,3]sigma为滤波器的标准差,单位为像素,默认值为0.5
type= 'prewitt'
,为prewitt算子,用于边缘增强,无参数。

type= 'sobel',为著名的sobel算子,用于边缘提取,无参数。
type= 'unsharp',为对比度增强滤波器,参数alpha用于控制滤波器的形状,范围为[0,1],默认值为0.2
运行效果见图1

据我目测,使用均值滤波去噪(高斯噪声)效果选用的邻域半径越大效果越好,当然其代价也会更大,另外确切的去噪效果的好坏还需要用SNR等数据来度量。
实验二:二维自适应维纳滤波对高斯噪声的滤除效果
复制代码
I=imread('C:\Documents and Settings\Administrator\桌面\1.gif'); %读取图像

J
=imnoise(I,'gaussian',0,0.005); %加入均值为0,方差为0.005的高斯噪声

K2
=wiener2(J,[3 3]); %对加噪图像进行二维自适应维纳滤波

K2
=wiener2(J,[5 5]); %对加噪图像进行二维自适应维纳滤波

K2
=wiener2(J,[7 7]); %对加噪图像进行二维自适应维纳滤波

K2
=wiener2(J,[9 9]); %对加噪图像进行二维自适应维纳滤波

subplot(
2,3,1);imshow(I);

title(
'原始图像');

subplot(
2,3,2);imshow(J);

title(
'加噪图像');

subplot(
2,3,3);imshow(K1);

title(
'恢复图像1');

subplot(
2,3,4);imshow(K2);

title(
'恢复图像2');

subplot(
2,3,5);imshow(K3);

title(
'恢复图像3');

subplot(
2,3,6);imshow(K4);

title(
'恢复图像3');
复制代码
PS维纳滤波的两个函数wiener2deconvwnr都能够完成维纳滤波的功能, deconvwnr强调图象复原方面,wiener2强调图象空间域锐化的作用,其中J=wiener2(I,[m,n])返回有噪声图像I经过wierner(维纳)滤波后的图像,[m,n]指定滤波器窗口大小为m*n,默认值为3*3J=wiener2(I,[m,n],noise)指定噪声的功率,[J,noise]=wiener2(I,[m,n])在图像滤波的同时,返回噪声功率的估计值noise
imnoise的语法格式为
J = imnoise(I,type)
J = imnoise(I,type,parameters)
其中J = imnoise(I,type)返回对原始图像I添加典型噪声的有噪图像J
参数typeparameters用于确定噪声的类型和相应的参数。
下面的命令是对图像1.gif分别加入高斯噪声、椒盐噪声和乘性噪声,其结果如图所示
实验三:对加入椒盐噪声的图像分别作均值、中值和维纳滤波

******************************************************************************************************************************************

红:数字图像处理视频教程(两部)

{中科院版36讲视频教程 + 电子科大版70讲视频教程(冈萨雷斯 第二版)}
    橙:halcon软件、halcon软件手把手教破解视频教程
    黄:数字图像模式识别demo(C++编写,在公司也是用C++哦)
    绿:halcon软件视频教程、halcon软件在vs2010中配置
    青:面向对象C++视频教程
    蓝:MFC C++视频教程
    紫:海量相关文档资料
    http://item.taobao.com/item.htm?spm=a1z10.3.w4002-9510581636.11.VUYzOY&id=43025290175

******************************************************************************************************************************************


复制代码
I=imread(1.gif');
J1=imnoise(I,'gaussian',0,0.02);
J2
=imnoise(I,'salt & pepper',0.02);
J3
=imnoise(I,'speckle',0.02);

运行效果见图2

I
=imread('C:\Documents and Settings\Administrator\桌面\1.gif');

J
=imnoise(I,'salt & pepper',0.02);

%h=ones(3,3)/9;%产生3*3的全1数组

%B=conv2(J,h);%卷积运算

K2
=filter2(fspecial('average',3),J)/255; %均值滤波模板尺寸为3

K
= medfilt2(J);%采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波

K1
=wiener2(J,[3 3]); %对加噪图像进行二维自适应维纳滤波

subplot(
2,3,1);imshow(I);

title(
'原始图像');

subplot(
2,3,2);imshow(J);

title(
'加噪图像');

subplot(
2,3,3);imshow(K2);

title(
'均值滤波后的图像');

subplot(
2,3,4);imshow(K);

title(
'中值滤波后的图像');

subplot(
2,3,5);imshow(K1);

title(
'维纳滤波后的图像');
复制代码
PSMATLAB中提供了卷积运算的函数命令conv2,其语法格式为:
  C = conv2(A,B)
C = conv2(A,B)
返回矩阵AB的二维卷积C。若Ama×na的矩阵,Bmb×nb的矩阵,则C的大小为(ma+mb+1)×(na+nb+1)
MATLAB图像处理工具箱提供了基于卷积的图象滤波函数filter2filter2的语法格式为:
Y = filter2(h,X)
其中Y = filter2(h,X)返回图像X经算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。例如:
其实filter2conv2是等价的。MATLAB在计算filter2时先将卷积核旋转180度,再调用conv2函数进行计算。
Fspecial函数用于创建预定义的滤波算子,其语法格式为:
h = fspecial(type)
h = fspecial(type,parameters)
参数type制定算子类型,parameters指定相应的参数,具体格式为前文已有叙述。
ones产生全1数组,zeros产生全零数组。
ones(a,b)产生ab列全1数组
ones(a)产生aa列全1叔祖
运行效果见图3

通过图3我们也可得出结论,即中值滤波对于去除椒盐噪声效果最好,而维纳滤波去除效果则较差。中值滤波对于去除椒盐噪声效果明显,是因为椒盐噪声只在画面上的部分点随机出现,而中值滤波根据数据排序,将未被污染的点代替噪声点的值的概率较大,所以抑制效果好。对点、线和尖顶较多的图像不宜采用中值滤波,因为一些细节点可能被当成噪声点。
实验四: 分别使用二维统计滤波对椒盐噪声和高斯噪声进行滤波
复制代码
I=imread('C:\Documents and Settings\Administrator\桌面\1.gif');

J1
=imnoise(I,'salt & pepper',0.004);

subplot(
2,3,1);imshow(I);

title(
'原始图像');

subplot(
2,3,2);imshow(J1);

title(
'加椒盐噪声后的图像');

J
= ordfilt2(J1,5,ones(3,4));% 进行二维统计顺序过滤

subplot(
2,3,3);imshow(J);

title(
'椒盐噪声滤波后的图像');

J2
=imnoise(I,'gaussian',0,0.004);

subplot(
2,3,4);imshow(J2);

title(
'加高斯噪声后的图像');

J3
= ordfilt2(J2,5,ones(3,4));

subplot(
2,3,5);imshow(J3);

title(
'高斯噪声滤波后的图像');
复制代码
PS:
效果见图4

PSMATLAB小波分析工具箱提供的用于图像去噪的函数有wrcoef2wpdencmp,其语法格式分别为:
X=wrcoef2(‘type’,C,S,’wname’)
[xd,treed,datad,perf0,perfl2]=wpdencmp(x,sorh,N,’wname’,crit,par,keepapp)
其中,X=wrcoef2(‘type’,C,S,’wname’)返回基于小波分解结构[C,S]的小波重构图像X。参数“type”等于a表示重构近似系数;等于h表示重构水平细节系数;等于v表示重构垂直细节系数,等于d表示重构对角细节系数。
[xd,treed,datad,perf0,perfl2]=wpdencmp(x,sorh,N,’wname’,crit,par,keepapp)是通过小波包定限(阈值化),返回输入信号或图像X的除噪结果xd。输入参数中,[treed,datad]为xd的最佳小波包分解结构;perfl2perf0表示L^2复原和压缩百分数;perf12=100*(xd的小波包系数向量范数/X的小波包系数向量范数) ^2Keepapp=1表示近似系数不能阈值化,否则可以阈值化;sorh=’s’为软阈值化,h为硬阈值化。
没有更多推荐了,返回首页