编写Python实现直方图均衡化和大津阈值法,展示图片变化。
时间: 2024-09-29 09:12:42 浏览: 54
在Python中,我们可以使用OpenCV库来实现直方图均衡化和大津阈值法对图像处理。以下是两个步骤的简单示例:
首先,导入所需的库:
```python
import cv2
import numpy as np
```
1. **直方图均衡化**:
这会调整图像的亮度分布,使得图像整体更均匀。假设`image`是你要处理的灰度图像:
```python
def histogram_equalization(image):
eq_image = cv2.equalizeHist(image)
return eq_image
# 读取图像
img = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE)
eq_img = histogram_equalization(img)
cv2.imshow("Original", img)
cv2.imshow("Equalized", eq_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
2. **大津阈值法**(Otsu's Thresholding):
这是一种基于统计的方法,自动确定最佳二值分割阈值,用于将图像分为前景和背景。假设`image`仍然是灰度图像:
```python
def otsu_thresholding(image):
_, thresholded = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
return thresholded
thresholded_img = otsu_thresholding(eq_img)
cv2.imshow("Otsu's Thresholded", thresholded_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这两个函数会分别显示原始图像、直方图均衡化后的图像以及经过大津阈值法处理后的图像。
阅读全文