image - 如何使用低分辨率的裁剪照片作为指导,重新裁剪原始照片的高分辨率副本?

标签 image node.js image-processing imagemagick

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

这里有一些示例图片(来 self 的 Facebook 个人资料)来说明我的意思:

Original, high-resolution photo - Cropped, then shrunk, square photo

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

解决方案的唯一限制是:

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

有人有什么想法吗?我不太了解图像处理,所以我真的不知道从哪里开始。

编辑:具体来说,对于 Facebook,有一个解决方案并不那么难。原始裁剪数据可用于个人资料图像:https://graph.facebook.com/bcherry/profile?fields=pic_crop

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

最佳答案

虽然我不会评论我的解决方案的 Javascript-ness - 你基本上是在尝试执行 Image Registration在原始图像和裁剪后调整大小的图像之间。

many不同的方法来做这样的事情 - 为了您的特定目的,我将从 Phase-Correlation 开始喜欢的方法。

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

希望这对您有所帮助!

关于image - 如何使用低分辨率的裁剪照片作为指导,重新裁剪原始照片的高分辨率副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11870576/

相关文章:

javascript - Node.js 上的 TokenError : Bad Request; Google OAuth2; Passport. js;能够 console.log 数据,但是会出现错误

mysql - Sequelize从belongsTo关系中获取值

python - 相当于SkImage中的cv2.INTER_AREA

c - 更快(优化)的图像抽取解决方案 (C++)

html - Facebook 的图像缩略图共享链接

c++ - 从字符数组中检索图像

java - 在JLabel中添加图像但不响应

Javascript 如何更改图像 src 的高度和宽度

javascript - es6对象传播的奇怪行为

c - 如何用 C 语言在新图像上写入新图像和零垫引用图像