2016-11-18 28 views
0

我試圖保存圖像中的每個矩形作爲單獨的jpeg圖像以便能夠訓練神經網絡。我這是怎麼畫一個矩形在卡車:如何分離和保存圖像的一部分?

function hdl = BBox(img, samp) 

I = imread(img); 
hdl = imshow(img); 
hold on; 

s = size(samp,1); 

for i=1:s 

bbox = samp(i,:); 

X = [bbox(3)-(bbox(5)), bbox(3)-(bbox(5)), bbox(3)-(bbox(5))+2*bbox(5), bbox(3)-(bbox(5))+2*bbox(5), bbox(3)-(bbox(5))]; 
Y = [bbox(4)-(bbox(6)), bbox(4)-(bbox(6))+2*bbox(6), bbox(4)-(bbox(6))+2*bbox(6), bbox(4)-(bbox(6)), bbox(4)-(bbox(6))]; 

Cx = bbox(3); 
Cy = bbox(4); 

H = [X;Y;ones(1,5)]; %// points as 3D homogeneous coordinates 
Tc = [1 0 -Cx; 0 1 -Cy; 0 0 1]; %// translation as a matrix 
Tr = [cosd((-bbox(7))) -sind((-bbox(7))) 0; sind((-bbox(7))) cosd((-bbox(7))) 0; 0 0 1]; %// rotation 
Hr = inv(Tc) * Tr * Tc * H; %// all transformations as matrix products 

plot(Hr(1,:), Hr(2,:)); %// the rotated rect 
disp(Hr); 

end 

我不認爲對旋轉矩形的imcrop命令作品。

如何將每個矩形保存爲不同的圖像?

enter image description here

回答

0

我想一個簡單的方法是使用extractRotatedPatch File Exchange Submission

rpatch = extractRotatedPatch(img, center, width, height, angle) 

旁註:

雖然這不是一個Matlab的問題,我只是想給你一個頭了您可能需要在機器學習之前對數百萬幅圖像進行訓練,才能開始取得體面的結果。

+0

感謝您的功能。關於機器學習問題,我希望你能告訴我:我必須像這樣分開每輛車來創建一個深入的學習CNN或沒有必要?我想訓練一個CNN來探測衛星圖像中的車輛。 –

+0

@HadiGhahremanNezhad我認爲這肯定會有所幫助。只要意識到你正在訓練模型來識別切出的矩形是否是一輛車。 (我想你也會砍掉很多其他物品?)。如果你的目標是要確認'一張照片是否包含一輛車',我不確定你是否應該剪掉它,因爲周圍環境也可能是相關的。 –