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

Gebäudeerkennung/Segmentierung

 

thegrandtheft
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 20.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.12.2012, 16:19     Titel:
  Antworten mit Zitat      
Dann versuche ich es auf anderem Wege.

Vielen lieben Dank für deine Bemühungen, hat mir als kompletter Einsteiger wirklich sehr sehr geholfen!!! Dankeschön!

Beste Grüße

Tim
Private Nachricht senden Benutzer-Profile anzeigen


flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.12.2012, 16:39     Titel:
  Antworten mit Zitat      
Ich empfehle http://de.wikipedia.org/wiki/Cluster_(Informatik) zur Ähnlichkeitsanalyse
Private Nachricht senden Benutzer-Profile anzeigen
 
thegrandtheft
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 20.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.12.2012, 16:52     Titel:
  Antworten mit Zitat      
Das "Verfahren" ist mir bekannt, zumindest die Theorie dahinter. Aber ich fürchte mir fehlt dazu als Matlab Anfänger die nötige Programmiererfahrung um es umzusetzen, zumindest in Bezug auf die mir noch verbleibende Zeit für das Projekt.
Private Nachricht senden Benutzer-Profile anzeigen
 
keywee
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 29.11.12
Wohnort: Berlin
Version: R2012a
     Beitrag Verfasst am: 17.12.2012, 09:37     Titel:
  Antworten mit Zitat      
hallo,

da du lediglich das bild wiedererkennen moechtest und nix spezielles auswerten ist es relativ einfach nachdem du das image eingelesen hast und mit einem festen wert binaerisiert die funktion "regionprobs" zu benutzen. sagen wir zum beispiel so:

Code:


CC = bwconncomp(BILD,4);
        stats = regionprops(CC, 'Area');
        idx = find([stats.Area] > ZAHLENWERT);
        BW = ismember(labelmatrix(CC), idx);

 


du erhaelst ein schwarzweissbild wo nur grosse helle flaechen mit einer bestimmten groesse gezaehlt werden. und die nun jeweils zu vergleichen ist eine kleinigkeit! es geht natuerlich auch deutlich komplexer dazu haette ich auch vorschlaege aber ich wuerde es erstmal damit probieren!

das funktioniert allerdings nicht mit wechselnden perspektiven aber fuer unsere laborarbeiten hier ist es super Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
thegrandtheft
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 20.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.12.2012, 11:03     Titel:
  Antworten mit Zitat      
Hallo keywee,

die Funktion "regionprobs" kenne ich, weiß aber gerade nicht wie sie mir weiterhilft.

Mein Ziel ist es ja anhand gefundener Templates ein Gebäude zu erkennen. Bsp: ich habe zu Gebäude A vorher aus einem Original Bild drei Templates erstelllt und finde mindestens ein Template in einem neuen Bild(andere Perspektive) wieder.

Wie verknüpfe ich nun das Ergebnis mit dem Gebäude, so dass ich als Ausgabe : Sie befinden sich vor Gebäude A ...bekomme.

Ich stelle mir das so in der Art vor:

Ich ordne vorher Gebäude A 3 templates zu, nun wird eins gefunden, da dieses template vorher zu Gebäude A zugeordnet wurde und sich laut Zuordnung nicht in Gebäude B oder C befindet, bekomme ich Gebäude A angezeigt. Aber mir fehlt der Ansatz wie man solche "Klassen" programmiert und abfragt.

Dein Beispiel bezieht sich doch auf den Vergleich zweier identischer Bilder oder habe ich da jetzt was falsch verstanden?

Gruß

Tim
Private Nachricht senden Benutzer-Profile anzeigen
 
keywee
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 29.11.12
Wohnort: Berlin
Version: R2012a
     Beitrag Verfasst am: 17.12.2012, 15:41     Titel:
  Antworten mit Zitat      
Naja mit den templates habe ich selber noch nicht gearbeitet und ich stelle mir es auch deutlich schwieriger vor durch die perspektivische verzerrung. ich arbeite die meiste zeit in laboren und habe bei allen aufnahmen immer gleiche perspektive (draufsicht). hier ist es also sehr einfach fuer mich: ich erstelle ein binaer bild mit einem festen treshold. daraus filter ich alle hellen punkte die zu klein sind (noisefilter) und anschliessend nutze ich regionprobs um das bild zu analysieren...und nun kommt es drauf an was man sucht...

der einfachste anwendungsfall um ein bild wieder zu finden waere in diesem fall flaechen zu suchen ab einer bestimmten mindestgröße und diese mit denen von anderen bildern vergleichen...funktioniert bei uns sehr gut.

ich habe auch schon mit formerkennung gearbeitet...dazu wurden aehnlichkeiten verglichen sprich z.B. umfang im verhaeltnis zu volumen der objekte.

Bei dir stellt sich ja erstmal die erste frage liegen die bilder alle schon vor und sind fix oder soll er fotos wo sich lichtverhaeltnisse aendern und perspektiven auch erkannt werden...indem fall musst du ja eigentlich schon mit kantenfilter arbeiten weil variierende helligkeiten zu komplett anderen binaerbildern fuehren koennen

es gibt ein beispiel mit münzen:
http://www.mathworks.com/matlabcent.....sdemo/content/BlobsDemo.m

nehmen wir mal an jedes deiner bilder hat ein markantes element oder eine form. dann koenntest zum beispiel wie oben genannt umfang in relation zum volumen setzen oder andere typische pruefmerkmale nutzen und findest so jederzeit zum beispiel unterschiedliche geometrische koerper in bildern
Private Nachricht senden Benutzer-Profile anzeigen
 
