RGB to monochrome conversion如何将像素的RGB值转换为单个单色值? 我在颜色常见问题解答中找到了一种可能的解决方案。亮度分量Y(来自CIE XYZ系统)捕获人类在一个通道中最常感知为的颜色。因此,使用这些系数:
这篇最近的科学文章比较了将彩色照片转换为灰度的最新技术,包括简单的亮度公式和更复杂的技术。 此MSDN文章使用 此Wikipedia文章使用 这取决于您的动机。如果您只想将任意图像转换为灰度图像,并且看起来不错,则可以使用此问题的其他答案进行转换。 如果要将彩色照片转换为黑白照片,此过程可能会非常复杂且主观,需要对每个图像进行特定的调整。要了解可能涉及的内容,请查看Adobe for Photoshop中的本教程。 在代码中复制此内容相当费时,并且仍然需要用户干预才能使生成的图像在美学上"完美"(无论这意味着什么!)。 如还提到的,来自RGB三重奏的灰度级转换(请注意,单色图像不必是灰度级)容易受味道的影响。 例如,您可以作弊,仅将蓝色和红色成分扔掉,然后复制蓝色值,从而仅提取蓝色成分。另一个简单且通常可行的解决方案是取像素的RGB三元组的平均值,并在所有三个分量中使用该值。 仅适用于Photoshop的专业且价格不便宜的灰度/单色转换器插件有相当大的市场,这一事实说明,转换就像您希望的那样简单或复杂。铅> 将任何基于RGB的图片转换为单色的逻辑背后都不是简单的线性变换。我认为可以通过"颜色分割"技术更好地解决此类问题。您可以通过k均值聚类实现"颜色分割"。 请参阅MathWorks网站上的参考示例。 https://www.mathworks.com/examples/image/mw/images-ex71219044-color-based-segmentation-using-k-means-clustering 彩色原始图片。 使用k均值聚类转换为单色后 这是如何工作的? 从整个图像中收集所有像素值。从宽W像素,高H像素的图像中,您将获得W * H颜色值。现在,使用k-means算法创建2个群集(或bin),并将颜色放入适当的" bins"中。 2个簇代表您的黑色和白色阴影。 Youtube视频展示了使用k均值的图像分割吗? 使用此方法的挑战 k均值聚类算法容易受到异常值的影响。一些随机像素的RGB距离远离其他人群,其颜色很容易使形心偏斜,从而产生意外的结果。 |