Texturklassifizierung über DCT


12

Wie sinnvoll wäre es, die Textur eines Bildes anhand von Merkmalen einer diskreten Cosinustransformation zu klassifizieren? Googeln "Textur Klassifikation dct" findet nur eine akademische Arbeit zu diesem Thema unter Verwendung eines neuronalen Netzwerks.

Für meine Anwendung habe ich einen großen Korpus von etikettierten Bildern, in denen das gesamte Bild eine konsistente Textur aufweist (z. B. Nahaufnahmen einer Decke, Baumrinde, einer Wiese usw.).

Inspiriert von einer Antwort auf eine frühere Frage , dachte ich über den folgenden Ansatz nach:

  1. Teilen Sie jedes Bild in NxN Pixelblöcke auf
  2. Nimm die DCT jedes Blocks
  3. Reduzieren Sie jeden DCT zu einem 1xM-Array, geben Sie ihn an einen K-Means-Clustering-Algorithmus weiter und ermitteln Sie die Cluster-Bezeichnung für jeden DCT
  4. Berechnen Sie ein Histogramm der Clustering-Beschriftungen für jedes Bild, indem Sie jede Beschriftung pro Bild von # 3 abzählen
  5. Trainieren Sie einen SVM-Klassifikator, indem Sie ihm einen Satz von [(Histogramm, Bildbezeichnung)] zuführen.

Wie gut würde das funktionieren? Ich habe ein ähnliches System implementiert, das Funktionen verwendet, die mit den SIFT / SURF-Algorithmen extrahiert wurden, aber ich konnte nur eine Genauigkeit von ca. 60% erzielen.

Auf welche andere Weise könnte ich die DCT verwenden, um Texturen zu klassifizieren?


1
Das klingt fast wie die neuronale Netzwerkzuweisung, die ich gerade für ml-class.org
Ivo Flipse

2
@IvoFlipse: +1 für ml-class.org. Bei dieser Frage geht es jedoch um Funktionen. Wenn Ihre Funktionen für das Problem nicht geeignet sind, spielt es keine Rolle, wie gut Ihr Klassifizierungsalgorithmus ist.
Dima

Bank of Gabor-Filter sind möglicherweise sehr nützlich für die Textklassifizierung.
Mrgloom

Antworten:


6

Bisher klingt das, was Sie vorschlagen, nach einem vernünftigen Ansatz. Ich glaube jedoch nicht, dass Sie wissen werden, wie gut es funktioniert, bis Sie es ausprobieren, genau wie Sie es mit SIFT versucht haben.

Ich habe aber eine Frage. Warum beschränken Sie sich auf DCT? Es gibt viele Darstellungen, die für die Texturklassifizierung verwendet wurden: Koexistenzmatrizen, lokale Binärmuster usw. Die Tatsache, dass Sie nur einen Artikel über die Verwendung von DCT für die Texturklassifizierung gefunden haben, lässt vermuten, dass dies nicht die am häufigsten verwendete Funktion ist für dieses Problem. Ich würde empfehlen, dass Sie Ihre Literaturrecherche erweitern, um zu sehen, welche anderen Funktionen die Benutzer verwendet haben und wie gut sie gearbeitet haben.


4

Wenn Sie das Bild nicht in einen NxN-Block aufteilen, sondern stattdessen ein Schiebefenster verwenden, berechnen Sie die DCT für Blöcke, die an jedem Punkt des Bildes zentriert sind, im Wesentlichen mithilfe des Wavelets-Ansatzes. Das Aufteilen des Bilds in Blöcke entspricht dem Verwenden von Schiebefenster und Downsampling. Im Wesentlichen verwenden Sie also eine reduzierte Form der Wavelet-Textur-Segmentierung. Gabor-Wavelet wird normalerweise anstelle von DCT verwendet, weil: es mehr Parameter (+ Skalierung und + Richtung) und eine sanfte Dämpfung (anstelle einer scharfen Fensterkante) aufweist.


3

Eine der Hauptattraktionen, warum man eine DCT-basierte Textur-Segmentierung / Klassifizierung (oder eine andere Aktivität) durchführen möchte, ist die Tatsache, dass die meisten JPEG-Bilder und MPEG-Videos bereits in DCT vorliegen. Andererseits wird allgemein angenommen, dass ein auf Gabor basierender Ansatz rechenintensiv ist.

Die DCT-Koeffizienten MID zu hohen Frequenzen und / oder Diagonalfrequenzen spiegeln eine gute Darstellung lokaler Variationen in der Pixeldomäne wider.

Dies alles ist jedoch möglicherweise nicht so gut, wie es sich anhört. Zunächst einmal haben DCT-Blöcke in den meisten Standards die Größe 8x8. Dies impliziert also, dass, wenn die Szene ein Muster mit einer Periodizität von 8 Pixelpunkten aufweist, dieser Resonanzeffekt in Bezug auf die Ähnlichkeit der entsprechenden Koeffizienten benachbarter Blöcke sichtbar wird, wenn sich die Periodizität in dieser Beziehung ändert.

Der entscheidende Unterschied zwischen reinen DCT-Blöcken und Gabor besteht darin, dass Gabor eine Skala hat. Wenn Sie also die "Periodizität" oder "Feinheit / Rauheit" der Textur ändern, wird Gabor feststellen, wo die feste Bewertung von DCT bei einer Blockgröße von 8 x 8 nicht gut passt.

Man muss jedoch erkennen, dass solche Muster aufgebaut werden müssen, indem mehrere Blöcke zusammen betrachtet werden, um ein solches Skalenphänomen zu bewerten . Fragen Sie sich zum Beispiel als grundlegenden Ansatz, ob ich 16x16-Blöcke oder 32x32-Blöcke gehabt hätte, was wären die resultierenden Muster in den Koeffizienten gewesen? Die Koeffizienten an den jeweiligen Orten haben eine Beziehung, die ausgenutzt werden kann, und ermöglichen es einem, die wahre Skala der Textur zu entdecken.

Dies ist in der Tat ein gutes Forschungsthema.

HINWEIS: Sogar MPEG7 (das den Komitees, die MPEG erstellt haben, sehr nahe steht) - sie schlagen Gabor-basierte Funktionen für Textur und nicht für DCT vor.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.