2016-08-06 14 views
0

Ich habe ein Bild und das räumliche Referenzobjekt dieses Bilds. Nun möchte ich das Bild nach Koordinaten entsprechend dem räumlichen Bezugsobjekt zuschneiden. Die Funktion Imcrop kann nur nach den Pixelkoordinaten beschneiden. Gibt es eine Möglichkeit, basierend auf den Weltkoordinaten zu beschneiden? Ich habe versucht, Imcrop zu verwenden und für das neue Referenzobjekt zu berechnen, aber ich verliere mich in der Koordinatentransformation.So erhalten Sie den Raumbezug mithilfe von "Imcrop" mit Matlab

Ein Beispiel für das Referenzobjekt nach dem Verwerfen eines Bildes.

imref2d with properties: 

     XWorldLimits: [-775.4357 555.5643] 
     YWorldLimits: [-488.3694 523.6306] 
      ImageSize: [1012 1331] 
PixelExtentInWorldX: 1 
PixelExtentInWorldY: 1 
ImageExtentInWorldX: 1331 
ImageExtentInWorldY: 1012 
XIntrinsicLimits: [0.5000 1.3315e+03] 
YIntrinsicLimits: [0.5000 1.0125e+03] 

Was ich will eigentlich zu tun ist, um das Bild zu zuzuschneiden, so dass der Punkt (0,0) ist der Mittelpunkt des beschnittenen Bildes.

+0

sein wird, wenn Sie „Raumbezug“, sagen Sie bedeuten, dass Sie eine Transformation zwischen Weltkoordinaten und Pixel koordinieren? –

+0

Ich denke, dass ich das habe. Ich habe der Frage einige Informationen hinzugefügt. –

Antwort

1

Je nach räumlicher Referenz hat jedes Pixel eine Größe von 1 x 1 in Weltkoordinaten. Deshalb, wenn Sie zwischen Welt konvertieren möchten koordinieren (Xw,Yw) und Bildkoordinaten (Xi,Yi) wie folgt vor:

Xi = round(abs(-775.4357 - Xw)) 

Yi = round(abs(-488.3694 - Yw)) 

Also, wenn Sie werden zuschneiden möchten das Bild, so dass die reale Welt koordinieren (0,0) die Mitte des neuen beschnittene Bild und die Größe des neuen Bildes wird von Breite zu Höhe als das Rechteck für imcrop

[(755 - width) (488 - height) width height]