使用Open CV Python进行图像亮度校正

问题描述

我参与了一个计算机视觉项目,其中我需要检测关键特征并将这些图像与检测到的关键点对齐。我可以执行某种方式。但是后者我需要将第二张照片的某些部分缝到第一张照片上。在执行此过程时,在拼接图像的部分亮度/色差有所不同。 (示例照片随附here)。如果有人可以提供解决方案以最大程度地减少差异,我将非常高兴。我曾尝试用附近的像素值,高斯模糊进行平均,但仍然存在明显差异。 我用于模糊和过滤的代码如下,

kernel = np.ones((5,5),np.float32)/25
dst = cv2.filter2D(final,-1,kernel)
dst = cv2.GaussianBlur(dst,(5,0)

解决方法

虽然有许多基于深度学习的颜色转移方法,但根据您的示例,我建议您首先尝试使用基本/经典方法。首先,在进行匹配之前,请尝试基本的gamma/brightness adjustment技术。如果这不令人满意,this classical color transfer method应该给出不错的结果(再次根据您的示例)。它的工作原理是将图像从RGB转换为lαβ(具有使通道之间的相关性最小化的特殊性),在该颜色空间中针对源图像和目标图像计算统计量(均值,std),并最终强制将源分布在图像上。目标图像。如果您进行快速搜索,可以使用许多实现。