Achse Koordinaten in pixel-Koordinaten? (Matlab)
Wie kann ich umwandeln der Achse Koordinaten in pixel-Koordinaten? Ich habe eine Reihe von Daten, zu denen auch die negativ-und float-Werten, die ich brauche, um all die Daten in das Bild. Aber die pixel-Koordinaten sind alle positive ganze Zahl. wie lösen Sie das negative Problem?
Welche Art von Grundstück Sie brauchen, zu generieren? Punkt, Linie, etc. Auch, in welcher form Ihre Daten? X und & Vektoren, Nx2 matrix, etc.
Die Sätze von Daten [X,Y] sind die Punkte, Koordinaten, kann make-up ellipse.Ich kann zeichnen Sie die ellipse aus,aber für jetzt, ich stehe vor der Schwierigkeit, dass alle Koordinaten in Bild - (Pixel-Koordinaten).Soll ich zeichne eine ellipse in das Bild.
Ich geschrieben eine Antwort auf Ihren Kommentar..
Die Sätze von Daten [X,Y] sind die Punkte, Koordinaten, kann make-up ellipse.Ich kann zeichnen Sie die ellipse aus,aber für jetzt, ich stehe vor der Schwierigkeit, dass alle Koordinaten in Bild - (Pixel-Koordinaten).Soll ich zeichne eine ellipse in das Bild.
Ich geschrieben eine Antwort auf Ihren Kommentar..
InformationsquelleAutor Elsie | 2011-10-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Übergeben werden können Vektoren, Koordinaten zu
scatter
.Wenn Sie die Bild-matrix,
Können Sie auch
print
zum speichern der plot in eine Datei (oder einfach den export von Bild-Fenster), dann verwenden Sieimread
die Datei zu Lesen.Gibt es auch diese Reihe von m-files aus dem File-Exchange, die schon sehr nahe an dem, was Sie brauchen.
Schließlich, hier ist ein einfacher Weg, um zu bekommen, was Sie wollen, innerhalb einer vorgegebenen Präzision:
Den "precision" - parameter legt fest, wie viele Nachkommastellen der floating-point-Werte gehalten werden, und damit die Auflösung und Genauigkeit des Bildes. Der cast zu
uint32
möglicherweise nicht erforderlich.Wenn Sie eine
Nx3
matrix von RGB-Werten für die einzelnenN
Punkte:Ich habe getestet, meine ellipse mit den oben genannten codes.Aber ich don ' T undertand 'round(x*Präzision) + 1'. Was bedeutet dieser code? Was ist der '+1'? Ist es eine Art von Umstellung?
Nach Abzug der Mindest, das neue minimum ist null. Sobald wir bereit sind, zu verwenden
x
undy
als Indizes zu erzeugen, müssen wir1
da MATLAB-Indizes aus1
.Ich kommentierte der code-block, hoffentlich ist es klarer. Suchen und ersetzen die hash-Zeichen, wenn nötig.
InformationsquelleAutor reve_etrange
Aus, was ich verstehe, Sie haben eine Reihe von Punkten repräsentieren eine ellipse, und Sie würde zeichnen Sie direkt in eine Bild-matrix (nicht nur die Anzeige auf dem Bildschirm).
Für diese, können Sie die POLY2MASK - Funktion konvertieren Sie die ellipse in eine binäre Maske. Dann durch Berechnung der perimeter, diese geben uns eine binäre Maske, die nur die Pixel dar, die ellipse, die auf das Bild angewendet, um die Farbe der Pixel.
Betrachten Sie das Beispiel unten. Ich bin mit der Funktion calculateEllipse.m aus einer früheren Frage hier SO:
Dadurch erhalten Sie bessere Ergebnisse, als einfach die Rundung der Koordinaten des
x
undy
(plus it Griffe out-of-boundary Punkte für uns). Lesen Sie den Algorithmus aus Abschnitt POLY2MASK zu sehen, wie es arbeitet auf subpixel-Ebene.EDIT:
wenn Sie arbeiten mit einem RGB-Bild (3D-matrix), gilt das gleiche, müssen Sie nur ändern Sie den letzten Teil, wo wir die binäre Maske :
Hier ist noch ein weiterer Weg:
es ist nur eine Frage der Indizierung, siehe mein edit oben (eine unter Verwendung der logischen Indizierung, die anderen linearen Indizes)
InformationsquelleAutor Amro