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

Koordinaten für bestimmte Werte suchen

 

maxwell.hein
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 10.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2013, 09:40     Titel: Koordinaten für bestimmte Werte suchen
  Antworten mit Zitat      
Hallo liebe Forum-User,

ich habe folgendes Problem.
Ich habe ein schwarzes Bild, in dem ist ein Punkt, der weiß ist.
Mein Ziel ist es, die Koordinaten dieses Punktes zu ermitteln.

Für die Funktion gehe ich zum Testen davon aus, dass ich das schwarze Bild habe (Dimensionen etwa 600x400 Pixel) und im Bild oben links ist ein weißes Quadrat (3x3 Pixel).

Wie kann ich jetzt die Koordinaten für jedes einzelne weiße Pixel bestimmen?

Hat jemand einen Vorschlag oder eine Idee?

Viele Grüße
Maxwell
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: 16.07.2013, 09:48     Titel:
  Antworten mit Zitat      
Moin,

Code:
I=imread(Bild);
[row col]=find(I==255);  % Wenn Weiß auch 255 ist!


Grüße - Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
maxwell.hein
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 10.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2013, 10:17     Titel:
  Antworten mit Zitat      
Danke Hubertus, für deine schnelle Antwort.
Sowas ähnliches hatte ich auch schon,
nur macht die Ausgabe für mich wenig Sinn oder ich verstehe sie einfach nicht!

für das angehängte Bild, erhalte ich folgende ausgabe:

x =

3
4
5
3
4
5
3
4
5
3
4
5
3
4
5
3
4
5
3
4
5
3
4
5
3
4
5

y =

3
3
3
4
4
4
5
5
5
603
603
603
604
604
604
605
605
605
1203
1203
1203
1204
1204
1204
1205
1205
1205

Kann mir das jemand erklären?
Grüße

test.png
 Beschreibung:
Das ist das verwendete Bild. Oben links das kleine weiße Quadrat.

Download
 Dateiname:  test.png
 Dateigröße:  1.81 KB
 Heruntergeladen:  1094 mal
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: 16.07.2013, 10:23     Titel:
  Antworten mit Zitat      
Dann stimmt irgend etwas mit dem Bild nicht. Du kannst die Suche prüfen:

Code:
X=zeros(100,100);
x(10,10)=1;
[row col]=find(x==1)
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 16.07.2013, 10:35     Titel:
  Antworten mit Zitat      
wenn du das bild einliest ist es keine 400x600 matrix sonder 400x600x3
darum auch 3 mal so viele werte weil in I(:,:,2) und I(:,:,3) auch 255 sind
wenn du nur solche bilder hast würde zb auch
Code:
I=imread('test_770.png');
[row col]=find(I(:,:,1)==255);  % Wenn Weiß auch 255 ist!
reichen.
oder
Code:
I=imread('test_770.png','PNG');
[row col]=find(rgb2ind(I,2)==1);
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: 16.07.2013, 10:48     Titel:
  Antworten mit Zitat      
Hallo Winkow,

das ist richtig, dass er 3x soviel Werte hat, aber die Werte verteilen sich auf x,y,z. Er hat aber eine ganze Liste von Werten und nach seiner Aussage nur 1 Punkt, der weiß sein soll.
Private Nachricht senden Benutzer-Profile anzeigen
 
maxwell.hein
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 10.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2013, 11:04     Titel:
  Antworten mit Zitat      
wieso wird es denn dann zu einer 400x600x3 Matrix?
es ist schon kein einzelner Punkt, sondern eine Fläche von mehrer Pixel Größe.



vielleicht erläutere ich mein mal etwas genauer:

Ich habe ein Video, das durch Backgroundsubtraction bearbeitet wird, und daraus werden die einzelnen Frames genommen, die in etwa wie das angehängte Bild aussehen.

