0

我需要以编程方式确定在图像上覆盖文本的最佳位置。换句话说,我需要从背景中分辨出前景。我试过 imagemagick:http ://www.imagemagick.org/Usage/scripts/bg_removal 。不幸的是,这还不够好。这些图像可以是几乎任何东西的照片,但通常背景模糊。

我现在想试试 liuliu 的 CCV。代码:https ://github.com/liuliu/ccv ,演示: http: //liuliu.me/ccv/js/nss/

该演示使用看起来像 json haar 级联的东西来检测人脸:https ://github.com/liuliu/ccv/blob/unstable/js/face.js

我该怎么做: 1. 将 xml haar 级联文件转换为能够与 CCV 一起使用 2. 为我的目标生成最佳级联(图像上的文本放置) 3. 查找 CCV 的任何文档

最后,有没有更好的方法来解决这个问题?

编辑:我在这里问过边界问题:https ://stackoverflow.com/questions/10559262/programmatically-place-text-in-an-image

4

1 回答 1

0
  1. 将 xml haar 级联文件转换为能够与 CCV 一起使用
  2. 为我的目标生成最佳级联(图像上的文本放置)
  3. 查找 CCV 的任何文档

我不知道 1)(无论如何,哪些 XML 文件?我猜一些来自 opencv?)或 3),但这是我对 2)的看法

要使 haar cascade 成为 lá viola&jones,您需要一系列包含所需对象(例如人脸)的小型训练图像。

每个图像一个对象,尽可能少的背景,都在相同的方向和大小,归一化,因此它们都具有相同的平均亮度和亮度变化。您将需要大量训练图像。

您还需要一系列仅包含背景的负面训练图像,大小/亮度等与正面示例相同。

但是,我怀疑这种方法是否适合您:

Haar 过滤器通过识别所有前景对象中常见的矩形亮/暗结构来工作。所以你想要的前景图像需要有一个共同的结构。

一个示例 haar 过滤器级联的工作方式如下(非常简化):

  • x1,y1 处的矩形区域是否比 x2,y2 处的区域暗?如果不是 --> 不是一张脸,如果是 --> 继续
  • x3,y3 处的区域是否比 x4,y4 处的区域暗?如果不是 --> 不是一张脸 --> 如果是,继续
  • 等等 ....

(要在更大的图像中找到人脸的位置,您对图像中的每个可能位置执行此过滤器。过滤器级联在拒绝非人脸方面非常快,因此这是可行的。)

所以你的前景对象需要有一个共同的模式。对于面部,眼睛区域比脸颊区域更暗,嘴巴比下巴更暗,以此类推。

如果您只是旋转面,相同的面过滤器将停止工作。你不能为树木和人脸建立一个好的过滤器,你绝对不能为一般的前景对象建立一个过滤器。它们之间没有这样的共同结构。您需要为每种可能的对象类型使用单独的过滤器,因此除非您的图片仅显示非常有限的类型,否则这将不起作用

于 2012-05-12T08:13:00.350 回答