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

Über die Bildanalyse die Anzahl der Pixel ermitteln

 

Anfäner
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 16.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.09.2012, 13:20     Titel: Über die Bildanalyse die Anzahl der Pixel ermitteln
  Antworten mit Zitat      
Hallo zusammen,

in meinem Projekt muss ich über die Bildanalyse bei einem Bilde die Pixel errechnen, könnte mir jemand weiterhelfen wie ich es angehen kann?

Im Anhang habe ich das Bild mit eingefügt.

mfg

Kreis.png
 Beschreibung:
Bild des Kreises

Download
 Dateiname:  Kreis.png
 Dateigröße:  18.36 KB
 Heruntergeladen:  1407 mal
Private Nachricht senden Benutzer-Profile anzeigen


skyforce
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 82
Anmeldedatum: 04.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.09.2012, 15:29     Titel:
  Antworten mit Zitat      
schau dir folgende Befehle an
Code:


mfg
skyforce
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 19.09.2012, 11:34     Titel:
  Antworten mit Zitat      
Moin Anfäner,

wenn du dein Bild in eine binäre Darstellung wandelst (um Grautöne auszuschließen), kannst du die Anzahl der schwarzen Pixel mit dem "find-Befehl" ermitteln. Daraus ergibt sich dann eine Fläche.

Oder suchst du etwas anderes?

Grüße
Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfäner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 16.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2012, 12:57     Titel:
  Antworten mit Zitat      
Hi skyforce: habe mir die befehle angeschaut, aber leider nicht ganz verstanden was es bedeutet oder wie es klappen soll. Confused

Hallo Hubertus: Sie sind in Binär umgewandelt, also ich habe wo es weise ist die 0 und wo es schwarze ist die 255. Aber er müsste mir dann bei dem Kreis die Umkreisung zeichnen. Und ich weiss es nicht wie es gemacht wird.

Hier etwas ausführlicher zu meinem Projekt:
Meine Aufgabe ist, das ich über eine Kamera ein Kreis erkennen muss, das klappt über die Bildverarbeitung im Matlab. Mein Kreis ist ein schwarz/weiss bild. Das Program muss denn Kreis erkennen und mir sagen welchen durchmesser es hat und es muss mir die Umkreisung zeichnen. Bei den Kreisen handelt es sich um verschiedene Größen, es ist keine einheitliche Größe.

beste Grüße
Hasan
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 19.09.2012, 13:46     Titel:
  Antworten mit Zitat      
Vielleicht hilft das weiter:

http://www.mathworks.com/matlabcentral/fileexchange/9833
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfäner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 16.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2012, 14:45     Titel:
  Antworten mit Zitat      
@ Hubertus, es ist vieleicht eine blöde frage, aber könntets du mir sagen wie ich es eventuell in mein Programm einbinden kann? Muss ich es Kopieren und einfügen oder über die function aufrufen? Kann ich es auch so wie es hier ist verwenden?
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 19.09.2012, 14:55     Titel:
  Antworten mit Zitat      
Im ZIP befindet sich nur 1 Funktion: unter: %Implementation (im File erklärt): findest du die Zeilen zum Aufrufen der Funktion. Du tauscht einfach das Bild coins.png gegen dein Bild aus. Coins.png ist ein SW-Bild.
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 20.09.2012, 09:29     Titel:
  Antworten mit Zitat      
Nachtrag von gestern:

http://basic-eng.blogspot.de/2006/0.....-circle-detection_23.html

Grüße
Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfäner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 16.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2012, 18:51     Titel:
  Antworten mit Zitat      
Hi Hubertus, erstmal vielen herzlichen dank für die vielen Informationen, ich bin sehr gut weitergekommen, aber habe da noch ein zwei schwierigkeiten.

Meine Bild ist ein RGB Bild, sprich ich muss es erstmal umwandeln, hat aber nicht so ganz geklappt, weiss nicht ob es richtig ist wie ich es mache, aber ich habe einfach die Funktionen genommen und in mein Program eingefügt, wollte aber nicht ganz funktionieren, hat das bild geladen, aber sonst waren da keine funktionen vorhanden. Hier die Seite welche Befehle ich verwendet habe.

Auf der Seite:
http://www.mathworks.de/de/help/images/ref/rgb2gray.html
Code:
Convert an RGB image to a grayscale image.
I = imread('board.tif');
J = rgb2gray(I);
figure, imshow(I), figure, imshow(J);



Auf der Seite
http://www.mathworks.de/de/help/images/ref/im2bw.html
Code:
BW = im2bw(X,map,0.4);
imshow(X,map), figure, imshow(BW)


