利用直方图确定阈值,对受噪声污染的指纹图片Fig0734.png进行分割,展示原图、直方图、分割后的图片(0、1二值图)
时间: 2023-07-10 18:11:20 浏览: 43
好的,我可以为你提供Python代码来实现这个任务。你需要先安装Python和一些必要的库(numpy、opencv-python等)。
以下是代码实现:
```python
import cv2
import numpy as np
# 读取图片
img = cv2.imread('Fig0734.png', cv2.IMREAD_GRAYSCALE)
# 计算直方图
hist, bins = np.histogram(img, 256, [0, 256])
# 寻找最佳阈值
total_pixels = img.shape[0] * img.shape[1]
sum_B, sum_F, w_B, w_F = 0, 0, 0, 0
max_var, threshold = 0, 0
for i in range(256):
w_B += hist[i]
if w_B == 0:
continue
w_F = total_pixels - w_B
if w_F == 0:
break
sum_B += i * hist[i]
mean_B = sum_B / w_B
sum_F = sum(hist) - sum_B
mean_F = sum_F / w_F
var_B = w_B * w_F * (mean_B - mean_F) ** 2
if var_B > max_var:
max_var = var_B
threshold = i
# 二值化
binary_img = np.zeros_like(img)
binary_img[img > threshold] = 255
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Histogram', cv2.calcHist([img], [0], None, [256], [0, 256]))
cv2.imshow('Binary Image', binary_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
运行上述代码后,会弹出三个窗口,分别展示原图、直方图和二值化后的图片。你可以根据自己的需求进行调整和优化。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)