Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 检测图像文件中是否存在黑色(或任何颜色像素)的最佳方法?_Ruby_Image Processing_Imagemagick - Fatal编程技术网

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

Ruby 检测图像文件中是否存在黑色(或任何颜色像素)的最佳方法?,ruby,image-processing,imagemagick,Ruby,Image Processing,Imagemagick,检测给定图像文件中任何黑色或彩色像素的最佳和最灵活的算法是什么 比如说,我得到了一个图像文件,可以,比如说,有一个蓝色的背景。任何非蓝色像素,包括白色像素,都被算作标记。如果有X个像素在某个阈值上彼此偏离,则函数返回true 我认为简单地遍历每个像素,看看它的颜色是否与最后一个匹配是最快的。但是,如果像素0,0是偏差的,并且每个其他像素都是相同的颜色,在考虑标记图像之前,我希望允许至少两个偏差像素,这将不起作用或效率非常高。您可以始终检查附近的像素,如果像素3x3是黑色,则检查2x2、2x3、2

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

比如说,我得到了一个图像文件,可以,比如说,有一个蓝色的背景。任何非蓝色像素,包括白色像素,都被算作标记。如果有X个像素在某个阈值上彼此偏离,则函数返回true


我认为简单地遍历每个像素,看看它的颜色是否与最后一个匹配是最快的。但是,如果像素0,0是偏差的,并且每个其他像素都是相同的颜色,在考虑标记图像之前,我希望允许至少两个偏差像素,这将不起作用或效率非常高。

您可以始终检查附近的像素,如果像素3x3是黑色,则检查2x2、2x3、2x4、3x2,3x4等,并有一个treshhold,用于显示附近像素的颜色值距离,以使黑色像素不计入偏差。对任何颜色都一样。在普通图像中,每个像素都应该有一些具有相似颜色的相邻像素,在中等分辨率到高分辨率的图像中,很少有例外


编辑:根据不同的情况,查找一个有效的treshhold可能会因图像而异,因此您可能必须能够微调treshhold以获得良好的效果。

M1:扫描整个图像

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