Auf dem Bild ist ein weißer "größerer" Punkt in der rechten Hälfte zu erkennen, um den sich alles dreht.
Ziel ist es, die "gemittelten" Koordinaten dieses Punktes im Frame festzustellen, und dabei vorher, wenn möglich, das Rauschen (oben links und in der Mitte) herauszufiltern.
Und das dann für eine Reihe von Frames.

Grüße

bee.png
 Beschreibung:

Download
 Dateiname:  bee.png
 Dateigröße:  8.87 KB
 Heruntergeladen:  1015 mal
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: 16.07.2013, 11:26     Titel:
  Antworten mit Zitat      
Ok, das sieht etwas anders als deine Eingangsfrage aus, erklärt jetzt, warum du so viele Einträge erhalten hast. Wenn sich alles auf den Bereich in Bildmitte konzentriert, würde ich zunächst die anderen Pixel entfernen. Dann bleibt dein gesuchter Bereich über. Um die Pixel am Rand zu entfernen, kannst du die Funktion "imclearborder" verwenden. Dann bleiben noch 3 Pixel, auch etwa in Bildmitte übrig. Die kannst du als Rauschen ansehen und mit einer Rauschfunktion entfernen. Passend wäre der Medianfilter, weil er nur einzelne Störpixel entfernt und dein Array nicht antastet.
Private Nachricht senden Benutzer-Profile anzeigen
 
maxwell.hein
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 10.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2013, 11:33     Titel:
  Antworten mit Zitat      
imclearborder ist glaube ich nicht das richtige.

um noch weiter zu erklären:

Ziel ist am Ende Stereovision, d.h. ich brauche Bilder mit der gleichen Größe.
Habe grade imclearborder genutzt, der macht mir dann das gesamte Bild Schwarz.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 16.07.2013, 11:41     Titel:
  Antworten mit Zitat      
Zitat:
wieso wird es denn dann zu einer 400x600x3 Matrix?
weil er es nicht als grauwert einliest sonder farb bild und ein farbbild nunmal 3 werte hat RGB. zur bildverarbeitung giebt es glaub ich auch ein tutorial bei image processing toolbox. da werden reiskörner gezählt oder so.
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: 16.07.2013, 11:42     Titel:
  Antworten mit Zitat      
Das Problem ist, ich kann dein Bild nicht übernehmen und habe so ein ähnliches gemacht. Versuche dann, das Bild zu entrauschen. Dabei ist die Filterwahl entscheidend, damit dein gesuchtes Array nicht verändert wird. Versuche mal:

http://www.mathworks.com/matlabcent.....5-hybrid-median-filtering

Das Problem der Bildgröße verstehe ich nicht. Die Bildgröße wird doch nicht verändert.
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: 16.07.2013, 12:49     Titel:
  Antworten mit Zitat      
Es gibt sehr viele Methoden Störpixel zu entfernen. Manchmal hilft aber auch eine ganz einfache. Wenn deine Störpixel dunkler als dein gesuchtes Array sind, kann man sie auch ganz einfach entfernen:

Code:
I=imread(Bild);
I(I<=130)=0;
Private Nachricht senden Benutzer-Profile anzeigen
 
maxwell.hein
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 10.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2013, 12:58     Titel:
  Antworten mit Zitat      
Ich weiß nur nicht genau, wie hell mein gesuchtes Array ist.
Kann unter umständen sein, dass es auch dunkler ist, als manche Störpixel.

Mit imclearborder komm ich nach wie vor nicht zurecht, entweder sind dann weiterhin Störpixel vorhanden, oder alle weg.
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: 16.07.2013, 13:02     Titel:
  Antworten mit Zitat      
Messe deine gesuchtes Array mit: "impixelinfo" oder "impixelregion" aus. Da kannst du die Werte ablesen. Impixelregion ist vl. interessanter. Du mußt nur den Bereich so gro0 mit der Lupe vergrößern, bis Werte angezeigt werden. Also Bereich ganz klein zusammenschieben.

Es ist vielleicht sinnvoller, das zuerst zu machen, denn filter helfen nur weiter, wenn die Störpixel gleich hell wie dein Array sind.
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.