opencv(4)--平滑

本文深入探讨了图像处理中的平滑技术,包括平均平滑、高斯平滑、中值模糊及双边滤波等方法。详细介绍了每种方法的参数设置及应用效果,帮助读者理解并掌握图像噪声去除及边界清晰保持的技术细节。

平均平滑

kernel=(5,5)
blur=cv2.blur(image,kernel)  #kernel越大越模糊
show(blur)

高斯平滑(加权平均值)

kernel=(5,5)
blur=cv2.GaussianBlur(image,kernel,0)	#标准差为0
show(blur)

中值模糊

blur=cv2.medianBlur(image,5)		#区别kernel只能是正方形
show(blur)

双边滤波(保持边界清晰,去除噪音)

params=(11,75,75)
diameter,sigmaColor,sigmaSpace =params
#领域直径,灰度值相似性高斯函数标准差,空间高斯函数标准差
blur=cv2.bilateralFilter(image,diameter,sigmaColor,sigmaSpace)
show(blur)
OpenCV - Python中,频域平滑处理可通过低通滤波实现,其核心是去除图像中的高频噪声,保留低频成分,使图像变得平滑。具体实现步骤如下: 首先,输入图像需要先转换成`np.float32`格式,之后使用`cv2.dft()`进行离散傅里叶变换,该函数返回的结果是双通道的(实部,虚部)。示例代码如下: ```python import cv2 import numpy as np # 读取图像 img = cv2.imread('your_image.jpg', 0) # 转换为np.float32格式 img_float32 = np.float32(img) # 进行离散傅里叶变换 dft = cv2.dft(img_float32, flags = cv2.DFT_COMPLEX_OUTPUT) ``` 得到的结果中频率为0的部分会在左上角,通常要转换到中心位置,可以通过`np.fft.fftshift()`变换来实现。代码如下: ```python # 将低频分量移到中心 dft_shift = np.fft.fftshift(dft) ``` 接着,构建低通滤波器。低通滤波器可以让低频信号通过,阻止高频信号,这样就能去除图像中的高频噪声,实现平滑效果。 最后,将构建好的低通滤波器与经过`fftshift`变换后的频谱相乘,再通过`np.fft.ifftshift()`将频谱移回原来的位置,最后使用`cv2.idft()`进行逆离散傅里叶变换,将频域信号转换回空间域信号。示例代码如下: ```python # 构建低通滤波器 rows, cols = img.shape crow, ccol = rows // 2, cols // 2 mask = np.zeros((rows, cols, 2), np.uint8) mask[crow - 30:crow + 30, ccol - 30:ccol + 30] = 1 # 应用低通滤波器 fshift = dft_shift * mask # 将低频分量移回原来的位置 f_ishift = np.fft.ifftshift(fshift) # 进行逆离散傅里叶变换 img_back = cv2.idft(f_ishift) img_back = cv2.magnitude(img_back[:, :, 0], img_back[:, :, 1]) ``` 上述代码实现了OpenCV - Python在频域的平滑处理,通过低通滤波去除高频噪声,保留低频成分,达到图像平滑的目的 [^1][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值