Verfasst am: 14.08.2013, 15:54
Titel: Erkennen eines Strichs
Hallo,
ich hänge seit gestern an einem Problem mit dem improfile Befehl. Ich habe ein Binäres Bild, auf dem ein Strich zu erkennen ist. Der Strich ist aber nicht gleichförmig, siehe Anhang.
Mit improfile Raster ich das Bild Zeilenweise durch.
Code:
RGB = imread('AKF_Messung_01.bmp');
[n m l]=size(RGB);
threshold = graythresh(RGB);
bw = im2bw(RGB,threshold);
bw = bwareaopen(bw,30);
%Loop für vertikale Rasterung
for j=1:n;
v=[m 1];
w=[j j];
line(w,v);
improfile(bw,w,v);
end
Das Bild wird über das Programm bisher gereinigt und der Strich komplett aufgefüllt.
Was ich nicht rausbekomme ist, wie ich den Übergang zwischen 0 zu 1 und 1 zu 0 herausbekomme, also die Koordinaten. Ich will aus den Werten jeweils die Mitte nehmen und eine Kurve über den Strich daraus bekommen. Über die Verschiebung der Kurve will ich die Verschiebung des Strichs berrechnen.
zum Erkennen der Übergänge zwischen 0 und 1 sowie 1 und 0 gibt es viele verschiedene Methoden. Hierfür kann man verschiedene Filter wie den Laplace-Filter, die Zero-Crossing-Methode oder die Canny-Methode verwenden. Diese Liefern dir ein binäres Kantenbild. Geeignete Filter kannst du mit dem Befehl fspecial() erzeugen. Weitere Infos siehe Matlab-Beschreibung. Ich bin mir nicht mehr ganz sicher, da ich schon etwas raus bin mit Bildverarbeitung aber ich glaube mich erinnern zu können, das ein einen Befehl names edge() gibt, mit dem man direkt Kanten erkennen lassen kann. Einfach mal die Image Processing Toolbox durchstöbern da findet sich schon was.
Ich hoffe ich konnte helfen. Viel erfolg noch weiterhin!!!
for i = 1:m;
figure(1)
x = [1 n];
y = [i i];
c = improfile(bw,x,y);
ifsum(c) > 0;
v = find(c==1,1,'first');
w = find(c==1,1,'last');
M(i,1)=(v+w)/2;
line(M(i,1),i) end end
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.