23、图像滤波

图像的平滑是一种是用的而数字图像处理技术,主要目的是为了减少图像中的噪声,一般情况下,在空间域内可以用领域平均来减少噪声;在频率域,由于噪声频谱通常在高频段,因此可以采用各种形式的低通滤波的方法俩较少噪声。下面介绍空间域的滤波。

一、图像的平滑

1、smooth_image(Image : ImageSmooth : Filter, Alpha : )

    功能:使用递归滤波器对图像进行平滑(高斯滤波使用非递归滤波器)

    Filter:滤波器('deriche1', 'deriche2', 'shen', 'gauss'

    Alpha:滤波参数,值越小滤波效果越好(高斯滤波刚好相反)

    read_image(Image,'lena')

smooth_image (Image, ImageSmooth, 'gauss', 3)

2、sigma_image(Image : ImageSigma : MaskHeight, MaskWidth, Sigma : )

    功能:使用sigma(标准方差)对图像进行非线性滤波。

    MaskHeight, MaskWidth:掩膜的宽度和高度

    Sigma:平均的最大偏差,值越大,滤波效果越好

    read_image(Image,'lena')

sigma_image (Image, ImageSigma, 5, 5, 3)

3、mean_image(Image : ImageMean : MaskWidth, MaskHeight : )

    功能:对图像进行均值滤波

    MaskWidth, MaskHeight:掩膜的宽度和高度

4、gauss_image(Image : ImageGauss : Size : )

    功能:使用离散高斯函数对图像进行滤波

    Size:滤波尺寸(3, 5, 7, 9, 11)值越大过过滤效果越好

    read_image(Image,'lena')

gauss_image (Image, ImageGauss, 9)

二、中值滤波

中值滤波是一种非线性的信号处理方法,在一定条件下可以克服线性滤波器如最小均方差滤波,均值滤波等带来的图像细节模糊,二姐对滤除脉冲干扰以及图像扫描噪声最为有效。对于一些细节多,特别是点、线、顶尖细节多的图像不易采用中值滤波。中值滤波采用一个滑动窗口,将窗口中各灰度值得中值来代替指定点(一般是窗口的中心)灰度值。对于奇数个元素,中值是指按大小排序后,中间的数值;对于偶数个元素,中值是排序后中间两个元素灰度值得平均值。

1、median_image(Image : ImageMedian : MaskType, Radius, Margin : )

    功能:使用多种掩膜对图像进行中值滤波

    MaskType:滤波掩膜种类('circle', 'square'

    read_image(Image,'lena')

median_image (Image, ImageMedian, 'circle', 7, 'mirrored')

    中值滤波缺点:效率低。

三、图像的锐化

在图像增强过程中,通常利用各类图像平滑算法消除噪声,图像的常见噪声主要有加性噪声、乘性噪声和量化噪声等。一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要是高频段,同时图像边缘信息页主要集中在其高频部分。这将导致原始图像在平滑处理时,图像边缘和图像轮廓变得比原来更加模糊的情况出出现,为了减少这类不利效果,就需要利用图像锐化技术,是图像的边缘变得更加清晰。图像锐化处理的目的是为了是图像边缘、轮廓线已经图像中的细节变得更加清晰,经过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使得图像变得更加清晰。微分运算时求信号的变化率,由傅里叶变换的微分性质可知道,微分运算具有较强高频分量作用。从频率域来考虑,图像模糊的实质是因为高频分量被衰减,因此可以用高通滤波来使图像更加清晰。但要注意能够进行锐化处理的图像必须有较高的信噪比,否则锐化后的图像信噪比反而耕地,从而使得噪声增加比信号还要多,因此一般是先除或减轻噪声后在进行锐化处理

图像的锐化的方法分为高通滤波和空域微分法。图像边缘或线条的细节(边缘)部分与图像频谱的高频分量相对应,

因此采用高通滤波让高频分量顺利通过,并适当抑制中低频分量,使得图像的细节变得更加清楚,实现图像的锐化。下面主要介绍空域的方法-----微分法。

1、frei_amp(Image : ImageEdgeAmp : : )

    功能:使用Frei-Chen方法检测边缘(振幅,幅度)

    read_image(Image,'lena')

 

rgb1_to_gray (Image, GrayImage)

median_image (GrayImage, ImageMedian, 'circle', 5, 'mirrored')

 

frei_amp (ImageMedian, ImageEdgeAmp)

2、kirsch_amp(Image : ImageEdgeAmp : : )

    功能:使用Kirsh方法检测边缘(振幅,幅度)

    read_image(Image,'lena')

 

rgb1_to_gray (Image, GrayImage)

median_image (GrayImage, ImageMedian, 'circle', 5, 'mirrored')

 

kirsch_amp (ImageMedian, ImageEdgeAmp1)

3、prewitt_amp(Image : ImageEdgeAmp : : )

    功能:使用Prewitt方法检测边缘(振幅,幅度)

    read_image(Image,'lena')

 

rgb1_to_gray (Image, GrayImage)

median_image (GrayImage, ImageMedian, 'circle', 5, 'mirrored')

 

prewitt_amp (ImageMedian, Pre)

    

4、sobel_amp(Image : EdgeAmplitude : FilterType, Size : )

    功能:

read_image(Image,'lena')

 

rgb1_to_gray (Image, GrayImage)

sobel_amp (ImageMedian, Sob, 'sum_abs', 9)

5、nonmax_suppression_amp(ImgAmp : ImageResult : Mode : )

    功能:抑制边缘上的非极大值点。

    read_image(Image,'lena')

rgb1_to_gray (Image, GrayImage)

nonmax_suppression_amp (GrayImage, ImageResult, 'loc_max')

四、图像增强

1、emphasize(Image : ImageEmphasize : MaskWidth, MaskHeight, Factor : )

    功能:增强图像对比度,算子增加图像的高频区域(边缘或角),由此产生的图像看起来更加清晰。

    简单原理:

        (1)、先使用mean_image算子进行低通滤波,滤波的掩膜尺寸为MaskWidth * MaskHeight

        (2)、假设和原始图像中的像素值为orig , mean_image滤波后灰度值为mean , 结果图像灰度值为res,

             则:

                    res = round((orig – mean)*Factor) + orig

                        其中Factor为系数,round()为四舍五入取整

    read_image(Image,'mreut')

dev_display (Image)

draw_region(Region,3600)

reduce_domain(Image,Region,Mask)

emphasize(Mask,Sharp,7,7,2.0)

dev_display (Sharp)

2、illuminate(Image : ImageIlluminate : MaskWidth, MaskHeight, Factor : )

    功能:增强图像的对比度。图像很暗的部分可以变得更亮,很亮的部分可以变得更暗。

    简单原理:

        (1)、先使用mean_image算子进行低通滤波,滤波的掩膜尺寸为MaskWidth * MaskHeight

        (2)、假设和原始图像中的像素值为orig , mean_image滤波后灰度值为mean , 结果图像灰度值为new,

             对于位图val为127,则:

                    new = round((val – mean)*Factor) + orig

                        其中Factor为系数值如下表

    read_image(Image,'mreut')

dev_display (Image)

draw_region(Region,3600)

reduce_domain(Image,Region,Mask)

illuminate (Mask, ImageIlluminate, 101, 101, 0.7)

dev_display (ImageIlluminate)

posted @ 2022-05-08 23:09  ihh2021  阅读(781)  评论(0编辑  收藏  举报