PHP – 检测图像周围空白区域的快速方法?
我需要一种非常快速的方法来检测图像周围的空白区域,特别是我需要第一个非白色像素从每一侧开始的坐标(例如左侧,顶部,右侧,底部).
ImageMagick太慢,因此沿着每一侧的每个像素循环使用GD并查看它是否为白色.我必须做大约500,000,000张图像,所以每微秒都有所作为. 顺便说一下,图像是黑色的&只有白色. 如果有一个外部应用程序可以执行此操作,我可以用PHP执行,那就没关系. 解决方法
你知道有关可用于帮助的图像的任何额外信息吗?
像图像开始白色然后变黑然后保持黑色?或者任何像素可以是白色还是黑色,而任何一个像素都是白色或黑色这一事实并不会告诉你关于其他像素的事情? 如果任何像素可以是白色或黑色而不管其他像素,那么我看不出你怎么做比检查循环中的每个像素要好得多,直到找到第一个非白色像素… 如果您知道如果左边的第五个像素是白色,那么0-4肯定是白色的,那么您可以通过使用某种修改的二进制类型搜索来检查更少的像素(因为您可以跳过检查0-4在这种情况下,只检查说5,然后10,如果5是白色,10是黑色你知道点在5-10之间,所以你可以分裂差异,检查7等等,直到你找到点他们改变了.) 我想你最终可能会在速度和准确度之间进行权衡.最准确的方法是从四肢开始切割每个列和行,检查每个像素.一旦您在列中找到了匹配,就会在一侧找到边缘.这可以并行完成,因为每个检查都是独立的.正如你所说,你可以加快速度,只检查每个第n个像素,但偶尔也会出现这种情况,特别是对于这么大的数据集.这可能是也可能是不可接受的.您可以通过检查找到匹配的区域来检查匹配是否准确来改善这一点.因此,如果您检查每个第3个像素并且您在像素15处找到命中,则检查14以查看它是否是命中(如果是14,则检查13).使用它你可以减少支票. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |