Colors RGB到单色转换

Colors RGB到单色转换,colors,rgb,monochrome,Colors,Rgb,Monochrome,如何将像素的RGB值转换为单个单色值?我发现了一种可能的解决方案。亮度分量Y(来自CIE XYZ系统)在一个通道中捕获人类最能感知的颜色。因此,使用这些系数: mono = (0.2125 * color.r) + (0.7154 * color.g) + (0.0721 * color.b); 使用(0.299*color.R+0.587*color.G+0.114*color.B) 使用(0.3*color.R+0.59*color.G+0.11*color.B)这取决于你的动机。如果您只

如何将像素的RGB值转换为单个单色值?

我发现了一种可能的解决方案。亮度分量Y(来自CIE XYZ系统)在一个通道中捕获人类最能感知的颜色。因此,使用这些系数:

mono = (0.2125 * color.r) + (0.7154 * color.g) + (0.0721 * color.b);
使用
(0.299*color.R+0.587*color.G+0.114*color.B)


使用
(0.3*color.R+0.59*color.G+0.11*color.B)

这取决于你的动机。如果您只想将任意图像转换为灰度,并使其看起来非常好,那么在这个问题的其他答案中的转换就可以了

如果要将彩色照片转换为黑白照片,该过程可能非常复杂且主观,需要对每个图像进行特定调整。要了解可能涉及的内容,请查看Adobe For Photoshop中的这一部分


在代码中复制这一点需要相当多的时间,并且仍然需要用户干预,才能使生成的图像在美学上“完美”(无论这意味着什么!)。

这与将彩色照片转换为灰度的最新技术相比,包括简单的亮度公式和更复杂的技术。

如前所述,来自RGB三元组的灰度转换(注意,单色图像不需要为灰度)取决于口味

例如,您可以作弊,只提取蓝色分量,只需简单地将红色和绿色分量扔掉,然后复制蓝色值。另一个简单且普遍可行的解决方案是取像素的RGB三元组的平均值,并在所有三个组件中使用该值


专业图像有相当大的市场,而且一点也不便宜,光是Photoshop没有sirree灰度/单色转换插件,这一事实告诉我们,转换就像你希望的那样简单或复杂。

将任何基于RGB的图像转换为单色图像的逻辑不是一个简单的线性转换。在我看来,“颜色分割”技术可以更好地解决这个问题。您可以通过k-means聚类实现“颜色分割”

请参阅MathWorks网站上的参考示例

原版彩色图片。

使用k均值聚类转换为单色后

这是如何工作的?

从整个图像中收集所有像素值。从宽W像素、高H像素的图像中,您将获得W*H颜色值。现在,使用k-means算法创建2个簇(或容器),并将颜色扔到相应的“容器”中。这两个簇代表您的黑白色调

Youtube视频演示使用k-means进行图像分割?

此方法的挑战


k-均值聚类算法易受异常值的影响。一些随机像素的RGB距离远离人群中的其他颜色,很容易使质心倾斜,从而产生意外的结果。

我认为这两个应用程序都是错误的,因为它们适用于伽马校正的RGB值。这些实际上是相同的,我想你指的是灰度。单色意味着图像只有一种色调,并且仍然是彩色的。在应用系数之前,必须将sRGB值线性化,然后重新应用gamma。