Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

bildverarbeitung: texturdeskriptor

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Computer-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 02.10.2012, 00:30    Titel: bildverarbeitung: texturdeskriptor Antworten mit Zitat

Hi,

ich möchte in einem Bild ähnliche Bereiche segmentieren; nur nach Farben segmentieren reicht nicht.

Mein Plan wäre jetzt, die Pixel (zusätzlich zu RGB) um einige Texturinfos zu erweitern.

Dazu möchte ich zu jedem Pixel einen n-dimensionalen Vektor haben, sodass ich die Ähnlichkeit mit der euklidischen Distanz berechnen kann.

Problem: wie baue ich diesen Texturdeskriptor?

Meine Idee wäre, lokale Minima und Maxima im Graustufenbild zu finden, diese mit Linien zu verbinden, und ein Histogramm der Linienwinkel zu bauen, normalisieren (d.h im einfachsten Fall so durchrotieren, dass der höchste Peak des Histos bei 0° ist, zwecks Rotationsinvarianz)

Allerdings würde das nicht klappen bei Texturen, die keine ausgepraegten Minima/Maxima besitzen :/ (Zebrastreifen z.B., da wuerde das nur rauschen)

Hat jemand ne Idee, wie ich einen funktionierenden Texturdeskriptor hinkriege?

Er soll rotationsinvariant sein (moeglichst dennoch Rotationsinfo "zuschaltbar" haben), nur in geringem Maße größeninvatiant, und ortsinvariant (d.h., verschiedene Punkte in der selben Textur muessen gleiche Deskriptoren kriegen)


(ThePuppetMaster, fühle dich angesprochen! zwinkern )
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 08.10.2012, 21:03    Titel: Antworten mit Zitat

versuchs mal mit einer 2D FFT in variabler breite. Die entstehenden Moden bilden in deinem Fall das das Muster das du suchst.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 09.10.2012, 10:51    Titel: Antworten mit Zitat

Hab jetzt mal etwas gebastelt.

Die Regulären Verfahren zur Mustererkennugn sind recht komplex, und gibt es schon in diversen Bibliotheken. (gibt auch tonnenweise infos dazu im netz ... siehe z.b. mustererkennung von Gallwitz ano 2011)

Ein verfahren, das mir auf die schnelle dazu einfällt wäre die oben erwähnte FFT analyse.