thegrandtheft
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 20.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.12.2012, 17:47     Titel:
  Antworten mit Zitat      
Bei dem Projekt geht es um Gebäudeerkennung, das heißt es gibt unterschiedliche Perspektiven und Lichtverhältnisse. Natürlich habe ich für das Projekt die Perspektiven eingeschränkt und die Lichtverhältnisse weitesgehend gleichbleibend gewählt.

Das finden der Templates funktioniert ja auch, auf meine Sets bezogen auch okay. Fürs erste also für mich und das Projekt ausreichend. Möglicherweise wäre eine ander Methode vll besser geeignet gewesen, das mag gut sein.

Meine Frage bezog sich aber eher auf das wie komme ich jetzt mit meinem Ansatz zum Ende, Abgabe rückt nämlich näher Smile

danke

Gruß

Tim
Private Nachricht senden Benutzer-Profile anzeigen
 
keywee
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 29.11.12
Wohnort: Berlin
Version: R2012a
     Beitrag Verfasst am: 18.12.2012, 10:14     Titel:
  Antworten mit Zitat      
Hallo Tim,

ich weiss nicht in wie weit es dir vll hilft aber es gibt unter dieser adresse einen soduko solver:

http://www.mathworks.de/videos/solv.....using-a-webcam-68773.html

die zahlen aus dem raetseln werden auch mit templates erkannt vll kannst du dir daraus einiges klauen. es klappt hier ja auch mit verzerrung! check es einfach mal aus
Private Nachricht senden Benutzer-Profile anzeigen
 
thegrandtheft
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 20.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2012, 16:11     Titel:
  Antworten mit Zitat      
Hallo Smile

eine Frage habe ich noch, ich hänge sie einfach mal hier dran, anstatt ein neues Thema aufzumachen, hoffe das ist okay.

Ich würde gerne aus dem angehängten Bild die 4 großen Rechtecke als Rechtecke erkennen und versuchen sie auf einem anderen Bild wiederzuerkennen.

Dazu brauch ich erstmal die Grenzen der Rechtecke,
Code:


Dann möchte ich ein struct erzeugen, wo ich die Dinge, die er gelabelt hat auslesen kann, z.b Position...
Code:

stats = regionprops(A,'BoundingBox.....
 

Dann Schleife:
Code:

for i=1:numel(stats)
   if ..... Wie kann ich hier die größe und position verarbeiten?
disp('Rechteck')

 


Meine Frage ist, wie kann ich eine Einschränkung machen, dass er nur sehr große Rechtecke labelt? Ist mein Ansatz okay?

Gruß

Tim
Private Nachricht senden Benutzer-Profile anzeigen
 
keywee
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 29.11.12
Wohnort: Berlin
Version: R2012a
     Beitrag Verfasst am: 21.12.2012, 12:04     Titel:
  Antworten mit Zitat      
welchem angehaengtem Bild... mit extend laesst sich viel machen

Zuletzt bearbeitet von keywee am 21.12.2012, 12:28, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
keywee
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 29.11.12
Wohnort: Berlin
Version: R2012a
     Beitrag Verfasst am: 21.12.2012, 12:24     Titel:
  Antworten mit Zitat      
Code:
function W = Classify(ImageFile)
% Step 1: Read image Read in
RGB = imread('test.png');
figure,
imshow(RGB),
title('Original Image');

% Step 2: Convert image from rgb to gray
GRAY = rgb2gray(RGB);
figure,
imshow(GRAY),
title('Gray Image');

% Step 3: Threshold the image Convert the image to black and white in order
% to prepare for boundary tracing using bwboundaries.
threshold = graythresh(GRAY);
BW = im2bw(GRAY, threshold);
figure,
imshow(BW),
title('Binary Image');

% Step 4: Invert the Binary Image
BW = ~ BW;
figure,
imshow(BW),
title('Inverted Binary Image');

% Step 5: Find the boundaries Concentrate only on the exterior boundaries.
% Option 'noholes' will accelerate the processing by preventing
% bwboundaries from searching for inner contours.
[B,L] = bwboundaries(BW, 'noholes');

% Step 6: Determine objects properties
STATS = regionprops(L, 'all'); % we need 'BoundingBox' and 'Extent'

% Step 7: Classify Shapes according to properties
% Square = 3 = (1 + 2) = (X=Y + Extent = 1)
% Rectangular = 2 = (0 + 2) = (only Extent = 1)
% Circle = 1 = (1 + 0) = (X=Y , Extent < 1)
% UNKNOWN = 0

figure,
imshow(RGB),
title('Results');
hold on
for i = 1 : length(STATS)
  W(i) = uint8(abs(STATS(i).BoundingBox(3)-STATS(i).BoundingBox(4)) < 0.1);
  W(i) = W(i) + 2 * uint8((STATS(i).Extent - 1) == 0 );
  centroid = STATS(i).Centroid;
  switch W(i)
      case 1
          plot(centroid(1),centroid(2),'wO');
      case 2
          plot(centroid(1),centroid(2),'wX');
      case 3
          plot(centroid(1),centroid(2),'wS');
  end
end
return


test.png
 Beschreibung:

Download
 Dateiname:  test.png
 Dateigröße:  6.92 KB
 Heruntergeladen:  766 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3

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.