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

Rel. Extrema in einer Matrix detektieren

 

Markus87

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2011, 15:04     Titel: Rel. Extrema in einer Matrix detektieren
  Antworten mit Zitat      
Hallo,

ich habe folgendendes Problem ich hab eine Matrix einer beliebigen Größe. Nun möchte ich die Werte die eine zu Große Abweichung von den umliegenden Werten der Matrix haben detektieren.

Bsp.: 3 3 3
3 10 3
2 3 4

Hier möchte ich die 10 als zu große Abweichung detektieren.
Vielen dank für Eure Hilfe
Markus


Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 16.07.2011, 23:35     Titel:
  Antworten mit Zitat      
Hallo,

leider fehlen bei deiner Frage genauere Angaben um dir zu Helfen. Wie definiert du "große" Abweichung. Ist die Differenz von 1, 5 , oder 10 groß. Weiterhin ist die Frage ob die Differenx nur in x- oder y-Richtung betrachtet werden soll. Oder vielleicht auch von der gesamten Nachbarschaft abhänig gemacht werden soll (4 oder 8 Nachbarn?). Ehe diese Fragen nicht geklärt sind ist es schwer zu helfen. Prinzipiell könntest du dr einmal die Hilfe der Befehle:
Code:

diff
% nachfolgende Befehler benötigen die Image Processing Toolbox
imextendedmax
imregionalmax
 

anschauen. Andere Ansätze wären ahnlich der Faltung bzw. Korellation, heisst wir bestimmen für jeden Punkt die gewünschten Nachbarn und führen dann unsere Rechenoperation aus. Dies müsste man dann aber wohl manuell umsetzen, was etwas aufwändiger wäre. Vielleicht kann man auch die in Matlab bereits implementierten Funktionen für die Faltung (conv, conv2, convn) irgendwie für dein Problem direkt verwenden um sich der manuellen Umsetzung zu entziehen?

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Markus87

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.07.2011, 18:51     Titel:
  Antworten mit Zitat      
Hallo,
ich habe mich jetzt etwas intensiver mit meinem Problem beschäftigt. Also um etwas konkretter zu werden. Aus einer bestimmten Anzahl von Bildern mit annährend konstantem Helligkeitswert (homogene Ausleuchtung) berechne ich die Varianz von Pixel zu Pixel, sodass ich eine Matrix bekomme. Ich erwarte dass in dieser Matrix sehr viele Werte mit einer kleinen Streuung vom Mittelwert und ein paar Werte mit einer großen Streuung zum Mittelwert befinden. Diese Werte die eine zu große Streuung haben sollten erkannt werden.
Ich nehme dazu nochmals eine Beispielmatrix:

Code:

Matrix = [0.101 0.101 0.101;
              2.545 0.202 0.101;
              0.104 0.405 0.101]
 


Ich möchte nicht wie beschrieben die kleinen Abweichungen erkennen sondern z.B. hier die 2.545.

Ich besitze eine Image Processing Toolsbox und daher habe ich mit den Funktionen

imextendedmax
imregionalmax

beschäftigt. Mir ist nicht so ganz klar wie die Funktion imextendedmax(I,H) funktioniert.Welchen Einfluss hat die Angabe H gibt sie die realtive Abweichung zu den Umgebungspixeln an?

Für mein Problem wird es sicher ausreichen mit der 6 sigma Methode zu arbeiten Oder gibt es vllt noch eine besere Möglichkeit mit Filtern z.B. ?
Vielen Danke für die Unterstützung

Gruß Markus
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 18.07.2011, 22:00     Titel:
  Antworten mit Zitat      
Hallo,

also es bleibt prizipiell die Frage was eine große Abweichung bzw. Varianz heisst. Kannst du eine Art Grenzwert festlegen dann ginge dies sehr einfach. Nehmen wir an der Grenzwert wäre eine Varianz von 1:
Code:

Matrix = [0.101 0.101 0.101;
              2.545 0.202 0.101;
              0.104 0.405 0.101] ;

thresh = 1;
bigdif = Matrix>thresh;
 


Ich weiss leider nicht was eine 6 Sigma Methode ist.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.07.2011, 16:48     Titel: Re: Rel. Extrema in einer Matrix detektieren
  Antworten mit Zitat      
HAllo Markus,

Du kannst per CONV2 jeden Punkt durch den Mittelwert der umgebenen Punkte ersetzen und den Abstand zum Orginalbild berechnen:
Code:
x = rand(100, 100);
y = conv2(x, [1,1,1; 1,0,1; 1,1,1] / 8, 'same');
isPeak = abs(x - y) > 0.5;

Soetwas bleibt aber immer tückisch. Z.B. können ein besonders hoher und ein besonders niedrieger Peak direkt nebeneinander liegen. Die 8-Umgebung ist deshalb empfindlich, und ich würde eine größere Umgebung bevorzugen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Markus87

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2011, 19:36     Titel:
  Antworten mit Zitat      
Hallo,
erstmal Danke für die Unterstützung.
Durch eine größer Filtermaske und Anhebung der IsPeak Grenze komme ich meiner gewünschten Erkennung schon recht nahe.

Das Problem ist:
Durch die kleine Filtermaske und der geringen Grenze von Ispeak werden die besonders Extremen Werte auf die Nachbarschaft übertragen. Sprich es wird ein Peak erkannt wo eigentlich keiner ist.

-->Eine automatische Anpassung von Ispeak wäre hier vllt noch Sinnvoll.

Viele Grüße
Markus
 
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.