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

Region-growing und center of gravity in Graubild

 

dx_dy
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2012, 15:12     Titel: Region-growing und center of gravity in Graubild
  Antworten mit Zitat      
Hallo,

ich hab ein Grauwertbild mit 3 * 9 weißen "Bobbeln", die "Bobbel" sind fast komplett weiß und der Hintergrund schwarz.

Das Format des Bildes ist *.png

Ich habe die Pixelkoordinaten in xy und die dazugehörigen Grauwerte in eine Cellmatrix geladen.

Jetzt möchte ich mit Matlab irgendwie die weißen Punkte erkennen und die Schwerpunktkoordinaten der einzelnen "Bobbel" ausgeben.

Ich vermute "Bobbel" erkennen irgendwie mit region growing und Schwerpunkt mit irgendeinem Filter.

Da ich sehr wenig erfahrung mit Bildverarbeitung in Matlab habe sind meine Fragen:

1) Richtiger Weg? Oder lieg ich Falsch?

2) Wie funktioniert das ungefähr?

Code:

clc
clear all


%% Bild einlesen

Testbildmatrix = double(imread('Testpunkte.png'));

groesse=size(Testbildmatrix);   % Größe der Matrix (Anzahl der Pixel)
zeilen=groesse(1);      % Anzahl der Zeilen
spalten=groesse(2);     % Anzahl der Spalten

%imshow(Testbildmatrix); % Zeigt Bild

%% Grauwert Cellmatrix erstellen

grauwerte=Testbildmatrix(:,:,3);    % Grauwerte sind der dritte Wert der geladenen Datei (Bildes)
grauwerte=grauwerte(:);     % Alle Grauwerte in eine Zeile schreiben (dadurch wird es leichter die Cellmatrix aufzubauen)

z=1;
s=1;
CellMatrix=cell(zeilen,spalten);

for i=1:length(grauwerte)
   
   
    if z==zeilen+1
        s=s+1;
        z=1;
    end
        CellMatrix{z,s}=grauwerte(i); % Hier werden die Grauwerte in die Cellmatrix geschrieben
        z=z+1;
end

Pixelanzahl=spalten*zeilen;
 

_________________

Mark Twain didn't actually say half the shit the Internet says he did. ~Mark Twain

Zuletzt bearbeitet von dx_dy am 07.11.2012, 15:30, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


dx_dy
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2012, 15:19     Titel:
  Antworten mit Zitat      
ich schätze bevor ich irgendwas mit region growing machen kann muss ich erstmal mit edge detection arbeiten?
_________________

Mark Twain didn't actually say half the shit the Internet says he did. ~Mark Twain
Private Nachricht senden Benutzer-Profile anzeigen
 
Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2012, 16:19     Titel:
  Antworten mit Zitat      
Hallo,

hast du die Image Processing Toolbox? Hier gibt es einige fertige Funktionen, die dir sicher weiter helfen.

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
dx_dy
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2012, 16:41     Titel:
  Antworten mit Zitat      
Ich glaube nicht. Ehrlich gesagt weiß ich nicht wo ich da in Matlab schauen muss.

Hab bis jetzt nur Ausgleichungsprogramme in Matlab geschrieben.

Ich hab jetzt mal mit Edge-Detection (Canny) die Kanten rausbekommen.
Bin mir aber nicht sicher ob das vorgehen richtig ist um die Schwerpunkte der "Bobbel" rauszubekommen.

Code:

%% Edge-Detection

I = imread('Testpunkte.png');
G = im2double(im2bw(mat2gray(I))); %Wandelt Graustufenbild in ein 2D array um



BW = edge(G,'sobel');
 
imshow(BW); title('Sobel edge Erkennung');
 

_________________

Mark Twain didn't actually say half the shit the Internet says he did. ~Mark Twain
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: 08.11.2012, 08:25     Titel:
  Antworten mit Zitat      
Moin dx_dy,

ich habe da so meine Probleme, die Frage zu verstehen, weil einige Angaben dem ersten Anschein nach etwas konfus sind. So:

Was ist eine Cellmatrix, die man mit imread einlesen kann? Meinst du vielleicht eine Matrix mit Indizierung? Die wird in der Regel [x,map]=... eingelesen, sofern x und map noch bearbeitet werden sollen.

Du weist nicht, ob du die IP-Toolbox hast. Wenn du die genannten Funktionen aufrufen kannst, hast du auch die Toolbox. Der Befehl: >> ver gibt die weitere Auskünfte.

Die Berechnung: "G = im2double(im2bw(mat2gray(I)));" liefert in Vergleichsbildern unsaubere Kannten, die auffallend zerrissen sind (ich kenne deine Matrix/ Bild nicht). Die kannst sobel direkt auf die Matrix anwenden.

