|
|
Muster in einem Bild finden |
|
Zenker |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.06.2010, 10:13
Titel: Muster in einem Bild finden
|
|
Hallo,
ich möchte alle Muster in einem Bild finden z.B.
0 0 0 255
255 0 0 0
0 0 255 0
und zwar nach möglichkeit schnell..
ich habe nun über mehrere For-Schleifen einen laufenden Code hinbekommen, aber durch die ganzen IF-Schleifen brauch das ding für ein Bild fast 20 Mintuen - bissi lang
Also.,. kann mir jemand helfen??
Besten Dank im Voraus & Gruß,
Zenker
|
|
|
|
|
Maddy |
Ehrenmitglied
|
|
Beiträge: 494
|
|
|
|
Anmeldedatum: 02.10.08
|
|
|
|
Wohnort: Greifswald
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.06.2010, 11:42
Titel:
|
|
|
|
Zenker |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.06.2010, 14:50
Titel:
|
|
servus, erstmal danke für deine antwort...
bin grad unterwegs ab die bilder sind so 1000 x 2000 groß und im moment such ich nur quadrate, die ins bild passen würden in binärbildern.
sinngemäß
max =0
for i =1:max_x
for j=1:max_y
n = 0
while(1)
if(min(min(array(i+n,j+n)) == 0)
break;
n = n+1;
end
end
if(max < n)
max = n
end
end
so oder so ähnlich - man kann da noch nen bissi was optimieren, aber im prinzip sieht so der kern-code aus... und das dauert sau lange einfach
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 24.06.2010, 15:14
Titel:
|
|
|
|
Zenker |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.06.2010, 00:03
Titel:
|
|
Im Prinzip ist die Funktion genau das was ich suche... Problem ist nur, dass sie sau lange braucht und zu allem Überfluss auch noch crasht wegen out of memory (2gb@Ubuntu 10.04)
>> test123 = ones(255);
>> max(max(Delete_pic_bw))
ans =
1
>> [test1, QLT] = findsubs(Delete_pic_bw,test123,100)
??? Out of memory. Type HELP MEMORY for your
options.
Error in ==> meshgrid at 45
yy = yy(:,>> test123 = ones(255);
>> max(max(Delete_pic_bw)
??? max(max(Delete_pic_bw)
|
Error: Expression or statement is
incorrect--possibly unbalanced (, {, or [.
Bild ist wie gesagt 2000 * 1000 groß...
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 25.06.2010, 08:44
Titel:
|
|
Hallo Zenker
verlinkt habe ich aber andere Funktion FINDSUBMAT, die ist schneller als meine Version FUNDSUBS, die du benutzt hast.
Also Passt FINDSUBMAT etwa nicht?
Okay ich schaue, später wenn ich Zeit habe, ob ich auch meine Funktion optimieren kann.
|
|
|
Zenker |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.06.2010, 10:38
Titel:
|
|
Danke schonmal, ich weds morgen testen udn mich dann melden..
Gruß,
Zenkre
|
|
|
HasanK |
Forum-Anfänger
|
|
Beiträge: 29
|
|
|
|
Anmeldedatum: 23.06.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.06.2010, 12:19
Titel:
|
|
1. soweit ich weiß, müsste dein eingelesenes Bild eine 3-Dimensionale Matrix sein.
2. die relevanten Farbe (R G oder B) in der das Muster eindeutig zu erkennen ist auswählen, und nur die betrachten so dass deine Matrix 2-dimensional ist.
bspw. heißt die Matrix 'A'
3. anschließend durch max(max(A)) die den Maximal-Pixelwert deiner Matrix identifizieren.
4. ein Kriterium definieren: bspw. 0.8 fache max-Pixelwert
5. die Matrix A durch den Befehl: A=A>0.8 x max-Pixelwert den Muster erkennen
6. wenn du gleichzeitig mit size(A,1) und size(A,2) quasi ein Koordinatensystem definierst und damit die neue Matrix multiplizierst hast du die Position des Musters.
|
|
|
Zenker |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.06.2010, 19:58
Titel:
|
|
versteh ich net wie das klappen soll, sorry. Es handelt sich übrigens um binärbilder
|
|
|
|
|
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 - 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.
|
|