整幅图 二值化推荐 adaptiveThreshold
时间: 2024-10-10 17:15:21 浏览: 32
c#编写的图片二值化demo
对于整幅图像的二值化,当光线均匀且对比明显但又存在一定程度噪声的情况,使用OpenCV的`adaptiveThreshold()`函数通常是更优的选择,特别是采用Adaptive Threshholding(自适应阈值法)。这种方法会根据每个小区域内像素值的统计特性动态调整阈值,以适应局部图像的变化。
`cv2.adaptiveThreshold()`的基本语法如下:
```python
binary_image = cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)
```
- `src`:输入的灰度图像。
- `maxValue`:设置为255通常代表输出二值图像的最大灰度值。
- `adaptiveMethod`:选择适应性阈值的方法,比如:
- `cv2.ADAPTIVE_THRESH_MEAN_C`(均值):简单平均邻域像素值。
- `cv2.ADAPTIVE_THRESH_GAUSSIAN_C`(高斯加权):考虑像素间的距离权重。
- `thresholdType`:阈值计算方式,常用的有:
- `cv2.THRESH_BINARY`(二进制):高于阈值像素置白,反之置黑。
- `cv2.THRESH_BINARY_INV`(反二进制):高于阈值像素置黑,反之置白。
- `blockSize`:设定邻域大小,通常选择奇数以保证中心像素。
- `C`(常数):噪声抑制因子,一般设置为正值。
举个例子:
```python
gray_image = ... # 获取灰度图像
binary_image = cv2.adaptiveThreshold(gray_image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
```
在这里,`blockSize=11`意味着每个11x11的窗口会被用于计算阈值,`C=2`用来平衡噪声和边缘信息。
阅读全文