平滑滤波

平滑滤波是低频增强的空间域滤波技术。它的目的有两类:一类是模糊;另一类是消除噪音。空间域的平滑滤波一般采用简单平均法进行,就是求邻近像元点的平均亮度值。邻域的大小与平滑的效果直接相关,邻域越大平滑的效果越好,但邻域过大,平滑会使边缘信息损失的越大,从而使输出的图像变得模糊,因此需合理选择邻域的大小。

簡易型平滑濾波器

最簡易型的平滑濾波器可表示為下式

y[n]={1 \over 2L+1}\sum _{​{\tau =n-L}}^{​{n+L}}x[\tau ]

可改寫為

y[n]=x[n]*h[n]


h[n]如下圖所示

簡易型平滑濾波器的脈衝響應h[n]
y[n]=\sum _{​{\tau }}x[n-\tau ]h[\tau ]=\sum _{​{\tau =-L}}^{​{L}}x[n-\tau ]{1 \over 2L+1}={1 \over 2L+1}\sum _{​{\tau =-L}}^{​{L}}x[n-\tau ]


y[n]={1 \over 2L+1}\sum _{​{\tau =n-L}}^{​{n+L}}x[\tau ]


y[n-1]={1 \over 2L+1}\sum _{​{\tau =n-1-L}}^{​{n-1+L}}x[\tau ]


則可以把y[n]改寫為遞迴形式

y[n]=y[n-1]+{1 \over 2L+1}(x[n+L]-x[n-1-L])


一般型態平滑濾波器

一般型態平滑濾波器可表示成下列式子

y[n]=x[n]*h[n]=\sum _{​{\tau =n-L}}x[n-\tau ]h[\tau ]

而h[n]需符合下列條件

{\begin{cases}\ 1.h[n]=h[-n]\\\ 2.|h[n_{1}]|\leq |h[n_{2}]|&|n_{1}|>|n_{2}|\end{cases}}

任何隨著|n|遞減的偶函數都可以當成平滑濾波器

一般型平滑濾波器的脈衝響應範例h[n]

應用

平滑濾波器多用來模糊化、去除雜訊,找出信號長期趨勢。

下列為平滑濾波器簡單的範例

% matlab code %

 y =[0:0.1:5]';                       %產生信號
 y = y+ 0.15.*randn(length(y), 1);    %信號加上雜訊
 y2 = smooth(y');                     %使用平滑濾波器去信號雜訊

 subplot(2,1,1),plot(b,y);
 title('x[n]');
 subplot(2,1,2),plot(b,y2); 
 title('x[n] after smoother');

模擬結果

一般型平滑濾波器的脈衝響應範例h[n]


Matlab的Smooth函数还有一个参数是设置span, 不同的span影响不同的平滑程度:

a=[0:0.01:10]';
c = a + 0.1.*randn(length(y), 1);
d= smooth(c', 20);
plot(d)
e=smooth(c', 5);
plot(e)

下面是更光滑的:


### 图像处理中的阈值与平滑滤波的理解与应用 #### 阈值处理的基本原理 阈值处理是一种将图像从灰度图转换为二值图像的技术,其核心思想是通过设定一个或多个阈值,将像素点分为不同的类别。简单阈值法是最基本的实现方式,它根据设定的阈值将图像中所有像素点划分为两个区域:高于阈值的部分和低于阈值的部分。例如,在简单阈值法中,如果某个像素的亮度值大于设定的阈值,则将其设置为最大值(如255),否则设置为最小值(如0)[^1]。 #### 平滑滤波的基本原理 平滑滤波是一种用于减少图像噪声并使图像变得更加模糊的技术。这种技术的主要目的是改善图像质量,以便后续的处理步骤能够更加高效地进行。常见的平滑滤波方法包括均值滤波、高斯滤波以及中值滤波等。这些方法通过对图像中的每个像素点及其邻域内的像素值进行操作来达到目的: - **均值滤波**:通过计算一个固定大小窗口内所有像素值的平均数来替代中心像素值。 - **高斯滤波**:在均值滤波的基础上引入了权重的概念,使得距离中心越近的像素拥有更高的权重。 - **中值滤波**:取窗口内所有像素值的中位数作为新的中心像素值,特别适用于去除椒盐噪声[^3]。 #### 阈值和平滑滤波的应用方法 在实际应用中,阈值处理和平滑滤波通常会结合使用以提高图像处理的效果。例如,在执行边缘检测之前,先使用高斯滤波器对图像进行预处理可以有效降低噪声的影响,从而得到更清晰的边缘轮廓。同样地,在进行图像分割时,先利用平滑滤波器去除噪声,再采用适当的阈值策略可以帮助更好地识别出感兴趣的区域[^2]。 下面是一个Python代码示例,展示了如何使用OpenCV库来进行图像的平滑滤波处理: ```python import cv2 import numpy as np # 读取图像 img = cv2.imread("peppa_gaussian.jpg") # 应用不同类型的平滑滤波器 blur = cv2.blur(img, (7, 7)) # 均值滤波 box = cv2.boxFilter(img, -1, (7,7), normalize=True) # 方框滤波 gaussian = cv2.GaussianBlur(img, (7, 7), 10) # 高斯滤波 median = cv2.medianBlur(img, 7) # 中值滤波 bilateral = cv2.bilateralFilter(img,9,75,75) # 双边滤波 # 显示结果 cv2.imshow('Original Image', img) cv2.imshow('Mean Filter', blur) cv2.imshow('Box Filter', box) cv2.imshow('Gaussian Filter', gaussian) cv2.imshow('Median Filter', median) cv2.imshow('Bilateral Filter', bilateral) # 等待按键后关闭所有窗口 cv2.waitKey() cv2.destroyAllWindows() ``` 这段代码演示了几种常用的平滑滤波技术,并且显示了每种滤波后的效果。通过这种方式,可以根据具体需求选择最适合的滤波器类型和参数设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值