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

4er bzw. 8er Nachbarschaften in der Bildverarbeitung

 

denker
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2011, 17:55     Titel: 4er bzw. 8er Nachbarschaften in der Bildverarbeitung
  Antworten mit Zitat      
Hallo Leute, mir liegt eine Matrix mit 200x200 Werten vor, welche die Entfernungen zu einer weißen Wand widerspiegeln. (3D Kamera) Um dieses etwas genauer zu gestalten würde ich gerne als ersten Schritt einen Filter programmieren der aus der vorhandenen Matrix eine neue macht in dem die Werte eines jeden Pixels mit einer 4er oder 8er Nachbarschaft gebildet werden. Wenn ich 4er Nachbarschaft verstanden habe, kann die 8er ja nicht mehr so schwer sein. Laughing
Mir ist das Randproblem bekannt, ich weiß leider nicht wie ich dieses Problem in Matlab umsetze. Vielleicht weiß ja einer von euch Abhilfe oder kennt einen guten Link.

Feinen Gruß
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: 17.03.2011, 08:29     Titel:
  Antworten mit Zitat      
Moin denker,

Deine Frage ist nicht ganz klar. Du beschreibst kein Bildproblem - es liegen Dir "Entfernungen" vor. Durch Nachbarschaftsoperationen werden Deine Werte nicht genauer, weil Du damit künstliche (gewichtete) Werte erzeugst. Du kannst zwar die vorhandene Werte spreizen oder angleichen oder auch richtungsweise ändern. Bilde dazu einen Filterkern und gewichte ihn mit:

Code:
x=filter2(Filterkern,Matrix);


Das Randproblem ist in der Funktion filter2 bereits gelöst.

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
denker
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.03.2011, 15:19     Titel:
  Antworten mit Zitat      
Danke für deine Antwort,
ich weiß das es sich eigentlich nicht um eine Bildverarbeitung im eigentlichen Sinne handelt. Ich arbeite mit einer 3D Kamera und möchte gerne einen Algorithmus entwickeln der eine Kante detektiert und dieser Kante folgt. Es gibt bei Matlab das schöne Tool Image Processing. Hier kann ich meine Distanzwerte als als eine Art Graustufenbild anzeigen lassen. Wenn dieses wirklich so ist, könnten doch eingentlich die Algorithmen für die Bildverarbeitung funktionieren. Im Grunde ist das eingentlich meine Frage oder eine von denen Laughing

gruß denker
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: 17.03.2011, 15:55     Titel:
  Antworten mit Zitat      
"Theoretisch" liegst Du mit Deiner Annahme nicht verkehrt. Das Problem ist nur, dass die schöne IPT eine Reihe von Funktionen hat, die vielleicht nützllch sein können. Welche von denen soll es denn sein? Kanten sind zwar mehr oder weniger eindeutig, sie zu detektieren aber nicht immer einfach. Ein Ansatz wäre z.B. ein Hochpaßfilter, wie z.B. x=1/9*[-1 -1 -1; -1 8 -1; -1 -1 -1]; oder siehe:

http://www.csse.uwa.edu.au/~pk/rese.....ncyFilt/highboostfilter.m

Versuche damit, ob Du überhaupt ansatzweise damit etwas erreichst. Es gibt viele unterschiedliche HP-Filter. Ein weiteres Thema wäre die Kantendetektion, wie z.B.

Code:
I=imread('1.tif');
figure; imshow(I);
I2=edge(I,'canny');      oder:  I2=edge(I,'canny', .2);
figure; imshow(I2)


Code:
k=0.75

[C1, Ct1]=edge(I,'canny',[],1.0);
[C2, Ct2]=edge(I,'canny',[],2.0);
[C3, Ct3]=edge(I,'canny',[],3.0);
[C4, Ct4]=edge(I,'canny',[],4.0);

C1=edge(I,'canny',k*Ct1,1.0);
C2=edge(I,'canny',k*Ct2,2.0);
C3=edge(I,'canny',k*Ct3,3.0);
C4=edge(I,'canny',k*Ct4,4.0);
ABCD=[ C1 C2; C3 C4];
figure; imshow(ABCD);




Zu HP-Filter und Kantendetektion liefern die Suchmaschinen sehr viele Ergebnisse. Es wird sehr rasch zeigen, ob Du mit diesen Ansätzen überhaupt etwas erreichst. Wenn ja, musst Du nur noch optimieren - wenn nein, weitere Wege zur Kantendetektion beschreiben. Es kann z.B. sein, dass Du Deine Werte vorher glätten musst, weil sich sonst die Kanten nur unsauber und zerrissen zeigen.

Viel Glück

Hubertus
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.