Du müsstest hierfür das Bild rastern (segmente können / müssen nicht, variabler grösse sein)
Jedes Raster durchläuft ein FFT auf R/G/B basis. Dieses Nutzt du als "fingerabdruck" des Musters. Die FFT hat die eigenschaft frequenzen (häufigkeiten pro zeiteinheit) recht gut auf Bilder ableiten zu können. Dieses kannst du dann nutzen um deren Moden und Frequenz-Muster auf andere Segmente hin zu vergleichen (z.b. passmuster vergleich (übereinander legen, und die "passgenauigkeit" vergleichen).

Je besser ein muster auf ein anderes passt (frequenztechnisch), desto warscheinlicher ist es, das dieses segment die selbe textur aufweist wie das zu vergleichende / das prüfmuster.

Ein FFT über eingesammtes bild sähe dann in etwa so aus (fft.bas im source (unten)).

(eingangsbild (c) von http://google.de )


oben ist das eingangsbild
darunter ist die farbverteilung der selektierten zeile für r g und b.
danach folgt das FFT für r g und b dieser zeile

wie man erkennen kann gibt es diverse moden im Bild (vorallem im blauem bereich)

die kombination der entsprechenden farben als muster-analyse kann dann zum vergleich herangezogen werden.


wichtig ist nur, das du das Bild rasterst und jedes rasterelement für sich berechnest. danach kansnt du dann die einzelnen ergebnisse (muster-block) miteinander vergleichen und daraus die übereinstimmugn der anderen elemente ableiten.


hier noch der source zum bissi rumspielen: http://ops.ath.cx/code?id=262


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 09.10.2012, 16:31    Titel: Antworten mit Zitat

Ist das die/eine Variante die auch die Google-bilder-suche nutzt? Hab wärend meines Farbquantisierungsproblems mal davon gelesen...
Ist nicht sehr effektiv wie ich testweise bei Google gemerkt habe, aber finde die Idee dahinter irgendwie interessant....
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.10.2012, 16:36    Titel: Antworten mit Zitat

Es gibt viele Ansätze um ähnliche Bilder zu finden, FFT braucht man dazu aber nicht unbedingt. Im Grunde genommen und stark vereinfacht wird dafür das Originalbild auf eine feste Größe runterskaliert, evtl in Graustufen umgewandelt und davon ein Fingerprint erstellt. Den könnte man natürlich auch auf dem Ergebnis der FFT erstellen, aber ich wüsste auf Anhieb nicht, ob dies große Verbesserungen mit sich bringt.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 09.10.2012, 16:47    Titel: Antworten mit Zitat

Bin grad zu faul nach FFT zu googlen, aber von der gelesenen Theorie (oder was hängen geblieben ist) und dem was ich bei ThePuppetMaster's Beispiel erkennen kann würd ich auch erstmal so vorgehen.. ein RGB(S) Histogramm erstellen, normieren und dann wohl nach abweichungen vergleichen... glaube aber das es wie gesagt auch bei der google-bilder-suche/vergleich nicht sehr gut ist, da bilder mit ähnlicher farbgebung 'erkannt' werden...
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 09.10.2012, 16:51    Titel: Antworten mit Zitat

@Jojo ... verebsserungen ist bei solchen problemem rein subjektiv zu betrachten.

Es gibt diverse mögliche ansätze um texturen in bildern zu erkennen. Je nachdem, welche Problematik zugrunde liegt kann man auf die eine oder andere weise erfolgreiche sein.

Mein oben beschreiebenes verfahren ist sicher nicht das beste, auch nicht das schlechteste, aber eines das leicht zu "bauen" und "relativ" schnell ist.

Das "herunterskalieren" ist im grunde nichts anderes als ein Weichzeichner über ein Bild zu prügeln. Das hat jedoch den nachteil, das Informationen verlohren gehen. Die folge ist, das Texturen mit selben Farben aber unterschiedlichen Aufbauten als gleich erkannt werden könnten. Bei einem FFT Verfahren entsteht hier im gegensatz dazu ein anderes Frequenzmuster mit anderen Moden ausläufern. Diese erzeugen daraufhin ein anderen Fingerprint trotz gleicher Farbe.

Das "skalieren" ist sicher eines der schnellsten Verfahren um dieses Problem einfach und schnell zu lösen. Ob es aber mit kleinststrukturen mithalten kann ist fraglich.

Hab auch darüber nachgedacht, das ganze per weichzeichner zu lösen, bin dann aber eben auf oben genanntes Problem der mehrdeutigkeit gestossen, und habs dann doch per FFT gebastelt.

Ein Vorteil der FFT ist, das es jeden Pixel verarbeitet, und die Pixelfarbe anhand des abstandes zu anderen Pixeln betrachtet.

und @jojo .. (falls du es missverstanden haben solltest) es geht ja hier nicht darum, bilder zu vergleichen, sondern texturen in bilder zu finden und diese texturen (so vermute ich mal anhand der letzten threads von EP) im Bild wiederzufinden um ein "objekt" anhand deren Muster zu erkennen.

Eine weitere Möglichkeit, Texturen zu erkennen leise sich mit dem Kontrast realisieren.
Da Bilder meist FÜR einen menschen erzeugt werden, haben Sie den Vorteil, das bestimmte eigenschaften im Bild umgesetzt werden. z.B. sind bestimmte Dynamik-umfänge realisiert, um dinge hervor zu heben. Oder um Strukturen heraus zu kistalisieren. usw.

Hier könnte man auch ansetzen und die Dynamik des Bildes analysieren. Diese würde bestimmte Merkmale aufweisen, welche im Bilder gehäuft oder wiederkehrend hervortreten. In Blöcke könnte man hier wiederkerende Muster ausmachen.


[EDIT] Im oberem Bilde sieht man leider nicht, das der FFT und die grafen unter dem Bild eigetnlich nur eien markierte Zeile zeigen, und sich nicht auf das gesammte bild beziehen!

[EDIT-2] Die 3 Grafen unter dem Bild sind übrigens keine Histogramme!!! Das ist der Farbwert von R / G / B über die Zeile hinweg.
pixel-0-r, pixel-1-r, pixel-2-r, pixel-3-r, pixel-4-r, ...
und keine summe derer
häufigkeit-r-0, häufigkeit-r-1, häufigkeit-r-2, ...

[EDIT-3] Vergleicht man diese Farbwerte miteinander (R / G / B) sieht man kaum einen unterschied. Er ist teilweise nur in der wertigkeit auszumachen. Im FFT aus diesen Werten aber sieht man gravierende Änderungen. Diese entstehen eben aus der "Frequenz" dieser Farbwerteverteilung.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.10.2012, 17:24    Titel: Antworten mit Zitat

ThePuppetMaster hat Folgendes geschrieben:

und @jojo .. (falls du es missverstanden haben solltest) es geht ja hier nicht darum, bilder zu vergleichen, sondern texturen in bilder zu finden und diese texturen (so vermute ich mal anhand der letzten threads von EP) im Bild wiederzufinden um ein "objekt" anhand deren Muster zu erkennen.

Ich habe mich ja auch nicht auf den OP bezogen sondern auf Eternal_pains Frage, ob Google das genau so macht, und soviel ich weiß geht es bei diesen Fingerprinting-Verfahren weniger darum, Texturen in diesem Sinne zu extrahieren.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 09.10.2012, 17:30    Titel: Antworten mit Zitat

Ah, ok ... dann hab ich das missverstanden. SRY.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Computer-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht 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.

 Impressum :: Datenschutz