2016-07-26 93 views
0

我在邊界框形式中有一組對象註釋。我有這些邊界框的x,y和x2y2座標。我希望對圖像進行預處理,並使用Matlab的imresize或opencv/python INTER_AREA調整它們的大小。沒有問題,但我希望找到邊界框座標的新位置。在調整圖像大小後找到新的位置(x,y)

理想情況下,我應該能夠從INTER_AREA中獲得變換矩陣並將其應用於座標,但我沒有看到一種方法來實現這一點,儘管我一直在瀏覽一大堆。

謝謝。

+1

該轉換與您是否使用INTER_AREA或其他解釋無關。只有比例因子很重要。向我們展示你到目前爲止所擁有的。 – cxyzs7

+0

嗯,我沒有寫代碼,因爲我想明白。調整大小算法的工作方式無關緊要嗎?它是從(0,0)還是中心點調整大小?我是否只需要極座標?我想要使​​用像這樣的東西 'resize(src,dst,Size(),0.5,0.5,interpolation);' 我想要做的是縮小我的圖像,這是854x480最好的東西,將最長邊緣爲500.或者我只是應用一個縮放比例因子,我不知道0.35 – dusa

+0

(0,0)仍然會映射到(0,0),所以只有比例因子很重要。 – cxyzs7

回答

1

您可以將bboxes表示爲原始圖像的百分比,然後調整圖像大小並將bboxes轉換回圖像座標。

例如:

function x1p,y1p,x2p,y2p = toPercentage(img_orig, x1,y1,x2,y2) 
    h,w,c = size(img_orig); 
    x1p = x1/w; 
    x2p = x2/w; 
    y1p = y1/h; 
    y2p = y2/h; 

一旦你有這些比例調整圖片大小,然後轉換BBOX百分比回調整後的圖像的座標。

function x1,y1,x2,y2 = toImCoord(img_resized, x1p,y1p,x2p,y2p) 
    h,w,c = size(img_resized); 
    x1 = x1p * w; 
    x2 = x2p * w; 
    y1 = y1p * h; 
    y2 = y2p * h;