2012-08-08 70 views
5

我有一張正方形的低分辨率照片,已經被用戶從高分辨率的非正方形原稿中裁剪出來。低分辨率的照片然後被重新調整爲縮略圖。我想自動(不需要用戶干預)以相同的方式重新裁剪原始照片,以獲得更高分辨率的正方形版本。我不要有權訪問原始的修剪器座標。我所擁有的就是這兩張照片。如何使用低分辨率裁剪照片作爲重新裁剪原始高分辨率副本的指南?

下面是一些例子圖像(從我的Facebook的個人資料)來說明我的意思:

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

同樣,我們的目標是用小照片爲指導,以獲得更高的更分辨率從源頭的方形照片。

對解決方案的唯一限制是:

  1. 共性:我用這對個人資料圖片,所以這是完全可以接受的,如果它僅適用於臉部!沒有必要推廣到各種隨機圖像,人們的照片是一個很好的開始。我使用Node,但我很樂意在Ruby,Python,Java或C++(使用Node綁定)中運行此過程。它幾乎肯定會在Heroku或AWS上運行。
  2. 速度:它需要非常快速。爲了有用,它必須以聯機方式運行,因爲我會阻止用戶的界面等待此操作。

有沒有人有任何想法?我對圖像處理知之甚少,所以我不知道從哪裏開始。

編輯:對於Facebook,具體來說,有一個解決方案不是那麼難。原始作物數據可用於配置文件圖像:https://graph.facebook.com/bcherry/profile?fields=pic_crop

這會讓我立即想到我的問題,但可能不是一個長期解決方案,所以下面提供的答案對於更一般的問題仍然很有幫助。

+0

你知道未裁剪的低分辨率照片的尺寸嗎? – jasonlfunk 2012-08-08 18:18:57

+0

我不確定你在問什麼,但除了這兩幅圖像之外,我沒有任何其他信息。 – bcherry 2012-08-08 18:25:09

+0

我認爲你不知道縮略圖的縮放比例是多少?如果不是這成爲一個相當困難的問題。 – 2012-08-08 19:38:35

回答

1

雖然我不會評論我的解決方案的Javascript-ness - 但您基本上試圖在原始圖像和裁剪後調整大小的圖像之間執行Image Registration

many不同的方法來做這樣的事情 - 爲了您的特殊目的,我會從Phase-Correlation類似的方法開始。

編輯:我剛剛找到一個不錯的腳本,使用ImageMagick完全符合你的需求。 「NormCrossCorr」計算歸一化的互相關表面以找到較大圖像中小圖像最匹配的位置。「

希望這會有所幫助!

+0

是的,這聽起來是正確的。感謝你的回答! – bcherry 2012-08-08 20:45:02

+0

這不起作用。這隻有在縮略圖沒有縮小的情況下才有效,即它們必須具有相同的分辨率。 – reptilicus 2012-08-09 13:29:26

+0

然而,您可以逐漸縮放縮略圖,然後進行互相關,並找出最大相關位置。 – reptilicus 2012-08-09 13:32:29

0

這可能是相當重要的裁員是否通過平均或最近的像素來完成。如果縮小尺寸是通過最近像素完成的,則可以查找原始圖像中相應像素的像素值匹配與縮小/裁剪圖像中的像素。除非圖像以某種無損格式存儲,否則必須使比賽非常模糊,但如果您可以識別可能的匹配,則作物的比例和位置立即可用。

如果在縮放中存在一些平均值,或者在圖像壓縮中存在過多的損失,則可以通過高斯模糊兩幅圖像並嘗試基於模糊圖像的局部特徵進行匹配來做到最好,例如x,y原色的最小值或最大值。再次,比賽 將不得不模糊。

相關問題