用 PHP 比较图像中的形状

Posted

技术标签:

【中文标题】用 PHP 比较图像中的形状【英文标题】:Compare a shape in an image with PHP 【发布时间】:2015-07-28 19:59:57 【问题描述】:

我正在尝试比较 php 中的形状。我有一个包含很多图像的数据库,在这些图像中有一个形状(主要在图像的中心)。现在我想将这些图像与形状进行比较。

输入是一个与数据库中的图像大小完全相同的形状 (png)。

我做了一个函数,它获取形状的颜色并将其变为黑色(背景为白色)

输入是这样的:

原文是这样的:

我可以比较图像中的每个像素并跟踪有多少黑色像素是相同的,但这会占用大量 CPU,而且我认为它不会每次都有效。

我也可以使用另一种语言,例如 python,但我真的想在 PHP 中解决这个问题。有没有人有想法以实际的方式做到这一点?

问题“Compare 2 images in php”中的答案与我预期的不同。我需要比较图像的一部分(在示例中背景为白色,但背景中可能存在一些噪音)

【问题讨论】:

Compare 2 images in php的可能重复 不是真实的@cmorrissey,我需要比较图像的一小部分,ImageMagick lib 比较整个.. 在我的示例中,我展示了最好的结果,但可能有图像中有一些噪点。 那里有几个答案,看看libpuzzlegithub.com/jedisct1/libpuzzle 也许这可能有用:compareimages.nikhazy-dizajn.hu 在某些时候,您将不得不比较每个像素。但是您可以通过逐步准确的比较来优化流程。您能否提供用于将图像变为黑白的代码和一些示例图像? 【参考方案1】:

这似乎可以通过 ImageMagick 中的trimImage() function(命令行上的-trim 标志)来实现。考虑到您已经能够将图像转换为黑色前景和白色背景,此功能应该始终满足您的需求。此时只需比较您链接的问题中所述的图像。

这是在带有填充的图像的命令行上使用trim 的结果:


我假设您创建的功能类似于to the algorithm in findimagedupes。如果没有,你应该借用这个想法。

【讨论】:

嗨@anonymous。感谢您的回答。我将写一篇文章,展示一些代码并进行解释,但简而言之:我正在使用blackThresholdImage() 将图像设为黑白。然后我使用morphology 函数去除图像中的噪点。之后我trim 图像并运行欺骗算法。在快速测试(本地)中,它在 +/- 5 秒内检查 100 张图像。

以上是关于用 PHP 比较图像中的形状的主要内容,如果未能解决你的问题,请参考以下文章

python使用NiBabel包加载.nii文件使用opencv加载jpg原图图像并转化为灰度图最后比较原图和mask掩码图的形状是否一致

机器视觉识别技术有些啥种类

Halcon视觉形状模板匹配

LeafletAnalyzer--一款用于叶片的量化比较和分类的自动化软件

PHP中的clone和new性能比较

如何检测图像PHP中形状的位置[关闭]