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

Rechtecke in einem jpg Bild erkennen -Schwellwert manuell de

 

Viktor
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 12.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.06.2009, 10:54     Titel: Rechtecke in einem jpg Bild erkennen -Schwellwert manuell de
  Antworten mit Zitat      
Hallo,
ich habe anhand dem unteren Code versucht ein jpg Bild nach Rechtecken analysieren zu lassen.
Von Prinzip her soll zunächst alles was nicht weiß ist , also nicht [255,255,255] beträgt, schwarz gesetzt werden, so dass auch wirklich nur die Balken an den Augen weiß verbleiben.

Also nochmal zum Verständnis : Das Bild soll so verändert werden, dass ledeglich die weißen Balken zu sehen sind, der Rest soll schwarz sein.

Anschließend ausgegeben werden, dass ein Rechteck vorliegt.

Code:
image1 = imread('ball.jpg');
B = rgb2gray(image1);
figure,
imshow(B);
thresh = graythresh(B);
C = im2bw(B,thresh);
C = ~C; % Da du einen weißen Hintergrund hast und weiß immer als '1' interpretiert wird
figure,
imshow(C);
C = imclearborder(C,4);
D = imfill(C,'holes');
figure,
imshow(D);
E = bwlabel(D);
stats = regionprops(E,'BoundingBox','Extent');
for i=1:numel(stats)
    if abs((stats(i).BoundingBox(3)-stats(i).BoundingBox(4))) < .1 && stats(i).Extent==1
        display('Quadrat');
    elseif abs((stats(i).BoundingBox(3)-stats(i).BoundingBox(4))) < .1 && (.7<stats(i).Extent & stats(i).Extent<1)
        display('Kreis');
    else
        display('Dreieck');
    end
end


Den habe ich in diesem Thread hier gefunden.
http://www.gomatlab.de/geometrische.....ennen-t1788,start,15.html

Wie kann ich den Code so verändern, dass ich den Schwellwert manuell einstelle kann, und dies nicht mehr automatisch erfolgt ?

Würd mich echt freuen, wenn ihr mir dabei helfen könntet.

Augen zu.JPG
 Beschreibung:
Bild

Download
 Dateiname:  Augen zu.JPG
 Dateigröße:  94.12 KB
 Heruntergeladen:  543 mal


Zuletzt bearbeitet von Viktor am 12.06.2009, 10:59, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 12.06.2009, 10:59     Titel:
  Antworten mit Zitat      
Moin,

wenn du den Schwellenwert manuell vorgeben willst, dann brauchst du nur diese Zeile ändern:
Code:
% thresh = graythresh(B);
thresh = deinTreshold;


Um nähere Hinweise geben zu können, solltest du das Bild, von dem du gesprochen hast, zur Verfügung stellen.

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Viktor1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.06.2009, 11:26     Titel:
  Antworten mit Zitat      
habe gerade das Bild eingefuegt- ich hoffe,damit koennt ihr mir weiterhelfen.

LG viktor
 
Viktor
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 12.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2009, 16:26     Titel:
  Antworten mit Zitat      
Hi,
also ich habe das versprochene Bild mittlerweile eingefügt.

Die Zeile
Zitat:
thresh = graythresh(B);
habe ich wie du gesagt hast, einfach durch
Zitat:
thresh= 255;
ersetzt.

dazu bekomme ich folgende Fehlermeldung

Zitat:
Error in ==> im2bw at 37
[A,map,level] = parse_inputs(varargin{:});

Error in ==> Untitled at 10
C = im2bw(B,thresh); % Umwandeln des Graustufenbildes
in ein b/w-Bild (Schwarz-Weiß oder auch binär) in
Abhängigkeit des vorherbestimmten Schwellenwertes


Was genau muss ich denn noch ersetzen ?
Zitat:
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 15.06.2009, 17:57     Titel:
  Antworten mit Zitat      
Moin,

das Problem ist, dass der Schwellenwert zwischen 0 und 1 liegen muss. Das heißt schwarz wäre bei dir 0, weiß 1 und der Grauwert 127 wäre 0.5.

Ein weiteres Problem stellt die weiße Schrift dar, denn diese hat ebenfalls den Grauwert 255. Auch der Rahmen um das Bild verfälscht das Ergebnis.

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Viktor
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 12.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2009, 18:18     Titel:
  Antworten mit Zitat      
Danke,
gibt es denn in Matlab sonst irgendeine Möglichkeit ein solches Bild zu analysieren, dass automatisch erkannt wird, ob diese 2 weiße Balken im Bild vorkommen oder nicht ?
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 17.06.2009, 12:38     Titel:
  Antworten mit Zitat      
Hi, ich glaube Alex wollte nicht sagen, dass es so nicht möglich ist, er wollte dich lediglich darauf hinweisen, dass andere weiße Pixel, das Ergebnis beeinflussen. Mein Vorschlag, du solltest versuchen auszuwerten, dass du bei den Rechtecken immer sehr viele weiße Pixel an einem Punkt und halt in Form eines Rechteckes hast. Du könntest zum Beispiel Histogramme des Weißanteils für die x und y Koordinate zeichnen. Dann einen Schwellenwert einsetzen, für andere Weißanteile. Und jeweils die Position der Grafiken bestimmen, dann hast du die Koordinaten der beiden weißen Rechtecke.

Viele Grüße,

der Oli

P.S., machst du so eine Art Reverse Engineering?
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.