WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Erkennen eines Strichs

 

Mercurios
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 05.08.13
Wohnort: ---
Version: 7.10.0
     Beitrag Verfasst am: 14.08.2013, 15:54     Titel: Erkennen eines Strichs
  Antworten mit Zitat      
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.

Kann mir da wer weiterhelfen?

AKF_Messung_01.jpg
 Beschreibung:
Bild

Download
 Dateiname:  AKF_Messung_01.jpg
 Dateigröße:  24.21 KB
 Heruntergeladen:  1046 mal
Private Nachricht senden Benutzer-Profile anzeigen


Sp0b1e
Forum-Anfänger

Forum-Anfänger



Beiträge: 26
Anmeldedatum: 26.09.13
Wohnort: ---
Version: 2011a und 2013a
     Beitrag Verfasst am: 27.09.2013, 23:12     Titel:
  Antworten mit Zitat      
Hallo Mercurios,

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!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Mercurios
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 05.08.13
Wohnort: ---
Version: 7.10.0
     Beitrag Verfasst am: 28.09.2013, 08:37     Titel:
  Antworten mit Zitat      
Hallo Sp0b1e,
ich habe es mittlerweile wie folgt gelöst:

Code:
threshold = graythresh(RGB);
bw = im2bw(RGB,threshold);
bw = bwareaopen(bw,30);
bw = imfill(bw,'holes');
imshow(bw, 'InitialMagnification', 50)

for i = 1:m;
    figure(1)
    x = [1 n];
    y = [i i];
    c = improfile(bw,x,y);
    if sum(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


Aber auf alle Fälle danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.