2017-08-04 43 views
-3

我需要裁剪一個圖像的子像素精度。例如,我可能需要創建一個尺寸爲640x480的帶有角(108.5,350.9)和(368.3,230.1)的插值矩形裁剪。我怎樣才能做到這一點?蟒蛇子像素準確的圖像作物

編輯:將裁剪區域拉伸以適合數據矩陣是一個合理的讓步。但是,您不能將裁剪的邊框更改爲整數座標。

+1

你打算如何表示輸出中的部分像素? –

+0

@MarkRansom好問題,我想圖像格式不允許圖像具有不同的水平和垂直dpi。接下來的最好的事情可能是將作物略微拉伸至整數個像素。所以,在裁剪之後,將每個尺寸向上/向下縮放到最近的像素。 –

+0

當然你可以在垂直和水平方向上有不同的dpi。但dpi與像素或它們的值無關,因此它是一個轉換因子... – Piglet

回答

0

嗯,我不確定我是否可以稱這是一個答案,因爲我不知道你的問題是什麼,但我試圖給你一些啓示。

所以我想你的問題來自一些誤解。

首先,DPI,PPI或任何你想使用的只是一個因素,告訴你每英寸有多少點,點,像素。該因子可以確定打印尺寸或在像素尺寸和英寸尺寸之間進行轉換。 這與裁剪圖像無關。

裁剪矩形區域是一項非常普遍的任務。 同樣具有子像素座標的ROI是非常常見的,因爲它們的座標通常來自產生非整數值的計算。

通常,您只需將座標四捨五入到整數,以便您的問題消失。

如果要獲取子像素座標的亮度值,可以在相鄰像素之間進行插值。但是由於圖像不能有半個像素,因此您必須將這些信息存儲在具有更多或更少像素的圖像中。

因此,如果我不想使用圓角座標,我會這麼做。

如果我的座標是> = x.5我會添加一列或一行,否則我會跳過像素。 如果我要添加一個列或行,我會插入它的值。

但說實話,我沒有看到任何用例,我從來沒有做過任何事情,只是在我的職業生涯中使用整數座標進行裁剪。

您不能打印像素的小數部分,也不能顯示它們,所以有什麼意義?

+0

感謝您的建議,但實際上存在需要選擇子像素值的合法情況。將選區延伸到整數個像素是很好的,但它必須在不添加相鄰像素信息的情況下完成。例如,當您使用非常小的作物時,例如, 100×100。它不是用於製作大型Photoshop圖像或類似的東西。 –

+0

@JosephValles請不要告訴我,有合法的情況。命名它們......你在談論哪些用例?你想要解決的問題是什麼?如果你不插值的話,使用子像素座標又有什麼意義?這是無稽之談...... – Piglet

+0

插值幾乎可以肯定是做子像素裁剪所必需的。但是,不在裁剪區域內的像素信息不應該被扔到裁剪區域。這不是一個乾淨的解決方案。 –

0

解決方案似乎需要您計算想要從圖像中裁剪出的矩形的中心,以及矩形的高度和寬度。然後放大整個圖像,直到所需的矩形具有整數尺寸,然後進行通常的裁剪。您將不得不按照單獨的數量縮放水平和垂直尺寸,所以這會稍微扭曲裁剪部分,並且必須根據所使用的圖像編碼格式調整失真。