C# OpenCvSharp 图像处理函数-图像平滑滤波-bilateralFilter、filter2D、sepFilter2D、edgePreservingFilter、fastNlMeansDe

理解和合理使用OpenCvSharp中的图像处理函数对于图像处理项目非常重要。本篇文章将用简单易懂的语言和生动的例子来解释这些函数及其参数。

1. bilateralFilter 双边滤波

定义:

void bilateralFilter(InputArray src, OutputArray dst, int d, double sigmaColor, double sigmaSpace, int borderType = BORDER_DEFAULT);

参数解释:

src:输入图像
dst:输出图像
d:邻域像素直径大小
sigmaColor:颜色空间的高斯标准偏差
sigmaSpace:像素值空间距离的高斯核标准偏差
borderType:边界类型,通常采用默认值

作用:

双边滤波可以在平滑图像的同时保持边缘清晰。它通过考虑像素颜色和空间距离来决定如何平滑图像。

例子:

假设我们有一张照片,上面有很多小噪点(比如砂纸的照片),我们想去除这些噪点,但又不想模糊掉边缘。

Mat src = Cv2.ImRead("noisy_image.jpg");
Mat dst = new Mat();
Cv2.BilateralFilter(src, dst, 9, 75, 75);
Cv2.ImWrite("smoothed_image.jpg", dst);

运算过程和结果:

读取图像noisy_image.jpg。
使用双边滤波处理图像,邻域直径为9,颜色空间标准偏差和空间距离标准偏差均为75。
保存处理后的图像为smoothed_image.jpg。
处理后的图像会变得更平滑,噪点减少,但边缘仍然清晰。

2. filter2D 卷积滤波

定义:

void filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel, Point anchor = Point(-1,-1), double delta = 0, int borderType = BORDER_DEFAULT);

参数解释:

src:输入图像
dst:输出图像
ddepth:输出图像的深度
kernel:卷积核
anchor:滤波器的中心
delta:添加到滤波结果的偏移值
borderType:边界类型,通常采用默认值
作用:
卷积滤波可以实现各种图像处理效果,如模糊、锐化等,具体效果取决于卷积核的定义。

例子:

假设我们想让一张照片变得更锐利。

Mat src = Cv2.</
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值