前面已经做过二值化、形态学操作,这次换一个更常见的图像处理方向:
图像滤波。
很多图片里都会存在细小噪声、毛刺或者过于复杂的纹理,这时候就可以通过滤波让画面变得更加平滑。
这次我用华为云码道辅助开发了一个 OpenCV 图像滤波对比工具,支持 Gaussian Blur、Median Blur 和 Bilateral Filter 三种方法,并通过清晰度分数观察滤波前后的变化。
1. 这次工具做什么?
主要功能包括:
- 上传 JPG / PNG 图片
- 支持 Gaussian Blur
- 支持 Median Blur
- 支持 Bilateral Filter
- 调节滤波参数
- 显示原图和处理图
- 计算处理前后 Sharpness
- 支持下载滤波结果
整体流程:
图片
→ 选择滤波方法
→ 设置参数
→ OpenCV Filter
→ Sharpness 对比

2. 三种滤波有什么区别?
这次工具支持三种比较经典的方法。
Gaussian Blur
高斯模糊会根据周围像素进行加权平均。
特点是:
整体平滑效果自然。
result = cv2.GaussianBlur( image, (5, 5), 0)
Median Blur
中值滤波会取邻域中的中位数。
result = cv2.medianBlur(image, 5)
它对:
椒盐噪声
通常比较有效。
Bilateral Filter
双边滤波除了考虑像素距离,还考虑像素颜色差异。
result = cv2.bilateralFilter( image, 13, 75, 75)
最大的特点就是:
平滑细节的同时尽量保留明显边缘。
3. 这次测试 Bilateral Filter
实际测试使用:
Bilateral Filter
参数:
Diameter = 13
Diameter 表示双边滤波参考的像素邻域大小。
数值越大,参与计算的周围像素越多,平滑效果通常也会更明显。
这次使用 13,所以前后图已经能看到比较明显的变化。
4. Sharpness 怎么计算?
为了观察滤波对图片细节的影响,这次继续使用之前清晰度检测中用过的:
Laplacian Variance
核心代码:
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)sharpness = cv2.Laplacian( gray, cv2.CV_64F).var()
一般来说:
Laplacian Variance 越高,
说明图片中高频细节和锐利边缘越多。
5. 真实测试结果
这次使用的图片尺寸:
1650 × 953
滤波方式:
Bilateral Filter
Diameter:
13
最终得到:
- Original Sharpness:316.81
- Filtered Sharpness:161.92
清晰度下降:
154.89
6. 清晰度下降了多少?
从:
316.81
下降到:
161.92
相对下降大约:
48.9%
也就是说,经过比较明显的双边滤波后,图片中的高频细节减少了接近一半。
这个结果也说明:
平滑和清晰度之间存在明显取舍。
7. 处理后的图片发生了什么?
从页面中的 Before & After 可以看到:
狗狗毛发
草地
树叶
这些细碎纹理都变得更加平滑。
但与此同时:
狗狗主体轮廓
建筑物轮廓
一些比较明显的结构
仍然被保留了一部分。
这正是 Bilateral Filter 相比普通模糊比较有特点的地方。
它不是单纯把所有内容一起模糊,而是:
尽量在平滑区域的同时保住边缘。
8. 为什么滤波后 Sharpness 一定会下降?
噪声和细节在图像中都属于:
高频信息。
滤波在减少噪声的时候,也不可避免地会同时削弱一部分:
毛发
纹理
细线
边缘
因此 Sharpness 从:
316.81 → 161.92
并不代表算法不好。
相反,这恰好反映了滤波正在减少高频成分。
关键在于:
平滑多少才合适。
9. 三种方法应该怎么选?
可以简单理解为:
Gaussian Blur
适合一般性的图像平滑。
Median Blur
更适合处理椒盐噪声。
Bilateral Filter
适合希望平滑图像,同时尽量保留边缘的场景。
所以不同任务不一定要使用同一种滤波方式。
另外参数也不能设置得过大,否则很容易出现:
细节严重丢失
画面发糊
纹理被过度平滑
10. 总结
这次用华为云码道辅助开发了一个:
OpenCV 图像滤波对比工具。
支持:
- Gaussian Blur
- Median Blur
- Bilateral Filter
这次实际测试使用:
- Filter Method:Bilateral Filter
- Diameter:13
- Original Sharpness:316.81
- Filtered Sharpness:161.92
清晰度下降约:
48.9%
可以明显看到,双边滤波减少了毛发、草地和树叶中的细碎纹理,同时仍然保留了一定的主体边缘。
所以图像滤波本质上是在做一个取舍:
减少噪声和细小纹理,同时尽量保留真正重要的结构。
下一篇可以继续做:
图片边缘到底有多强?用华为云码道开发 OpenCV Sobel 梯度可视化工具
直接把 Sobel X、Sobel Y 和 Gradient Magnitude 三张结果图放在一起比较。