|
|
Fenster um Pixel selektieren |
|
soad |

Forum-Century
|
 |
Beiträge: 150
|
 |
|
 |
Anmeldedatum: 10.11.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.02.2009, 17:17
Titel: Fenster um Pixel selektieren
|
 |
Hi,
ich selektiere zufällig ein Pixel eines Bildes und möchte nun das Fenster der Größe N (N ungerade) um dieses Pixel erhalten, also der gewählte Pixel ist das Zentrum dieses Fensters; sozusagen die Submatrix selektieren.
Graphisch veranschaulicht, wobei o das gewählte Pixel ist und x die Elemente des Fensters angeben für N = 7;
Das Problem sind natürlich die Ränder des Bildes (ausserhalb wird der Wert 0 angenommen).
Kennt Ihr vielleicht eine Funktion, wie man grundsätzlich so ein Fenster selektieren kann bzw. die Ränder berücksichtigt oder komm ich da um eine Menge if-Abfragen nicht rum ?
Scheint mir halt recht ineffizient zu sein...
Ich hoffe, Ihr habt einen Tipp für mich!
mfg,
soad
|
|
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 12.02.2009, 17:24
Titel:
|
 |
IF könnte in der Tat ineffizient sein. MAX und MIN Operationen sind aber sehr fix. Wenn also ein 3 Pixel entfernter Nachbar auf "-1" sässe, könnte das am besten mit
Zitat: |
berechneter_wert=max(1,berechneter_wert) gerade gezogen werden.
Andreas |
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.02.2009, 00:31
Titel:
|
 |
In welchem Zusammenhang brauchst Du das? Evtl kommt die Nutzung von
aus der Image Processing Toolbox in Frage.
Kannst Du Dir nicht eine Matrix N*N (zeros oder auch nan) machen, und die Elemente mit 'gültigem' Index hierein kopieren? Man hat den ausgewählten Punkt in der p-Matrix, die Größe der p-Matrix, die Größe und den Mittelpunkt der x-Matrix. Da müsste man mit zwei, drei Vergleichsoperationen zu Rande kommen.
|
|
|
soad |
Themenstarter

Forum-Century
|
 |
Beiträge: 150
|
 |
|
 |
Anmeldedatum: 10.11.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.02.2009, 18:29
Titel:
|
 |
Danke erstmals euch beiden!
blkproc hatte ich mir eh schon angeschaut, aber ich wende die Funktion nicht auf das gesamte Bild an, sondern immer nur auf einen Block.
Mir erschien es jetzt am einfachsten das gesamte Bild zuerst mit 'padarray' zu erweitern, dann brauch ich mir zu mindestens um die Indizes keine Sorgen mehr zu machen ...
mfg,
soad
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.02.2009, 20:32
Titel:
|
 |
Vielleicht ist es so etwas geschickter, als eine u.U. große Matrix an den Rändern zu erweitern:
|
|
|
soad |
Themenstarter

Forum-Century
|
 |
Beiträge: 150
|
 |
|
 |
Anmeldedatum: 10.11.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.02.2009, 17:17
Titel:
|
 |
danke für deinen tipp! im moment ist die rechenzeit noch vertretbar ...
eine Frage noch zu "blkproc":
um die Funktion für jedes pixel auszuwerten, verwende ich momentan
also der "block" besteht nur aus einem pixel...das geht ein bisschen am sinn von blkproc vorbei .
das problem ist nur jedes pixel soll einmal "center pixel' des blocks sein (also sliding window vs. distinct blocks); weiters wird eine matrix und kein skalar zurückgegeben (was gegen 'nlfilter' spricht).
ich bitte mal wieder um euren beistand !
mfg,
soad
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.02.2009, 17:35
Titel:
|
 |
Ich verstehe das nicht, welche Funktion soll denn auf jedes Pixel angewandt werden? Würde das evtl mit
machen.
|
|
|
soad |
Themenstarter

Forum-Century
|
 |
Beiträge: 150
|
 |
|
 |
Anmeldedatum: 10.11.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.02.2009, 18:29
Titel:
|
 |
also, um jedes pixel wird ein fenster gelegt, wobei das aktuelle pixel den mittelpunkt des fensters darstellt. innerhalb dieses fensters werden nun 4 vektoren, deren länge der dimension des fensters entspricht, berechnet; also für ein NxN fenster wird für jedes pixel eine 4XN matrix zurückgegeben.
diese matrix soll für jedes pixel berechnet werden. also für ein PxQ Bild und NxN fenster erhält man eine (Px4) X (QxN) matrix zurück.
ich hoffe, das war etwas verständlicher ...
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|