图像中的颜色匹配

gin*_*gin 8 image colors image-processing imagej

我有两张图像(切片),由两个相机传感器拍摄以完成一张图像。然而,由于传感器性能的一些差异,它们的颜色/色调有所不同,我需要将它们匹配以制作一张统一的图像。

我使用了此处HistogramMatcher解释的斐济(图像 J)中包含的函数 来将第二个图像的颜色与第一个图像的颜色相匹配。它给出了可接受的结果,但仍需要进一步处理。

所以我的问题是,拥有统一形象的最佳方法是什么。我应该从亮度、色调然后饱和度开始吗?除了“HistogramMatcher”功能之外还有其他颜色匹配功能吗?

下面是一个图像示例

在此输入图像描述

Mar*_*ell 9

我将你的图像分成两部分,如下所示,然后使用scikit-image的直方图匹配函数:

在此输入图像描述 在此输入图像描述

#!/usr/bin/env python3

import numpy as np
from skimage.io import imread, imsave
from skimage import exposure
from skimage.transform import match_histograms

# Load left and right images
L = imread('rocksA.png')
R = imread('rocksB.png')

# Match using the right side as reference
matched = match_histograms(L, R, multichannel=True)

# Place side-by-side and save
result = np.hstack((matched,R))
imsave('result.png',result)
Run Code Online (Sandbox Code Playgroud)

这给出了这个结果:

在此输入图像描述


fmw*_*w42 5

为了进行比较,我有两个 Imagemagick bash shell 脚本,可将颜色从一张图像传输到另一张图像。(参见http://www.fmwconcepts.com/imagemagick/index.php)。一种是进行颜色直方图匹配,另一种是通过匹配均值和标准差(即亮度和对比度)来进行颜色调整。

我将使用 Mark Setchell 的分离图像。

输入

在此输入图像描述 在此输入图像描述

直方图匹配:

histmatch -c rgb right.png left.png newleft_histmatch.png

convert newleft_histmatch.png right.png +append result_histmatch.png
Run Code Online (Sandbox Code Playgroud)


在此输入图像描述

平均值/标准匹配:

matchimage -c rgb left.png right.png newleft_matchimage.png

convert newleft_matchimage.png right.png +append result_matchimage.png
Run Code Online (Sandbox Code Playgroud)


在此输入图像描述

有关使用均值和标准差进行颜色传输的 Python/OpenCV 解决方案,请参阅https://www.pyimagesearch.com/2014/06/30/super-fast-color-transfer-images/