减去 2 个相同的图像(黑白和彩色)得到色差
Subtract 2 identical images (B&W and colorful) to get color difference
我的图像大部分是黑白的,有些部分是彩色的(假设是黄色和绿色)。 我想找出那些颜色。
为此,我想我可能会将图像转换为黑白图像,然后将黑白图像与原始图像进行比较以找出差异。但是我不太确定我应该使用哪种算法来做到这一点。
类似伪代码的东西:
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 来做到这一点,但我只需要一般如何做到这一点的建议,然后我就可以编写代码了。
如果您知道任何其他方法来执行上述操作,我将不胜感激。
此处正确的方法是转换为 HSV 或类似的颜色 space 以分离出饱和度或色度。然后找到 saturation/chroma.
值高的像素
HSV(或类似)颜色的色调分量 space 然后为您提供这些像素的颜色(黄色或绿色,作为色度平面上的角度)。
我无法 post 编码,因为您用两种不同的语言标记了问题,我不知道其中哪一种是您 post 编写的代码片段。我希望你能从这里拿走它。
在 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)是像素与中性轴的距离,我认为这正是您想要的。
我的图像大部分是黑白的,有些部分是彩色的(假设是黄色和绿色)。 我想找出那些颜色。
为此,我想我可能会将图像转换为黑白图像,然后将黑白图像与原始图像进行比较以找出差异。但是我不太确定我应该使用哪种算法来做到这一点。
类似伪代码的东西:
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 来做到这一点,但我只需要一般如何做到这一点的建议,然后我就可以编写代码了。
如果您知道任何其他方法来执行上述操作,我将不胜感激。
此处正确的方法是转换为 HSV 或类似的颜色 space 以分离出饱和度或色度。然后找到 saturation/chroma.
值高的像素HSV(或类似)颜色的色调分量 space 然后为您提供这些像素的颜色(黄色或绿色,作为色度平面上的角度)。
我无法 post 编码,因为您用两种不同的语言标记了问题,我不知道其中哪一种是您 post 编写的代码片段。我希望你能从这里拿走它。
在 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)是像素与中性轴的距离,我认为这正是您想要的。