2016-11-18 6 views
0

Ich versuche, jedes Rechteck in einem Bild als separate JPEG-Bild zu speichern, um ein neuronales Netzwerk trainieren zu können. das ist, wie ich ein Rechteck über Lastwagen ziehen:Wie trennt und speichert man einen Teil eines Bildes?

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 

Ich glaube nicht die imcrop Befehl funktioniert für gedrehte Rechtecke.

Wie kann ich jedes Rechteck als ein anderes Bild speichern?

enter image description here

Antwort

0

Ich denke, eine einfache Möglichkeit, die extractRotatedPatch File Exchange Submission

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

Nebenbei bemerkt zu verwenden wäre:

Obwohl dies kein Problem Matlab ist, dass ich Ihnen nur geben will eine Heads-up dass Sie es möglicherweise auf Millionen von Bildern trainieren müssen, bevor MachineLearning beginnen würde, anständige Ergebnisse zu liefern.

+0

danke für die Funktion. Zum Thema MachineLearning hoffe ich, dass Sie mir sagen können: Muss ich jedes Fahrzeug so trennen, dass es ein CNN mit tiefen Lernerfahrungen schafft oder nicht? Ich möchte einen CNN trainieren, um Fahrzeuge in einem Satellitenbild zu erkennen. –

+0

@HadiGhahremanNezhad Ich denke, es würde definitiv helfen. Stellen Sie einfach fest, dass Sie das Modell dann trainieren, um zu erkennen, ob ein ausgeschnittenes Rechteck ein Fahrzeug ist. (Ich nehme an, Sie werden auch viele andere Gegenstände ausschneiden?). Wenn Ihr Ziel ist zu erkennen, ob ein Bild ein Fahrzeug enthält, bin ich mir nicht sicher, ob Sie es ausschneiden sollten, da auch die Umgebung relevant sein könnte. –

Verwandte Themen