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

matrixelemnte innerhalb eines indexbereiches finden

 

felix

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2013, 16:03     Titel: matrixelemnte innerhalb eines indexbereiches finden
  Antworten mit Zitat      
Hallo,

man stelle sich eine Matrix (z.B. 480x720) vor. Genau, ein Bild!

Nun nehme ich ein beliebiges Pixel aus meiner Matrix und ziehe um dieses einen gedachten Kreis.
Soll heißen: Ich hab die Koordinaten eines Pixels und einen Radius r. Die Koordinaten des Pixels entsprechen hier doch den indices des Matrixelements "Pixel", oder?

Nun möchte ich alle weiteren Pixel die innerhalb des Kreises mit Radius r um das Startpixel liegen, finden. Wie macht man das?

Wenn man jetzt noch innerhalb dieses Kreises nur jene Pixel finden kann, die größer als ein definierter Wert sind (z.B. Helligkeit > 200 ) wäre die ganze Sache PERFEKT!!!

Vielen Dank für Eure Hilfe!


Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2013, 16:56     Titel:
  Antworten mit Zitat      
Hallo felix,

sagen wir Du hast zwei Matrizen x und y (480x720) mit jeweils den x- bzw. y-Koordinaten des Pixels (siehe meshgrid). Nun rechne jeweils den Abstand zu einem beliebigen Pixel a=(x-cx).^2+(y-cy).^2. Jedes Element in a<r^2 liegt innerhalb des Kreises. Logisches indizieren (z.B. >200) gehört dabei zu den absoluten Grundlagen von Matlab.

Grüße
Sirius
Private Nachricht senden Benutzer-Profile anzeigen
 
felix

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.05.2013, 13:50     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank für deine Antwort.
Auch wenn es zu den "absoluten Grundlagen von Maltlab" gehört, würde ich mich über ein kurzes Beispiel freuen! Ganz verstehen, wie das gemeint ist, tu ich nämlich noch nicht...

Jeder lernt Matlab auf eine andere Weise und mit einer anderen Perspektive. Solche Kommentare sind eigentlich NIE sinnvoll, oder?
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.05.2013, 17:41     Titel:
  Antworten mit Zitat      
Hallo felix,

Ich erkenne schon einen Sinn in dem Kommentar: Die absoluten Grndlagen erlenrnt man beser durch das Studium der "Getting Started"-Kapitel. Denn dort sind sie umfasssend und erschöpfend erklärt. Sie durchzuklesen ist viel effizienter, als wenn im Forum das gleiche nochmal nacherzählt wird. Dan wäre zwar vielleicht für Dich einfacher, aber für die Antwortenden natürlich ein großes Stück Arbeit.

Deswegen ist Sirius3s Antwort eventuell hilfreicher, als es Dir zunächst klar wird. Zudem wäre es sicherlich sinnvoller, wenn Du das Beispiel postest soweit Du es schon bearbeitet hast. Denn dann gäbe es eine weit bessere Chance, dass unsere Vorschläge zu Deinem Problem passen.

Wenn ich mal etwas rate:
Code:
data = rand(480, 720);
x = 1:720;
y = 1:480;
center = [100, 200];
radius = 20;
inCircle = bsxfun(@plus, (x-center(1)).^2, (y(:)-center(1)).^2) < radius^2;
inLimit  = data < 0.2;
match = inCircle & inLimit;

Wenn dann aber logisches Indizieren nicht klar ist, könnte man wiederum für jeden einzelnen Zwischenschritt empfehlen, die "Getting Started"-Kapitel zu lesen. Ohne die kann man einfach nicht mit einer so mächtigen Sprache wie Matlab umgegehen.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.05.2013, 09:40     Titel:
  Antworten mit Zitat      
danke für deine antwort!

ich habe verstanden!

und danke für dein beispiel, das hilf mir ungemein! Very Happy
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.05.2013, 11:30     Titel:
  Antworten mit Zitat      
Hallo felix,

Schön, dass das Beispiel hilft.
Es ist oft schwierig zu entscheiden, was den Forums-Nutzern auf Dauer mehr hilft: Wenn man eine Lösung postet, bemühen sich manche nicht mehr, sie zu verstehen, lernen dabei nichts und stellen nach einer Woche fast die gleiche Frage ("mein Radius ist aber nicht 20, sondern in der Variable R gespeichert..." :-) ). Dann hätte es mehr gebracht, sie zum Lesen der Dokumentation zu drängeln.
Aber die Mehrheit der Nutzer kann solche Lösungen gut nutzen um daraus zu lernen und sie für die eigenen Bedürfnisse anzupassen.

Gruß, Jan
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.