2016-11-18 64 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我认为这肯定会有所帮助。只要意识到你正在训练模型来识别切出的矩形是否是一辆车。 (我想你也会砍掉很多其他物品?)。如果你的目标是要确认'一张照片是否包含一辆车',我不确定你是否应该剪掉它,因为周围环境也可能是相关的。 –