用 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 比较整个.. 在我的示例中,我展示了最好的结果,但可能有图像中有一些噪点。
那里有几个答案,看看libpuzzle
github.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掩码图的形状是否一致