2012-05-18 64 views
1

我使用meshgrid對圖像進行了轉換,但新座標部分超出了原始圖像的範圍,導致轉換失敗。使用網格進行圖像轉換的邊界條件

首先我用夾子

... 
tX = numpy.clip(tX.astype(numpy.int),0,image.w) 
tY = numpy.clip(tY.astype(numpy.int),0,image.h) 
result image([tX,tY]) 

其導致類似於「最近的」邊界條件的影響。

我想所有的外部像素都是黑色的。我想我可以通過在meshgrid上使用布爾數組來實現這一點,但我不知道如何正確地將布爾數組應用到meshgrid。

tXbool = numpy.abs(tX) < image.w 
tXbool.shape 
(850, 1280) 
tX[tXbool].shape 
(193180,) 

回答

0

好吧,那我是怎麼做的到底:

tXbool = (0 < tX) & (tX < image.w) 
tybool = (0 < tY) & (tY < image.h) 
outliers = tXbool & tybool 

mask = where(outliers,1,0) 
mask4channels = dstack([mask,mask,mask]) 
image = image*mask4channels 
1

你應該逆變換總是應用於像素的目標圖像,並使用此來查找(插值)源圖像中的顏色/值。否則,最終會出現漏洞和量化問題。這裏有一個參考,或者在任何圖像處理教科書中查找圖像轉換/扭曲:http://www.cs.clemson.edu/~dhouse/courses/405/notes/image-warps.pdf

+0

這是一個很好的觀點。注意這一點非常重要。 – Framester