Zu region growing mit Matlab gibt es viele Funktionen und ist auch gut beschrieben. Siehe z.B.

http://www.uio.no/studier/emner/mat.....smateriale/region_grow1.m

Viele Grüße

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
dx_dy
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2012, 12:50     Titel:
  Antworten mit Zitat      
Danke für den Tipp mit "ver".

Ich hab also die "Image Processing Toolbox Version 6.4 (R2009b)".

Du empfindest meine Fragestellung als etwas konfus?

Ok, dann versuch ich es mal besser zu formulieren.


Meine Ausgangslage:

Ich hab ein *.png Graubild. Auf diesem Bild sind 3 * 9 Punkte verteilt (helle Bobbel mit einem Durchmesser von ungefähr 10 Pixeln), der Hintergrund ist schwarz.

Was brauche ich?:

Ich benötige die Schwerpunktkoordinaten von jedem Punkt.
Z.B.: Punkt 1 Schwerpunkt x=10[pixel] y=20[pixel] ausgehend von (0/0) links oben.
(Die Linke obere Ecke ist standardmäßig (0/0) im Bildkoordinatensystem? So kenn ich es zumindest aus der Photogrammetrie.)


Was ich mir überlegt habe:

Da ich kaum Erfahrung mit Bildverarbeitung habe, leider nur theoretisches Wissen. Dachte ich mir, ich "finde" die Punkte (Bobbel) mit "Region-Growing" und rechne dann irgendwie den Schwerpunkt der Region aus.


Verständlicher?
_________________

Mark Twain didn't actually say half the shit the Internet says he did. ~Mark Twain
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: 08.11.2012, 13:48     Titel:
  Antworten mit Zitat      
Die Aufgabe habe ich schon verstanden und in meiner Antwort auch nicht hinterfragt. Hinterfragt habe ich andere Einzelheiten!

Wenn du die von mir aufgezeigte Funktion zu region_grow einmal anwendest, erhältst du dann ungefähr das, was du dir vorstellst?? Neben dieser Funktion könnte auch Cell-Funktionen weiterhelfen. Eine einfache Funktion um mehrere Koordinaten auszlesen ist: >> ginput(4) % gibt dir 4 Koordinaten wieder. Dazu kann >> impixelregion einen Überblick über die Anzahl der gesuchten Pixel geben. Oder soll das alles automatisch erfolgen. Das wird bei mehreren Objekten sicherlich ein Problem.

Du kannst auch mit einer anderen Funktion einen Rahmen um die Objekte ziehen und dir die eingerahmten Pixel ausgeben lassen.

Ist irgend etwas dabei, was weiterhelfen könnte?

Es gibt ein Bild, das heißt: coins.png (siehe Google). Entspricht die "Situation" in etwas deiner Aufgabe, wenn ich mir alle Münzen als weiße Flächen vorstelle?
Private Nachricht senden Benutzer-Profile anzeigen
 
dx_dy
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2012, 16:55     Titel:
  Antworten mit Zitat      
die region_grow fkt habe ich leider nicht zum laufen gebracht.

mir würde aber schon ausreichen wenn ich für jeden punkt extra von hand immer ein pixel raussuche, dann evtl ein region grow starte und von dem gefunden punkt den schwerpunkt irgendwie rausbekommen würde.
hauptsache irgendwie auf den schwerpunkt kommen, automatisierung ist völlig egal.

ich brauch einfach die schwerpunkt koordinaten für eine spätere simulation mit semax.


im anhang ist ein bild das ungefähr dem entspricht um dass es geht, das original kann ich hier nicht zeigen.

punkte.png
 Beschreibung:

Download
 Dateiname:  punkte.png
 Dateigröße:  2.27 KB
 Heruntergeladen:  732 mal

_________________

Mark Twain didn't actually say half the shit the Internet says he did. ~Mark Twain
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: 08.11.2012, 17:10     Titel:
  Antworten mit Zitat      
Mit der Funktion gibt es keine Probleme. Welche Fehlermeldung hast du bekommen? Ich habe die Funktion absichtlich ausgewählt, damit du ein Beispiel zu region grow bekommst. Du kannst dann besser abschätzen, ob dir die Funktion nützt oder total nutzlos ist.

Was ist mit den anderen Beispielen, die ich aufgeführt habe. Hast du die angewendet und dir die Daten zurück geben lassen. Was funktioniert da nicht?
Private Nachricht senden Benutzer-Profile anzeigen
 
dx_dy
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2012, 16:46     Titel:
  Antworten mit Zitat      
Hat sich erledigt, Danke!
_________________

Mark Twain didn't actually say half the shit the Internet says he did. ~Mark Twain
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 - 2025 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.