减去2个相同的图像(黑白和彩色)以获得色差

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了减去2个相同的图像(黑白和彩色)以获得色差相关的知识,希望对你有一定的参考价值。

我主要有黑白图像,部分颜色(让我们说它是黄色和绿色)。我想找出那些颜色。

为此,我想我可能会将图像转换为黑白图像,然后将b&w图像与原始图像进行比较以找到差异。但我不太确定我应该使用哪种算法来做到这一点。

像伪代码那样的东西:

image = image_from_file('image.jpg')
bw_image = image.convert_to_bw
diff_image = (bw_image - image)
# Build histogram w/o black and white parts, only color ones
diff_image.histogram

我主要专注于libvips来做到这一点,但我只是需要一个如何做到这一点的建议,然后我将能够编码。

如果您知道我上面描述的任何其他方式,我也将不胜感激。

答案

在ruby-vips中你可以做到:

require 'vips'

a = Vips::Image.new_from_file ARGV[0]

# convert to LCh colourspace
a = a.colourspace "lch"

# Chroma (band 1) > 0 means we have some colour ... take > 10, since things 
# like jpg compression will add some colour noise we are not 
# interested in
mask = a[1] > 10

# the mask image will have 255 for TRUE pixels and 0 for FALSE
mask.write_to_file "mask.png"

掩码图像可能不是很有用,但我不清楚你需要什么输出。

LCh colourspace在这里很有用:带1(即C)是像素与中性轴的距离,我想是你想要的。

另一答案

这里正确的方法是转换为HSV或类似的颜色空间,分隔出饱和度或色度。然后找到具有高饱和度/色度值的像素。

然后,HSV(或类似)颜色空间的色调分量为您提供这些像素的颜色(黄色或绿色,作为色度平面上的角度)。

我无法发布代码,因为您已使用两种不同的语言标记了问题,而且我不知道它们中的哪一个是您发布的代码段。我希望你能从这里拿走它。

以上是关于减去2个相同的图像(黑白和彩色)以获得色差的主要内容,如果未能解决你的问题,请参考以下文章

matlab 如何消除信号的高频分量

如何将 WORD中将彩色图片变成灰度图 或 黑白图 ?

如何用matlab将彩色图片变成黑白图片

scss 将图像从黑白变为彩色,仅限CSS,仅使用一个彩色图像

CSS:如何将彩色图像转换为灰色或黑白图像[重复]

颜色空间YUV简单介绍