直方图匹配用于图像的规范化表示,它可以用于特征匹配,特别是当图像来自不同的来源或在不同的条件下(根据光线等)。每个图像有多个通道,每个通道单独匹配。直方图匹配只有在输入图像和参考图像的通道数匹配时才可行。
直方图匹配的主要目标是:
- 对于每个图像,我们需要创建直方图。
- 看一下参考图像的直方图。
- 使用参考直方图,更新输入图像中的像素强度值,使它们匹配。
from skimage import exposure
from skimage.exposure import match_histograms
import cv2
# reading main image
img1 = cv2.imread('原图像路径')
# checking the number of channels
print('No of Channel is: ' + str(img1.ndim))
# reading reference image
img2 = cv2.imread('参考图像路径')
# checking the number of channels
print('No of Channel is: ' + str(img2.ndim))
image = img1
reference = img2
matched = match_histograms(image, reference, multichannel=True)
cv2.imwrite('保存路径', matched)
我拿一张遥感影像做了实验,第一幅是需要直方图匹配的影像,第二幅是参考影像,第三张幅是匹配后影像