Python 减去两个相同的图像(黑白和彩色)得到色差

Python 减去两个相同的图像(黑白和彩色)得到色差,python,ruby,image-processing,vips,Python,Ruby,Image Processing,Vips,我的图像大部分是黑白的,有些部分是彩色的(比如说黄色和绿色)我想找出那些颜色。 为此,我想我可能会将图像转换为黑白图像,然后将黑白图像与原始图像进行比较以找出差异。但我不太确定我应该使用哪种算法来实现这一点 伪代码中的类似内容: image = image_from_file('image.jpg') bw_image = image.convert_to_bw diff_image = (bw_image - image) # Build histogram w/o black and whi

我的图像大部分是黑白的,有些部分是彩色的(比如说黄色和绿色)我想找出那些颜色。

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

伪代码中的类似内容:

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或类似的颜色空间,以分离饱和度或色度。然后找到饱和度/色度值较高的像素

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


我无法发布代码,因为您用两种不同的语言标记了问题,我不知道哪种语言是您发布的代码片段。我希望你能从这里开始。

正确的方法是转换为HSV或类似的颜色空间,以分离饱和度或色度。然后找到饱和度/色度值较高的像素

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


我无法发布代码,因为您用两种不同的语言标记了问题,我不知道哪种语言是您发布的代码片段。我希望你能从这里开始。在ruby VIP中,你可以做到:

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"
遮罩图像可能没有多大帮助,但我不清楚您需要什么样的输出


在这里很有用:波段1(即C)是像素到中性轴的距离,我认为这正是你想要的。

在ruby VIP中,你可以做:

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"
遮罩图像可能没有多大帮助,但我不清楚您需要什么样的输出


在这里很有用:波段1(即C)是像素到中性轴的距离,我想这正是你想要的。

黑白是指灰度还是二进制黑白?这对你有用吗@果冻greyscale@AdamMoller谢谢,这可能会有帮助,我会尝试用rubyCan重写它。你能提供一个样本图像吗?黑白你是指灰度还是黑白二元?这对你有用吗@果冻greyscale@AdamMoller谢谢,这可能会有帮助,我会尝试用rubyCan重写它。你能提供一个示例图像吗?