检测图像文件中是否存在黑色(或任何颜色像素)的最佳方法?

时间:2010-04-26 22:23:57

标签: ruby image-processing imagemagick

检测给定图像文件中任何黑色(或彩色像素)的最佳和最灵活的算法是什么?

假设我有一个图像文件,可以说是蓝色背景。并且任何非蓝色像素(包括白色像素)都被计为“标记”。如果在某个阈值处有X个像素彼此偏离,则该函数返回true。

我认为只是简单地遍历每个像素并查看其颜色是否与最后一个匹配是最快的。但是,如果是像素(0,0)是偏离的情况,并且每隔一个像素是相同的颜色(并且我想在考虑图像被“标记”之前允许至少几个偏离的像素),这将不起作用或者非常有效率。

2 个答案:

答案 0 :(得分:0)

你总是可以检查附近的像素,如果像素3x3是黑色的,那么检查2x2,2x3,2x4,3x2,3x4等等,并且对于黑色像素的那些附近像素的颜色值有多远可以有一个阈值算作偏差。并且对任何颜色都做同样的事情。在正常图像中,每个像素应该有一些具有相似颜色的相邻像素,对于高分辨率图像,这种情况非常少见。

编辑:找到一个有效的阈值可能会因图像而异,因此您可能必须能够微调阈值以获得良好的效果。

答案 1 :(得分:0)

M1:扫描整个图像。

M2:Xor,你正在寻找的颜色。例如,您正在寻找r,g,b =(112,233,35),XOR第一个r层为112,g为233,b为35(假设其24位图像(每层为8位))。在生成的图像中,找到最亮的像素,然后返回原始图像中的那些像素进行检查。