空间滤波器_滤波器空间 - CSDN
  • 一、平滑空间滤波器1. 平滑线性滤波器(均值滤波器)2. 统计排序(平滑非线性)滤波器二、锐化空间滤波器1. 基础2. 拉普拉斯(Laplacian)算子3. 罗伯特交叉梯度(Roberts)算子4. Sobel算子三、彩色图像的平滑和...

    一、平滑空间滤波器

          平滑滤波器用于模糊处理和降低噪声。模糊处理经常用于预处理任务中。通过线性滤波和非线性滤波模糊处理,可以降低噪声。

    1. 平滑线性滤波器(均值滤波器)

          平滑线性空间滤波器的输出(响应)是包含在滤波器模板邻域内的像素的简单平均值。这些滤波器有时也称为均值滤波器。
          令 SxyS_{xy} 表示中心在点 (x,y)(x,y) 处、大小为 m×nm\times n 的矩形子图像窗口(邻域)的一组坐标。
    ① 算术均值滤波器
          一副 M×NM\times N 图像经过一个 m×nm \times nmmnn 是奇数)的算术均值滤波器的过程可由下式给出:
    g(x,y)=1mn(x,y)Sxyf(x,y)g(x,y) = {1\over{mn}}\sum_{(x,y)\in S_{xy}} f(x,y)
    经过一个 m×nm \times nmmnn 是奇数)的加权均值滤波器的过程可由下式给出:
    g(x,y)=s=aat=bbw(s,t)f(x+s,y+t)s=aat=bbw(s,t)g(x,y) = {{\sum_{s=-a}^a\sum_{t=-b}^bw(s,t)f(x+s,y+t)}\over{\sum_{s=-a}^a\sum_{t=-b}^bw(s,t)}}

    ② 几何均值滤波器
    g(x,y)=[(x,y)Sxyf(x,y)]1mng(x,y) = [\prod_{(x,y)\in S_{xy}} f(x,y)]^{1\over{mn}}

    ③ 谐波均值滤波器
    g(x,y)=mn(x,y)Sxy1f(x,y)g(x,y) = {{mn}\over{\sum_{(x,y)\in S_{xy}}{1\over{f(x,y)}}}} 谐波均值滤波器对于盐粒噪声效果较好,但不适用于胡椒噪声。它善于处理像高斯噪声那样的其他噪声。

    ④ 逆谐波均值滤波器
    g(x,y)=(x,y)Sxyf(x,y)Q+1(x,y)Sxyf(x,y)Qg(x,y) = {{\sum_{(x,y)\in S_{xy}}{f(x,y)^{Q+1}}}\over{\sum_{(x,y)\in S_{xy}}{f(x,y)^Q}}} 其中 QQ 称为滤波器的阶数。当 QQ 值为正时,该滤波器消除胡椒噪声;当 QQ 值为负时,该滤波器消除盐粒噪声。

    2. 统计排序(平滑非线性)滤波器

          统计排序滤波器是一种非线性空间滤波器,这种滤波器的响应以滤波器包围的图像区域中所包含的像素排序为基础,然后使用统计排序结果决定的值代替中心像素的值。

    ① 中值滤波器
          中值滤波器使用一个像素邻域中的中值代替图像中的值,表达式如下:
    g(x,y)=median(x,y)Sxyf(x,y)g(x,y) = median_{(x,y)\in S_{xy}}{f(x,y)} 中值滤波器的应用非常普遍,因为对于某些类型的随机噪声,它们能提供良好的去噪能力,且与相同尺寸的线性平滑滤波器相比,引起的模糊更少。

    ② 最大值和最小值滤波器
          最大值和最小值滤波器分别使用一个像素邻域中的最大值和最小值代替图像中的值。
          最大值滤波器对于发现图像中的最亮点非常有用,表达式如下:
    g(x,y)=max(x,y)Sxyf(x,y)g(x,y) = max_{(x,y)\in S_{xy}}{f(x,y)}       最小值滤波器对于发现图像中的最暗点非常有用,表达式如下:
    g(x,y)=min(x,y)Sxyf(x,y)g(x,y) = min_{(x,y)\in S_{xy}}{f(x,y)}

    ③ 中点滤波器
          中点滤波器简单地计算一个像素邻域中的最大值和最小值之间的中点,即:
    g(x,y)=12 [max(x,y)Sxyf(x,y)+min(x,y)Sxyf(x,y)]g(x,y) = {1\over2}\ [max_{(x,y)\in S_{xy}}{f(x,y)}+min_{(x,y)\in S_{xy}}{f(x,y)}] 这种滤波器结合了统计排序和求平均,最适用于处理随机分布的噪声,如高斯噪声或均匀噪声。



    二、锐化空间滤波器

    1. 基础

          锐化处理的主要目的是突出灰度的过渡部分。在逻辑上,我们得出锐化处理可由空间微分来实现。基本上,微分算子的响应强度与图像在用算子操作的这一点的突变程度成正比,这样,图像微分会增强边缘和其他突变(如噪声),削弱灰度变化缓慢的区域。
          一维函数 f(x)f(x) 的一阶微分的基本定义是差值:
    fx=f(x+1)f(x){∂f\over ∂x} = f(x+1) - f(x)       二阶微分定义为如下差分:
    2fx2=f(x+1)+f(x1)2f(x){∂^2f\over ∂x^2} = f(x+1) + f(x-1) - 2f(x)       从下图可以看出微分在图像边缘的变化情况:
    在这里插入图片描述

    2. 拉普拉斯(Laplacian)算子

          Laplacian算子使用二阶微分锐化图像。
          一个二维图像函数 f(x,y)f(x,y) 的拉普拉斯算子定义为:
    2f=2fx2+2fy2\nabla^2f = {∂^2f\over ∂x^2} + {∂^2f\over ∂y^2} 因为任意阶微分都是线性操作,所以拉普拉斯变换也是一个线性算子。为了以离散形式描述这一公式,在 xx 方向上,有
    2fx2=f(x+1,y)+f(x1,y)2f(x,y){∂^2f\over ∂x^2} = f(x+1,y) + f(x-1,y) - 2f(x,y) yy 方向上,有
    2fx2=f(x,y+1)+f(x,y1)2f(x,y){∂^2f\over ∂x^2} = f(x,y+1) + f(x,y-1) - 2f(x,y) 所以,满足这三个公式的两个变量的离散拉普拉斯算子是
    2f(x,y)=f(x+1,y)+f(x1,y)+f(x,y+1)+f(x,y1)4f(x,y)     (1)\nabla^2f(x,y) = f(x+1,y) + f(x-1,y) + f(x,y+1) + f(x,y-1) - 4f(x,y)\ \ \ \ \ (1) 这个公式可以用图1(a)的滤波模板来实现。
          使用拉普拉斯算子将产生暗色背景中叠加有浅灰色边线和突变点的图像。将原图像和拉普拉斯图像叠加在一起的简单方法,可以复原背景特性并保持拉普拉斯锐化处理的效果。公式如下:
    g(x,y)=f(x,y)+c[2f(x,y)]g(x,y) = f(x,y) + c[\nabla^2f(x,y)] 式中,f(x,y)f(x,y)g(x,y)g(x,y) 分别为输入图像和锐化后的图像,如果使用图1(a)或(b)的拉普拉斯滤波器,则常数 c=1c=-1;如果使用图1(c)或(d)的拉普拉斯滤波器,则常数 c=1c=1(因为锐化的是输入图像的亮度区域,即使用(1)式后为负的像素点)。
    在这里插入图片描述

    图1    (a)实现式(1)所用模板;(b)用于实现带有对角项的公式的扩展模板;(c)~(d)实践中常用的其他两个拉普拉斯实现

    3. 罗伯特交叉梯度(Roberts)算子

          Roberts算子使用一阶微分锐化图像。Roberts提出两个定义使用交叉查分:
    gx=(z9z5)      gy=(z8z6)g_x = (z_9 - z_5)\ \ \ 和\ \ \ g_y = (z_8 - z_6)       模板如下图所示:
    在这里插入图片描述

    4. Sobel算子

          Sobel算子使用一阶微分锐化图像。使用以 z5z_5 为中心的 3×33\times 3 邻域对 gxg_xgyg_y 的近似如下式所示:
    gx=(z7+2z8+z9)(z1+2z2+z3)g_x = (z_7 + 2z_8 + z_9) - (z_1 +2z_2 +z_3) gy=(z3+2z6+z9)(z1+2z4+z7)g_y = (z_3 + 2z_6 + z_9) - (z_1 +2z_4 +z_7)       模板如下图所示:
    在这里插入图片描述



    三、彩色图像的平滑和锐化

    1. 彩色图像平滑

          在彩色图像中,我们使用RGB的分量代替灰度标量值。我们将该向量的分量视为几幅标量图像,这些标量图像可通过传统的灰度级邻域处理,单独地平滑原RGB图像的每个平面来得到。
          邻域平均平滑可以在每个彩色平面的基础上执行。

    2. 彩色图像锐化

          在RGB彩色系统中,可以通过分别计算每幅分量图像的拉普拉斯变换来计算全彩色图像的拉普拉斯变换。



    四、代码实现(Python+OpenCV)

    均值滤波器:cv2.blur()
    中值滤波器:cv2.medianBlur()
    卷积运算:cv2.filter2D()
    图片相加运算:cv2.add()
    
    1. 去除盐粒噪声(图像产生随机白色像素点)
    import cv2
    img = cv2.imread('盐粒噪声.jpg')
    
    # 算术均值滤波器
    img1 = cv2.blur(img, (3,3))
    # 谐波均值滤波器
    img2 = 1/cv2.blur(1/(img+1E-10), (3,3)) # 加1E-10防止除0操作
    # 中值滤波器
    img3 = cv2.medianBlur(img, 3)
    
    cv2.imwrite('img1.jpg',img1)
    cv2.imwrite('img2.jpg',img2)
    cv2.imwrite('img3.jpg',img3)
    

    在这里插入图片描述

    2. 去除胡椒噪声(图像产生随机黑色像素点)
    import cv2
    img = cv2.imread('胡椒噪声.jpg')
    
    # 算术均值滤波器
    img1 = cv2.blur(img, (3,3))
    # 谐波均值滤波器
    img2 = 1/cv2.blur(1/(img+1E-10), (3,3)) # 加1E-10防止除0操作
    # 中值滤波器
    img3 = cv2.medianBlur(img, 3)
    
    cv2.imwrite('img1.jpg',img1)
    cv2.imwrite('img2.jpg',img2)
    cv2.imwrite('img3.jpg',img3)
    

    在这里插入图片描述

    3. 去除椒盐噪声(图像产生随机黑白像素点)
    import cv2
    img = cv2.imread('椒盐噪声.jpg')
    
    # 算术均值滤波器
    img1 = cv2.blur(img, (3,3))
    # 谐波均值滤波器
    img2 = 1/cv2.blur(1/(img+1E-10), (3,3)) # 加1E-10防止除0操作
    # 中值滤波器
    img3 = cv2.medianBlur(img, 3)
    
    cv2.imwrite('img1.jpg',img1)
    cv2.imwrite('img2.jpg',img2)
    cv2.imwrite('img3.jpg',img3)
    

    在这里插入图片描述

    4. 去除高斯噪声
    import cv2
    img = cv2.imread('高斯噪声.jpg')
    
    # 算术均值滤波器
    img1 = cv2.blur(img, (3,3))
    # 谐波均值滤波器
    img2 = 1/cv2.blur(1/(img+1E-10), (3,3)) # 加1E-10防止除0操作
    # 中值滤波器
    img3 = cv2.medianBlur(img, 3)
    
    cv2.imwrite('img1.jpg',img1)
    cv2.imwrite('img2.jpg',img2)
    cv2.imwrite('img3.jpg',img3)
    

    在这里插入图片描述

    5. Laplacian算子锐化图像
    import cv2
    import numpy as np
    
    kernel = np.array([[-1, -1, -1],[-1, 8, -1],[-1, -1, -1]])
    img = cv2.imread('原图.jpg', 0)
    edge_img = cv2.filter2D(img, -1, kernel)
    output_img = cv2.add(img, edge_img)
    
    cv2.imwrite('edge_img.jpg', edge_img)
    cv2.imwrite('output_img.jpg', output_img)
    

    在这里插入图片描述









    以上全部内容参考书籍如下:
    冈萨雷斯《数字图像处理(第三版)》

    展开全文
  • 前面提到,我们可以用平均或加权平均来降低噪声,以增强图像。前面我们是对像素点的周边8领域进行的操作,要是我们想对周边更多领域进行操作呢?如果我们想要调整加权的权重值呢?那么用前2篇文章中的方法显然是非常...

    前面提到,我们可以用平均或加权平均来降低噪声,以增强图像。前面我们是对像素点的周边8领域进行的操作,要是我们想对周边更多领域进行操作呢?如果我们想要调整加权的权重值呢?

    那么用前2篇文章中的方法显然是非常烦琐且不灵活的。我们注意到,对8领域进行平均或加权平均操作,实质上是对3×3的一个矩形区域进行操作。

    这里写图片描述

    如果相邻像素再扩大一圈,就是5×5的矩形区域:
    这里写图片描述

    我们前面说:图像就是矩阵,那么这个相邻像素构成的区域不也是矩阵吗?同样的,不管是平均操作还是加权平均,这个区域矩阵中的每一个像素点都需要乘以一个系数,那么这个系数是不是同样组成了一个矩阵呢,如果是3×3的区域,那么系数矩阵就是:

    这里写图片描述

    根据线性代数的矩阵数乘法则,我们可以把9放在矩阵外部,变成这个形式:

    这里写图片描述

    同样的,加权操作的系数矩阵是这样的:
    这里写图片描述

    那么,对图像的平均操作和加权平均操作进行降噪实质上就是用这个系数矩阵与图像中的任意一点的领域区域矩阵进行矩阵点乘,然后求点乘后矩阵的和。

    写出公式就是:

    g(x,y)=a=nnb=nnw(x,y)f(x+a,y+b)g(x,y)=∑a=−nn∑b=−nnw(x,y)⋅f(x+a,y+b)

    w是大小为n×n的系数矩阵,f(x,y)是点(x,y)处的值,g(x,y)是进行平均操作或加权平均操作后点(x,y)处的值。

    import cv2
    import numpy as np
    
    salt = cv2.imread("salt_lena.bmp", 0)
    row, column = salt.shape
    reduce = salt[:]
    coefficient = np.array([[1, 2, 1],
                            [2, 4, 2],
                            [1, 2, 1]])
    region_row, region_column = coefficient.shape
    
    for x in range((region_row - 1) // 2, row - (region_row - 1) // 2):
        for y in range((region_column - 1)  // 2, column - (region_column - 1) // 2):
            reduce[x, y] = np.sum(coefficient * salt[x - (region_row - 1) // 2:x + (region_row - 1) // 2 + 1,
                                                y - (region_column - 1) // 2:y + (region_column - 1) // 2 + 1]) / np.sum(
                coefficient)
    
    
    cv2.imshow("reduce_filter", reduce.astype("uint8"))
    cv2.waitKey()

    这里写图片描述

    效果是以前的做法是一样的。

    这样的话,就把系数矩阵w抽象了出来,如果需要扩大领域操作的范围,就改变系数矩阵的大小n×n,如果需要调整权重,就改变系数矩阵中的相应位置的值。

    这个抽象的系数矩阵w我们可以称它为模板、核、窗口、卷积核等等,都是等价的。而这种操作既然是降低噪声,就是过滤掉噪声,借用频率域的术语,又可以称之为滤波操作,那么这个系数矩阵w就称之为滤波器。由于是在图像的二维空间中进行操作,所以又称为空间滤波器。以后你看到模板卷积核窗口滤波器空间滤波器等等术语,都指的是这个东西。当然,卷积的真实含义与这里的操作有一点点的区别,但不必过于拘泥于术语的精确性。关于卷积以后还将探讨到。

    事实上opencv已经给我们封装好了。我们用一个5×5的空间滤波器,使用opencv的filter2D函数。

    salt = cv2.imread("salt_lena.bmp", 0)
    filter = 1 / 25 * np.ones((5, 5))
    reduce_filter = cv2.filter2D(salt, -1, filter)
    cv2.imshow("reduce_filter", reduce_filter)
    cv2.waitKey()

    输出结果:
    这里写图片描述

    这里我们用了3×3和5×5的空间滤波器,大小都是奇数,那么可不可以使用4×4,8×8,甚至是5×4,8×7的尺寸呢,当然是可以的。但是,使用奇数尺寸的滤波器可以简化索引,并更为直观,因为需要操作的像素点是落在滤波器的中心位置上。

    展开全文
  • 文章目录一、基本概念二、利用...它们都是非线性空间滤波器,其响应基于像邻域中所包含的像素进行排序,然后使用排序结果确定的值替代邻域中的中心像素的值。 函数 ordfilt2 的语法: g = ordfilt2(f,order,domain...

    一、基本概念

    工具箱中常用于生成非线性空间滤波的一个工具箱函数ordfilt2,它可以生成统计排序滤波器(也称为排序滤波器)。
    它们都是非线性空间滤波器,其响应基于像邻域中所包含的像素进行排序,然后使用排序结果确定的值替代邻域中的中心像素的值。

    函数 ordfilt2 的语法g = ordfilt2(f,order,domain)
    该函数通过使用邻域的排序集合中的第order个元素去替代 f 中的每个元素,来生成输出图像g。其中邻域由 domain 内的非零元素指定。
    这里domain是一个由 0和1 组成的 大小为 mxn 的矩阵,该矩阵指定了计算中使用的邻域中的像素位置。计算时不使用对应于domain中的0的邻域中的像素。

    % 实现一个大小为 mxn 的最小滤波器(排序1)
    g = ordfilt2(f,1,ones(m,n))
    % 语句中,1 表示 mn 个样本中的第一个样本,ones(m,n)创建了一个元素值为1、大小为 mxn 的矩阵
    % 表明邻域内的所有样本都将用于计算
    
    % 最小的滤波器(一组排序元素中的第一个样本值)称为第0个百分位
    %100个百分位指的就是一组排序元素中的最后一个样本值,即第 mn 个样本值
    g = ordfilt2(f,m*n,ones(m,n))	%最大滤波器语法
    % 中值滤波器,对应着第50个百分位
    g = ordfilt2(f,(m*n + 1)/2,ones(m,n))	% 其中 m 与 n 为奇数
    

    二维中值滤波函数g = medfilt2(f,[m n],padopt)

    其中,数组 [m n]定义了一个 mxn 的邻域(在该邻域上计算中值),
    padopt 指定了三个可能的边界填充选项

    选项 含义
    zeros 默认值
    symmetric f按照镜像反射方式对称的延边界扩展
    indexed 若 f 是double类图像,则以 1 来填充图像,否则 以 0 来填充图像

    函数默认形式g = medfilt2(f)
    该默认函数使用一个大小为 3x3 的邻域并用0填充边界来计算中值

    二、利用函数 medfilt2 进行中值滤波

    中值滤波是降低图像椒盐噪声的一种有用工具

    >> f = imread('medfilt2.tif');
    % 利用函数 imnoise 生成一幅被椒盐噪声污染的图像,图像中黑点和白点出现的概率为0.2
    >> fn = imnoise(f,'salt & pepper',0.2);
    

    在这里插入图片描述

    %	使用中值滤波进行处理,如图 Figure 3
    >> gm = medfilt2(fn);
    % 中值滤波采用默认设置虽然实现了降噪,但出现了围绕图像边界的黑色污点
    % 这些污点是由围绕图像的黑点引起的(默认采用0对边界进行补充),因此采用 'symmetric' 降低这种效应
    >> gms = medfilt2(fn,'symmetric');	% 如图 Figure 4
    

    在这里插入图片描述

    展开全文
  • 一、目的实现算术均值滤波器、几何均值滤波器、中值滤波器、修正的阿尔法均值滤波器、自适应中值滤波器,并比较不同滤波器的降噪结果。 二、代码代码的思路如下: (1)先对原始的电路图先后进行加高斯噪声和椒盐...

    本文链接:https://blog.csdn.net/LYduring/article/details/80443573


    一、目的
    实现算术均值滤波器、几何均值滤波器、中值滤波器、修正的阿尔法均值滤波器、自适应中值滤波器,并比较不同滤波器的降噪结果。

    二、代码
    代码的思路如下:

    (1)先对原始的电路图先后进行加高斯噪声和椒盐噪声;之后设置滤波器的模板大小为5*5,分别对被噪声污染的图像进行算术均值、几何均值、中值、修正的阿尔法滤波,并输出图像,方便结果比较。

    (2)为了比较中值滤波器和自适应中值滤波器的滤波结果,先对原始电路图添加椒盐噪声;接着对噪声图像进行模板大小为5*5的中值滤波;最后对噪声图像进行最大模板为5*5的自适应中值滤波,分别输出滤波后的图像,比较结果。

    代码具体实现如下:

    %******************************************************%
    %目的:比较几种不同均值滤波器和自适应中值滤波器的去噪声效果
    %日期:2018.5.18
    %******************************************************%
    
    %读入图像
    img = imread('img.tif');
    figure;
    subplot(1,3,1);
    imshow(img);
    title('原始图像');
    %分别添加加入高斯噪声和椒盐噪声
    f1 = imnoise(img,'gaussian');
    subplot(1,3,2)
    imshow(f1);
    title('添加高斯噪声');
    f2 = imnoise(f1,'salt & pepper');
    subplot(1,3,3)
    imshow(f2);
    title('再添加椒盐噪声');
    f2 = double(f2);
    [M,N] = size(f2);
    
    %%%%比较几种均值滤波器及中值滤波器的滤波结果%%%%%%
    %算术均值滤波器
    n = 5; %模板大小
    f11 = f2;
    for i = 1:M-n+1
    for j = 1:N-n+1
    g1 = f2(i:i+n-1,j:j+n-1);
    s1 = sum(sum(g1));
    %中心点的值用子图像的算术均值代替
    f11(i+(n-1)/2,j+(n-1)/2) = s1/(n*n); 
    end
    end
    img1 = uint8(f11);
    figure;
    subplot(1,2,1);
    imshow(img1);
    title('算术均值滤波结果');
    
    %几何均值滤波器
    n = 5; %模板大小
    f21 = f2 + ones(M,N); %防止有个像素点为0而导致乘积为0
    f12 = f21;
    for i = 1:M-n+1
    for j = 1:N-n+1
    g2 = f21(i:i+n-1,j:j+n-1);
    s2 = prod(g2(:));
    %中心点的值用子图像的几何均值代替
    f12(i+(n-1)/2,j+(n-1)/2) = s2.^(1/numel(g2)); 
    end
    end
    img2 = uint8(f12);
    subplot(1,2,2);
    imshow(img2);
    title('几何均值滤波结果');
    
    %中值滤波器
    img3 = uint8(medfilt2(f2,[5 5]));
    figure;
    subplot(1,2,1);
    imshow(img3);
    title('中值滤波结果');
    
    %修正的阿尔法均值滤波器
    n = 5; %模板大小
    d = 5; %去掉最值灰度值的个数
    f13 = f2;
    for i = 1:M-n+1
    for j = 1:N-n+1
    g3 = f2(i:i+n-1,j:j+n-1);
    g3 = sort(g3(:)); %对邻域内的像素点进行排序
    min_num = ceil(d/2); %去掉最小灰度值的个数
    max_num = floor(d/2); %去掉最大灰度值的个数
    %去掉d个最值灰度级后求算术均值
    g3(1:min_num) = zeros(min_num,1);
    g3(n-max_num+1:n) = zeros(max_num,1);
    s3 = sum(g3);
    %中心点的值用子图像的算术均值代替
    f13(i+(n-1)/2,j+(n-1)/2) = s3/(n*n-d); 
    end
    end
    img4 = uint8(f13);
    subplot(1,2,2);
    imshow(img4);
    title('修正的阿尔法均值滤波结果');
    
    
    %%%%%%%比较中值滤波器及自适应中值滤波器的滤波结果%%%%%%%
    f2 = imnoise(img,'salt & pepper');
    figure;
    subplot(1,4,1);
    imshow(img);
    title('原图');
    subplot(1,4,2);
    imshow(f2);
    title('添加椒盐噪声的图像');
    
    %中值滤波器
    img5 = uint8(medfilt2(f2,[5 5]));
    subplot(1,4,3);
    imshow(img5);
    title('中值滤波结果');
    
    %自适应中值滤波器
    f14 = f2; 
    alreadyPro = false(size(f2)); %看是否完成进程
    Smax=5; %最大窗口尺寸
    for s = 3:2:Smax %起始窗口尺寸设为3
    %得到特定的灰度值
    zmin = ordfilt2(f2, 1, ones(s, s), 'symmetric'); 
    zmax = ordfilt2(f2, s * s, ones(s, s), 'symmetric'); 
    zmed = medfilt2(f2, [s s], 'symmetric'); 
    %进程B
    processB = (zmed > zmin) & (zmax > zmed) & ~alreadyPro; 
    %进程A
    processA = (f2 > zmin) & (zmax > f2); 
    outZxy = processB & processA; 
    outZmed = processB & ~processA; 
    f14(outZxy) = f2(outZxy); 
    f14(outZmed) = zmed(outZmed); 
    alreadyPro = alreadyPro | processB; 
    if all(alreadyPro(:)) 
    break; 
    end 
    end 
    f14(~alreadyPro) = zmed(~alreadyPro); 
    img6 = uint8(f14);
    subplot(1,4,4);
    imshow(img6);
    title('自适应中值滤波结果');


    三、结果分析
    得到的结果如下:

     

     

     

     

     

     由滤波结果,我们可以看出,对于添加了高斯噪声和椒盐噪声的图像,算术均值和几何均值滤波器的效果比较差,尤其是几何均值滤波器;而中值滤波器和修正后的阿尔法均值滤波器的降噪效果比前面两种滤波器的效果要好很多,修正的阿尔法均值滤波器的效果最好,使图像变得更平滑。中值滤波器和自适应中值滤波器进行比较,两者的降噪效果都不错,不过中值滤波器导致了原始图像细节的丢失,而自适应中值滤波器则很好地保持了原始图像的清晰度和细节。

    转载于:https://www.cnblogs.com/Ph-one/p/11604362.html

    展开全文
  • 2.4空间滤波 邻域处理有以下几个步骤:(1)选取中心点(x,y);(2)仅对预先定义的关于点(x,y)的邻域内的像素执行操作;(3)令运算结果为该点处的响应;(4)对图像中的每一点重复该处理。 中心点移动的过程会产生新的...
  • “滤波”是指接受(通过)或者拒绝一定的频率成分。例如,通过低频的滤波器称为低通滤波器,低通滤波器的最终效果是模糊(平滑)一幅图像。 某些邻域处理工作是操作邻域的图像...空间滤波器由(1)一个邻域(通常是...
  • 空间滤波基础

    2018-10-12 23:25:36
    这些子图像可以被称作为滤波器,掩模,核,模板,窗口等等。在滤波器子图像中的值是系数值,而不是像素值。 空间滤波的分类 空间滤波分为两大类: 1,线性空间滤波 2,非线性空间滤波 一般来说,在MN的图像f上...
  • (1) 如何将空间滤波器转换为等同的频率域滤波器 (2) 如何使用函数 imfilter 进行空间滤波和使用前一节所述方法进行频率域滤波的结果 由于imfilter使用了相关,且认为滤波器的原点在中心处,因此需要一些预处理来使...
  • 平滑空间滤波器是低频增强的空间滤波技术。它的目的有两类:一是模糊处理,二是降低噪声。 本文介绍的平滑空间滤波器也分为两类,一类是线性滤波器,比如最简单的简单平均法。但是大多数线性滤波器具有低通特性,...
  • 1 空间滤波器的基础 1.1 空间滤波介绍 1.2 空间滤波原理 1.3 空间相关与空间卷积 2 平滑空间滤波器 2.1 平滑线性滤波器 2.2 统计排序滤波器 2.3 平滑空间滤波器总结 3锐化空间滤波器 3.1 锐化空间滤波器基础 3.2 ...
  • 关于低通空间滤波器 首先得对空间滤波器有一定的了解,空间滤波简单来说就是直接在灰度值上进行滤波操作。大部分线性的空间滤波器(比如均值滤波器),是在空间上进行一些灰度值上的操作,这个线性空间滤波器与频域...
  • 线性空间滤波器 工具箱支持一些预定义的二维线性空间滤波器,可通过函数fspecial实现,该函数生成滤波模板W,函数的语法为: w=fspecial(‘type’,parameters) type------------滤波器的类型 parameters-----...
  • 1 .1 通过空间滤波器生成频域滤波器 给定一个空间滤波器h,生成一个频域滤波器H的方法为: H=fft2(h,PQ(1),PQ(2)) 其中向量PQ的值取决于我们想要对其滤波的图像的大小。 函数freqz2用于计算 ...
  • 工具箱支持许多预定义的二维线性空间滤波器,可通过函数fspecial得到 生成一个滤波模板w的语法: w = fspecial('type',parameters) 其中,'type’表示滤波的类型,'parameters’进一步定义了指定的滤波器。 函数...
  • 而锐化空间滤波器恰恰相反,主要用来增强图像的突变信息,图像的细节和边缘信息。平滑滤波器主要是使用邻域的均值(或者中值)来代替模板中心的像素,消弱和邻域间的差别,以达到平滑图像和抑制噪声的目的;相反,...
  • 使用fspecial来生成空间滤波器 使用ifftshift,使得原点位于频率矩形的左上角 分别在空域和频域进行滤波,结果 灰色调是由于存在负值,平均值在使用imshow后会变大,可以使用绝对值 创建二值图像
  • 本节为opencv数字图像处理(10):图像复原与重建的第一小节,常见的噪声以及空间滤波器噪声消除方法,主要包括:图像/退化复原模型,六种常见噪声模型(高斯、瑞利、爱尔兰、指数、均匀、脉冲噪声)并且使用空间...
  • 我们在前面的图像模糊中,介绍了使用平滑空间滤波器来模糊图像,那么用微分算子来锐化图像能不能也使用空间滤波器的形式呢? 我们分别选一个一阶微分算子和一个二阶微分算子作为示例:Sobel算子和Laplacian算子。...
  • ———————————————————————————————————————————————————————— ...空间滤波是由一个邻域(典型是一个小矩形),对该邻域包围的图像像素执行预
  • 平滑空间滤波器 1 什么是滤波 用书本上的话来说,滤波就是接受或拒绝(过滤)一定的频率部分(波) 我个人的理解是:滤波是一个二维函数(映射),它对一个假象的二维平面上的对象进行某种变换,这个变换可以是线性...
1 2 3 4 5 ... 20
收藏数 28,499
精华内容 11,399
热门标签
关键字:

空间滤波器