python直方图匹配
时间: 2023-10-28 19:57:31 浏览: 162
在Python中,可以使用cv2库来实现直方图匹配或规定化。通过计算原图像和目标图像的累积直方图,然后根据累积直方图的差值建立灰度级的映射,最后将原图像中的像素值映射到目标图像的灰度级上以实现规定化处理。
下面是一个简单的Python代码示例来实现直方图匹配:
```python
import cv2
import numpy as np
# 读取原图像和目标图像
img0 = cv2.imread('path_to_original_image')
target_img = cv2.imread('path_to_target_image')
# 将原图像和目标图像转换为灰度图像
gray_img0 = cv2.cvtColor(img0, cv2.COLOR_BGR2GRAY)
gray_target_img = cv2.cvtColor(target_img, cv2.COLOR_BGR2GRAY)
# 计算原图像和目标图像的直方图
hist0 = cv2.calcHist([gray_img0], [0], None, [256], [0, 256])
target_hist = cv2.calcHist([gray_target_img], [0], None, [256], [0, 256])
# 计算原图像和目标图像的累积直方图
cumulative_hist0 = hist0.cumsum()
cumulative_target_hist = target_hist.cumsum()
# 根据累积直方图的差值建立灰度级的映射
mapping = np.zeros((256, 1), dtype=np.uint8)
for i in range(256):
j = 0
while cumulative_hist0[i > cumulative_target_hist[j]:
j += 1
mapping[i = j
# 对原图像应用灰度级映射
output_img = mapping
阅读全文