图片预处理灰度化、降噪、二值化,Python代码
时间: 2025-04-18 14:43:49 浏览: 21
图片预处理是在图像识别、计算机视觉等任务之前对原始数据进行初步处理的过程,目的是提高后续算法的效果。灰度化、降噪以及二值化都是常见的图像预处理步骤。
### 灰度化
将彩色图转化为灰度图可以减少颜色信息带来的干扰,并降低计算复杂度。对于RGB模式下的图像来说,每个像素点由红(R)绿(G)蓝(B)三个分量组成;而转换成灰色以后则只保留亮度信息:
```python
from PIL import Image
# 加载原图
img = Image.open("example.jpg")
gray_img = img.convert('L') # 转换为灰度图
gray_img.save("gray_example.png") # 保存结果
```
这里我们用了PIL库中的`convert()`函数指定'L'模式即线性拉伸到8位灰阶表示法。
### 降噪
噪声会严重影响图像质量进而影响特征提取效果,在实际应用前通常需要先去除噪音。常用的去噪方法有均值滤波器(Mean Filter), 中值滤波器 (Median Filter),高斯模糊(Gaussian Blur)等等。下面展示如何利用OpenCV-Python实现简单的中值过滤:
```python
import cv2
image = cv2.imread('noisy_image.bmp',0)
median_blur = cv2.medianBlur(image ,5 ) # 参数ksize代表卷积核大小,默认奇数
cv2.imwrite('denoised_image.png', median_blur)
```
上述代码实现了使用尺寸为5×5窗口的中值滤波操作,能够有效抑制椒盐类型的随机分布噪声.
### 二值化
最后一步就是把已经变暗了的画面进一步简化成为黑白两色的世界——这就是所谓的“二值”。它让机器更容易理解和分析图像内容。Otsu's Binarization自动选择阈值得到最优分割面。
```python
ret, binary = cv2.threshold(median_blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU )
cv2.imwrite('binary_image.png', binary)
```
其中第二个参数0指明我们将采用自适应的方式确定最佳阀值而不是给定固定数值;第三个参数设置最大值(一般取255);第四个则是标志符告诉系统采用哪种策略完成此过程。
通过以上几步就可以得到一张清晰干净易于后期加工的照片啦!
阅读全文
相关推荐


















