gin*_*gin 8 image colors image-processing imagej
我有两张图像(切片),由两个相机传感器拍摄以完成一张图像。然而,由于传感器性能的一些差异,它们的颜色/色调有所不同,我需要将它们匹配以制作一张统一的图像。
我使用了此处HistogramMatcher解释的斐济(图像 J)中包含的函数 来将第二个图像的颜色与第一个图像的颜色相匹配。它给出了可接受的结果,但仍需要进一步处理。
所以我的问题是,拥有统一形象的最佳方法是什么。我应该从亮度、色调然后饱和度开始吗?除了“HistogramMatcher”功能之外还有其他颜色匹配功能吗?
下面是一个图像示例
我将你的图像分成两部分,如下所示,然后使用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)
这给出了这个结果:
为了进行比较,我有两个 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/