Verfasst am: 05.12.2010, 13:32
Titel: Koodinaten von Referenzenpunkte
Hallo Zusammen,
Ich möchte gerne zwei Referenzpunkten in einem Bild erzeugen um die Information der Auflösung zu erkennen. Es geht um die Skalierung von Bilder
die Fragen sind
ich habe kein Modell von Referenzen in Matlab gefunden??
und welche befehle soll ich anwenden um die Koordinaten den Referenzen im Bild zu erkennen?
ich bin mir nicht sicher, ob ich Dich richtig verstanden habe, vielleicht kannst Du Dein Problem etwas genauer beschreiben. Mit der Fuktion "ginput" kannst Du Punkte auswählen, anzeigen lassen und die Koordinaten ausgeben, um sie im Vergleich mit einem anderen Bild wieder anzuwenden.
bei einem Bild möchte ich Zwei Punkten als Referenz nehmen, damit ich automatisch die Koordinaten umrechne und Information über die Auflösung dem Bild, das heißt die Anzahl Pixel pro Milimeter oder Mikrometer zu erkennen
es geht erstens um die Position den Punkten zu erkennen und dann das Bild skalieren
die Frage ist so zu allgemein und nicht zu beantworten. Wie liegen den die beiden Referenzpunkte im Bild vor? Sind das wirklich markante Punkte (z.B. andere Farbe oder Größe...) oder beliebige Punkte die du z.B. mit der Maus interaktiv auswählen möchtest.
Am besten du hängt mal ein Beispielbild mit an damit man mal eine Vorstellung bekommt, dann können wir auch über eine Lösung nachdenken. Zum jetzigen Zeitpunkt wäre alles nur Spekulation...
und das ist genau was ich meinte, du sprichst von Punkten, im Bild sind es aber Kreuze. Für die digitale Bildverarbeitung kann das schon einen beträchtlichen Unterschied machen, ob man Beispilesweise bei morphologischen Filtern ein rundes oder kreuzförmiges Strukturelement verwendet!
Ich habe mir einmal die Mühe gemacht dir ein für dein Beispielbild passendes Beispiel zu erstellen. Jedoch kann ich nicht garantieren, dass es bei allen deinen Bildern funktioniert, da besonders das Ergebnis der Binarisierung stark vom verwendeten Schwelllenwert (Threshold) abhängt. Dieser wiederrum muss gegebenenfalls bei anderer Beleuchtung oder Grauwerten neu angepasst werden. In deinem geposteten Bild konnte ich es allerdings völlig automatisch realisieren.
Code:
I = imread('Path\123.jpg');
Ig = rgb2gray(I);
Iga = imadjust(Ig);
map = colormap(gray);
BW = im2bw(Iga,map); % Create binary image
BWi = imcomplement(BW);
BWif = imfill(BWi,'holes'); % Fill holes
% Create structure element with shape of a cross
crux = zeros(50,50);
crux(1:end,round(size(crux,1)/2)) = 1;
crux(round(size(crux,2)/2),1:end) = 1;
SE = strel('arbitrary',crux);
labels = bwlabeln(BWrec); % Label BW-image
RP = regionprops(labels,'all'); % Get properties from objects
RP(([RP.Area])<8000 | ([RP.Area])>18000) = []; % detext crosses by Area
iflength(RP) ~= 2 [junk,idx] = sort([RP.Extent]); % detect crosses by "Extent" (Area divided by the area of the bounding box)
MP(1,:) = RP(idx(1)).Centroid; % midpoints
MP(2,:) = RP(idx(2)).Centroid;
else
MP(1,:) = RP(1,1).Centroid; % midpoints
MP(2,:) = RP(2,1).Centroid;
end
Um letztendlich die Kreuze aus dem Bild "BWrec" zu extrahieren habe ich die Fläsche der Kreuze als Parameter verwendet. Sollten trotzdem noch mehr als 2 Objekte verhanden sein, nehme ich noch den "Extent" als weiteren Parameter hinzu. Sollten auch danach noch mehr als 2 Objekte vorhanden sein (z.B. bei anderen Bildern von dir), so müsstest du mal selber schauen welche Eigenschaften von "RP" für die Unterscheidung der Kreuze von den anderen Objekten am besten geeignet sind.
Zudem möchte ich dich darauf hinweisen, dass der Mittelpunkt sich unter Umständen nicht exakt auf den Kreuzungen befindet, da dies besonders von der Form des Kreuzes nach der Binarisierung abhängt und dabei ist das Kreuz eben nicht immer komplett symmetrich.
kannst ja mal ein Feedback geben, ob es auch fuer die anderen Bilder klappt.
P.s. was ist denn auf dem Bild zu sehen, also dieses spitze Ding?
MFG
Sco
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.