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
用PHP检测图像的主要阴影_Php_Image Processing_Gd - Fatal编程技术网

用PHP检测图像的主要阴影

用PHP检测图像的主要阴影,php,image-processing,gd,Php,Image Processing,Gd,我以前使用过GD,但只在动态调整/生成图像时使用过——尽管我很肯定它有能力完成我想要的任务 尽可能简单地说,我需要检查一个图像,以确定它的背景是浅背景还是暗背景。也就是说,如果背景主要为“浅”,则返回值为“1”;如果背景主要为“暗”,则返回值为“0” 在这个过程中,一次只能迭代5个图像,但我非常清楚处理时间——页面将经常被调用 有人能给我指出正确的方向吗?首先看看是否有任何图案可以利用——例如,左上角或右上角(例如)总是背景色吗?如果是这样的话,只需看看像素的颜色就可以了 也许你可以通过观察一些

我以前使用过GD,但只在动态调整/生成图像时使用过——尽管我很肯定它有能力完成我想要的任务

尽可能简单地说,我需要检查一个图像,以确定它的背景是浅背景还是暗背景。也就是说,如果背景主要为“浅”,则返回值为“1”;如果背景主要为“暗”,则返回值为“0”

在这个过程中,一次只能迭代5个图像,但我非常清楚处理时间——页面将经常被调用


有人能给我指出正确的方向吗?

首先看看是否有任何图案可以利用——例如,左上角或右上角(例如)总是背景色吗?如果是这样的话,只需看看像素的颜色就可以了

也许你可以通过观察一些关键像素并求平均值来得到一个“足够好”的想法

如果做不到像这样简单的事情,你需要做的工作就会开始以数量级的数量级增长

我有一个很好的想法,那就是把从左上角到右下角成对角线的像素带(也许可以看看)。寻找深色和浅色的跑步路线,可能是最长的路线;如果这不起作用,也许你应该根据跑步的明暗程度来“评分”

如果您的图像不必要地大(比如1000x1000或更大),则使用imagecopyresized将其缩小到合理的大小(比如80x80)

如果图像的大部分是背景色,则可以将图像重采样为1个像素,然后检查该像素的颜色(或者可能是小像素,4x4左右,然后计算像素数以查看图像主要是亮还是暗)

请注意,imagecopyresampled要比imagecopyresized昂贵得多,因为“resized”只从原始图像中提取单个像素,而“resampled”实际上将像素混合在一起

如果你想测量“亮度”,你可以简单地将R、G和B值相加。或者你也可以使用luma的公式:


这提供了一个更加“以人为中心”的轻盈度度量。

感谢您给出了一个令人难以置信、深思熟虑的答案!我们决定使用10x10大小的样本。请注意:imagecopyresampled使用双三次插值算法。
Y' = 0.299 * R + 0.587 * G + 0.114 * B