5

我有一张方形的低分辨率照片,它是(由用户)从高分辨率、非方形的原始照片中裁剪出来的。然后将低分辨率照片向下调整为缩略图。我想自动(无需用户干预)以相同的方式重新裁剪原始照片,以获得方形版本的更高分辨率副本。我无权访问原始的裁剪器坐标。我只有这两张照片。

以下是一些示例图片(来自我的 Facebook 个人资料)来说明我的意思:

原始的高分辨率照片-裁剪,然后缩小,方形照片

同样,我们的目标是使用小照片作为指南,从源头获得分辨率更高的方形照片。

解决方案的唯一限制是:

  1. 一般性:我将它用于个人资料图片,所以如果它只适用于完全可以接受的面部!无需推广到各种随机图像,人物图片是一个很好的起点。
  2. 平台:我使用的是 Node,但我很乐意在 Ruby、Python、Java 或 C++(使用 Node 绑定)中运行这个过程。它几乎肯定会在 Heroku 或 AWS 上运行。
  3. 速度:它需要非常快。为了使它有用,它必须以在线方式运行,因为我会阻止用户界面等待此操作。

有没有人有任何想法?我对图像处理了解不多,所以我真的不知道从哪里开始。

编辑:对于 Facebook,具体来说,有一个几乎没有那么难的解决方案。原始作物数据可用于个人资料图片:https ://graph.facebook.com/bcherry/profile?fields=pic_crop

这将使我克服眼前的障碍,但可能不是一个长期的解决方案,因此下面提供的答案对于更普遍的问题仍然很有帮助。

4

3 回答 3

1

虽然我不会评论我的解决方案的 Javascript 特性 - 您基本上是在尝试在原始图像和裁剪、调整大小的图像之间执行图像配准。

很多不同的方法可以做这样的事情——为了你的特定目的,我将从类似相位相关的方法开始。

编辑:我刚刚使用 ImageMagick 找到了一个很好的脚本,它完全符合您的需要。NormCrossCorr “计算归一化的互相关曲面,以找到小图像在大图像中最匹配的位置。”

希望这可以帮助!

于 2012-08-08T19:40:25.900 回答
0

为此,您需要的不仅仅是 javascript。我会用python研究图像处理。可能有用的链接:

scikits-图像

太平船务

图像比较算法

机器学习

于 2012-08-08T19:27:44.283 回答
0

缩小尺寸是通过平均像素还是最近像素来完成的,这可能很重要。如果缩小是通过最近的像素完成的,您可以查找像素值匹配,以将原始图像中的像素与缩小/裁剪图像中的像素对应。除非图像以某种无损格式存储,否则您必须使匹配非常模糊,但如果您可以识别可能的匹配,则裁剪的比例和位置立即可用。

如果缩放中有一些平均,或者图像压缩损失太大,您可能会通过对两个图像进行高斯模糊并尝试基于模糊图像的局部特征(例如局部最小值的 x、y 或原色的最大值。同样,匹配必须是模糊的。

于 2012-08-08T19:32:56.260 回答