【问题标题】:Finding spot on an image - mathematical way?在图像上找到位置 - 数学方法?
【发布时间】:2013-03-20 12:08:24
【问题描述】:

我需要在图像上找到一个预定义区域并将其替换为另一个图像(只需嵌入后者)。预定义的点将是一个可变大小的矩形区域,其中填充了先前约定颜色的纯色背景。

关于如何实现这一目标的任何建议?

我想我可以通过循环并逐行逐个像素地遍历图像来找到指定颜色的第一个像素,但我觉得这不是最有效的解决方案。由于这个地方应该比较大,所以我也考虑过图片(请看下面的附件)。

所以我需要帮助来定义这些循环。我相信我将不得不为此使用一些数学函数。

例如,如果大图是正方形,对角线循环(黄色 EF 线)将使用简化的线性函数y=x (y=1x+0),但不太可能真的方方正正。所以我将不得不使用扩展的全线性函数y=kx+b,其中k 将与矩形大小有关(我认为k=height/width),而b 将只是0。所以循环看起来喜欢:

$k = 1080/1920;
for ( $x=1920; $x>0; $x-- ) {
    $y = $k*$x;
}

但那是黄色的,我猜是最简单的。现在,我如何定义其他人?请帮忙。谢谢

【问题讨论】:

  • 你们为什么投票赞成关闭这个?

标签: php math image-processing gd


【解决方案1】:

获取您正在搜索的子图像的片段并在大图像中搜索它。

可以使用 ImageMagick 的子图搜索:

compare -verbose -dissimilarity-threshold 0.1 -subimage-search subimage.jpg bigimage.jpg

阅读更多关于hereherehere的信息。

它要么告诉你“TooDissimilar”,要么告诉你子图像的 x,y 位置。

【讨论】:

  • 感谢您的快速回复。 它会告诉你... 你添加的更新澄清了很多。不确定 ImageMagick 在所使用的共享主机上是否可用,但我会考虑将其作为一个选项。
  • 更新:我不是在寻找子图,子图是我找到位置后要嵌入的。所以我猜这并不是真正的比较,因为没有什么可比较的。
  • “预定义的点将是一个可变大小的矩形区域,填充有先前约定颜色的纯色背景”——这就是您定义要搜索的点的方式,所以为什么不生成该矩形,将其作为图像写入磁盘,然后使用与 subimage-search 进行比较在大图中找到它。这是一种方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-24
  • 1970-01-01
  • 2019-05-12
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多