habe ich es richtig gemacht oder ist es so falsch???

beste Grüße
Hasan
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 21.09.2012, 06:10     Titel:
  Antworten mit Zitat      
Moin Hasan,

dein Problem ist mir nicht ganz klar. Dein 1. Beispiel zur Umrechnung von RGB > SW ist der "normale Fall" und richtig. Es gibt noch weitere Umrechnungsverfahren. So kann es z.B. bei Bildanalysen sinnvoll sein, sich die Farbauszüge als SW-Bild ausgeben zu lassen, da sie sehr oft einen anderen Inhalt zeigen. Man kann auch einzelne Farbbereiche in der Umrechnung anders gewichten.

"Sonst waren da keine Funktionen...". Was meinst du damit? Ob deine Konvertierung zu SW richtig ist, zeigt die Variable im Workspace. Dort wird angezeigt ob: m*n oder m*n*3!

Neben RGB-Bildern gibt es auch noch indizierte Bilder, die über X,map geladen werden. Bleibt "map" leer, ist es ein "normales" RGB-Bild. Sonst wird map erst wieder gebraucht, wenn du das Bild mit indizierten Werten speichern willst. Wenn du ein Bild mit Farbtabelle (X,map) hast und das in ein Binärbild umwandeln willst, ist dein letztes Beispiel korrekt. Es passt aber nicht in den Zusammenhang mit deinem 1. Beispiel.
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfäner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 16.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2012, 11:17     Titel:
  Antworten mit Zitat      
Hi Hubertus,

nach einigen Experimenten und Versuchen habe ich es endlich geschafft. Mein Programm liest das Bild ein, wandelt Sie in ein Binäres Bild um und anschließend umkreist mir auch den Kreis.

Aber eine sache fehlt mir noch leider, was muss ich machen damit er mir den Durchmesser oder Radius des Kreises ausgibt??? Wäre super wenn ich da auch eine gute Idea bekommen würde Very Happy


beste Grüße
Hasan
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 24.09.2012, 16:17     Titel:
  Antworten mit Zitat      
Eine andere Lösung in raus gekramten Unterlagen hat einen Fehler, den ich im Moment nicht finde. Das Einfachste wäre, den inneren Kreis ebenfalls auf 255 zu setzten. Dann hast du eine Kreisfläche mit den von dir gesuchten Daten. Du brauchst dann nur noch die weißen Pixel zählen.

Code:
I=imread('Kreis.tif');
Ie=edge(I,'sobel',(graythresh(I)*.1));
S1=strel('disk',2,4);
S2=strel('line',2,8);
Iim=imdilate(Ie,[S1 S2]);
Ifill=imfill(Iim,'holes');
S3=strel('disk',5);
Irode=imerode(Ifill,S3);
Iende=imerode(Irode,S3);
Kf=find(Iende==255);


Iende zeigt die innere Kreisfläche. Wenn du den äußeren Kreis benötigst, musst du nur die schwarzen Pixel vom Original dazu zählen. Da du ein Binärbild hast, können auch keine Graustufen am Kreis das Zählen beeinträchtigen.

Es gibt bestimmt noch eine elegantere Lösung, aber vielleicht hilft das schon mal weiter.
Private Nachricht senden Benutzer-Profile anzeigen
 
KingHegi
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 24.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2012, 11:15     Titel:
  Antworten mit Zitat      
hey,
ich hab mal ein ähnliches Problem gehabt.
auf die lösung bin ich durch die Matlab-Hilfe gekommen.

check mal die Matlab-Hilfe nach "Measuring the Radius of a Roll of Tape". Es gibt ne Version mit 3 und mit 5 Schritten. Die längere hat mir dann gute dienste erwiesen.

du musst warscheinlich nur etwas mit dem Parametern rumspielen, hat bei mir auch etwas gedauert.


hier nochmal die links:

http://www.mathworks.de/de/help/ima.....us-of-a-roll-of-tape.html

http://www.mathworks.de/products/de.....dius_tape/ipexradius.html
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfäner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 16.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.10.2012, 14:35     Titel:
  Antworten mit Zitat      
Hallo Hubertus,
danke nochmals für den Lösungsansatz, ich habe es jetzt einigermasen hinbekommen, mit der roll-of-tape in der Matlab Hilfe muss da wie auch KingHegi schrieb einige Parameter ändern. Komme so langsam zum Ziel Smile

Danke KingHegi, nach einigen Änderungen hat es gut gekklappt
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.