Classificazione delle texture tramite DCT


12

Quanto sarebbe possibile classificare la trama di un'immagine usando le caratteristiche di una discreta trasformazione del coseno? La "classificazione delle trame dct" su Google trova solo un articolo accademico su questo argomento, usando una rete neurale.

Per la mia applicazione, ho un vasto corpus di immagini etichettate, in cui l'intera immagine ha una consistenza coerente (ad esempio scatti ravvicinati di una coperta, corteccia di un albero, un campo erboso, ecc.).

Ispirato da una risposta a una domanda precedente , stavo considerando il seguente approccio:

  1. dividere ogni immagine in blocchi NxN di pixel
  2. prendere il DCT di ciascun blocco
  3. appiattire ciascun DCT in un array 1xM e inviarlo a un algoritmo di clustering K-Means e ottenere l'etichetta del cluster per ciascun DCT
  4. calcola un istogramma di etichette di raggruppamento per ogni immagine contando ciascuna etichetta per immagine da # 3
  5. addestrare un classificatore SVM alimentandolo con un set di [(istogramma, etichetta immagine)]

Quanto funzionerebbe bene? Ho implementato un sistema simile, utilizzando le funzionalità estratte tramite gli algoritmi SIFT / SURF, ma sono stato in grado di ottenere solo una precisione del 60% circa.

In quali altri modi posso usare il DCT per classificare le trame?


1
Sembra quasi l'assegnazione della rete neurale che ho dovuto fare per ml-class.org
Ivo Flipse

2
@IvoFlipse: +1 per ml-class.org. Tuttavia, questa domanda riguarda le funzionalità. Alla fine, se le tue funzionalità non sono appropriate al problema, non importa quanto sia buono il tuo algoritmo di classificazione.
Dima,

banca di filtri Gabor forse molto utile per la classificazione testuale.
MrGloom,

Risposte:


6

Finora quello che stai proponendo sembra un approccio ragionevole. Tuttavia, non penso che saprai quanto funziona fino a quando non lo provi, proprio come hai provato SIFT.

Ho una domanda però. Perché ti stai limitando a DCT? Esistono molte rappresentazioni che sono state usate per la classificazione delle trame: matrici di ricorrenza, modelli binari locali, ecc. Il fatto che tu abbia trovato un solo documento sull'uso di DCT per la classificazione delle trame suggerirebbe che questa non è la caratteristica più comunemente usata per questo problema. Ti consiglierei di ampliare la tua ricerca in letteratura per vedere quali altre caratteristiche le persone hanno usato e quanto bene hanno funzionato.


4

Se non dovessi dividere l'immagine in un blocco NxN ma invece utilizzassi una finestra scorrevole - calcola DCT per i blocchi centrati in ciascun punto dell'immagine, usando essenzialmente l'approccio wavelet. La suddivisione dell'immagine in blocchi è uguale all'utilizzo della finestra scorrevole e del downsampling dell'immagine. Quindi essenzialmente stai usando una forma ridotta di segmentazione delle trame wavelet. L'onda wavel di Gabor usava al posto del DCT di solito perché: ha più parametri (+ scala e + direzione) e attenuazione uniforme (invece del bordo tagliente della finestra).


3

Una delle maggiori attrattive per cui si vorrebbe fare la segmentazione / classificazione delle texture basata su DCT (o qualsiasi altra attività) è il fatto che la maggior parte delle immagini JPEG e dei video MPEG sono già in DCT. D'altra parte, si ritiene generalmente che l'approccio basato su Gabor sia costoso dal punto di vista computazionale.

DCT coefficiente le frequenze MID e alte e o le frequenze diagonali riflettono una buona rappresentazione delle variazioni locali nel dominio dei pixel.

Tuttavia, tutto ciò potrebbe non essere buono come sembra. Prima di tutto, nella maggior parte degli standard i blocchi DCT hanno dimensioni 8x8. Quindi la conseguenza implicita è che se la scena ha uno schema con periodicità di 8 punti pixel, questo effetto risonante sarà visibile in termini di somiglianza dei corrispondenti coefficienti di blocchi adiacenti, quando la periodicità cambia questa relazione varia.

Comprendere la differenza critica tra i blocchi puri di DCT rispetto a Gabor è che Gabor ha una scala. Quindi, se si modifica la "periodicità" o "finezza / rugosità" della trama, Gabor lo scoprirà dove la valutazione fissa di DCT @ 8x8 non sarà in grado di adattarsi bene.

Tuttavia, ciò che è necessario realizzare è costruire tali schemi osservando più blocchi insieme per valutare tale fenomeno di scala . Ad esempio, come approccio di base, chiedi se avrei avuto blocchi 16x16 o blocchi di dimensioni 32x32, quali sarebbero stati gli schemi risultanti nei coefficienti? I coefficienti nelle rispettive posizioni avranno qualche relazione da sfruttare e consentiranno di scoprire la vera scala della trama.

Questo è davvero un buon argomento di ricerca da perseguire.

NOTA: anche MPEG7 (che è molto vicino ai comitati che hanno creato MPEG) - propongono funzionalità basate su Gabor per la trama piuttosto che basate su DCT.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.