# Descriptor de la distribución del color

El Descriptor de la Distribución del Color (DDC) está diseñado para capturar la distribución espacial del color en una imagen. El proceso de extracción de las características se compone de dos partes; la rejilla basada en la selección del color más representativo y la Transformada Discreta del Coseno mediante su cuantización.
El color es la característica más básica del contenido visual, por lo tanto, es posible utilizar colores para describir y representar una imagen. El estándar MPEG-7 ha testeado el procedimiento más eficaz para describir el color y ha seleccionado los que han dado los mejores resultados. Este estándar propone distintos métodos para obtener los descriptores, y una de las herramientas definidas para describir el color es el DDC, que permite describir la relación de color entre secuencias o grupo de imágenes.
El DDC captura la disposición espacial de los colores más representativos de una rejilla superpuesta en una región o una imagen. La representación se basa en los coeficientes de la DCT. Este es un descriptor muy compacto, altamente eficiente en la navegación y rápido en las aplicaciones de búsqueda. Se puede aplicar tanto en las imágenes fijas cómo en los fragmentos de vídeo.

## Definición

El DDC es una representación del color de resolución invariante y muy compacta, que permite la recuperación de imágenes con alta velocidad y que ha sido diseñado para representar de manera eficaz la distribución espacial de los colores. Esta característica se puede utilizar en gran variedad de recuperaciones basándose en su similitud, en el filtrado del contenido y en su visualización. Es especialmente útil para aplicaciones espaciales de recuperación basadas en estructuras. Este descriptor se obtiene aplicando la transformada discreta del coseno (DCT) en una matriz 2D con la representación local de los colores en Y o Cb, o Cr del espacio de color. Las funcionalidades del DDC son básicamente las siguientes:
* Comparación de imagen a imagen.
* Comparación de videoclip a videoclip.
El DDC es uno de los descriptores de color más rápido y preciso.

## Extracción

El proceso de extracción de este descriptor de color consta de cuatro etapas:
* División de la imagen.
* Selección del color más representativo.
* Transformada DCT.
* Exploración en zig-zag.
El estándar MPEG-7 recomienda el uso del espacio de color YCbCr en el DDC. Si usted lo necesita, puede convertir el espacio de color mediante estas fórmulas.

### División de la imagen

En la fase de división, la imagen de entrada (en el espacio RGB de color) se divide en 64 bloques para garantizar la invariabilidad de la resolución o su escalado.
Las entradas y salidas de este paso se resumen en la siguiente tabla:
| Entrada etapa 1 | Salida etapa 1 |
| Entrada de una imagen [M x N] | Imagen de entrada dividida en 64 bloques [M/8xN/8] |

### Selección del color más representativo

Después de la etapa de división de la imagen, se selecciona un único color como representante de cada bloque. Se puede utilizar cualquier método para seleccionar el color más representativo, pero el estándar recomienda el uso de la media de los colores de los píxeles en un mismo bloque como muestra de color más representativo, ya que el proceso es más simple y la exactitud de la descripción, en general, es suficiente.
Los resultados de la selección se guardan en una pequeña imagen icono de tamaño 8x8. La siguiente figura muestra este proceso. Fíjense que en la imagen de la figura se ha mantenido la resolución de la imagen original con el fin de facilitar su representación.
Las entradas y salidas de esta etapa se resumen en la siguiente tabla:
| Entrada etapa 2 | Salida etapa 2 |
| Imagen de entrada dividida en 64 bloques [M/8xN/8] | Imagen icono [8x8] |
Una vez se obtiene el icono de la imagen se aplica la conversión del espacio de color entre RGB y YCbCr.
| Entrada etapa 3 | Salida etapa 3 |
| Imagen icono [8x8] en el espacio de color RGB | Imagen icono [8x8] en el espacio de color YCbCr |

### Transformada DCT

    ${\begin{array}{l}B_{pq}=\alpha _{p}\alpha _{q}\sum _{m=0}^{M-1}\sum _{n=0}^{N-1}A_{mn}\cos {\frac {\pi (2m+1)p}{2M}}\cos {\frac {\pi (2n+1)q}{2N}},\qquad 0\leq p\leq M-1,\;0\leq q\leq N-1\\\alpha _{p}={\begin{cases}{\frac {1}{\sqrt {M}}},&p=0\\{\sqrt {\frac {2}{M}}},&1\leq p\leq M-1\end{cases}}\qquad \alpha _{q}={\begin{cases}{\frac {1}{\sqrt {N}}},&q=0\\{\sqrt {\frac {2}{N}}},&1\leq q\leq N-1\end{cases}}\end{array}}$
    Fórmula para calcular la DCT en una matriz 2D
En la cuarta etapa, la luminancia (Y) y la crominancia azul y rojo (Cb y Cr) son transformados en 8x8 DCT, por lo que se obtienen tres grupos de 64 coeficientes DCT. Para calcular la DCT en una matriz 2D utilizamos la fórmula que se observa en la imagen.
Las entradas y salidas de esta fase se resumen en la siguiente tabla:
| Entrada etapa 4 | Salida etapa 4 |
| Imagen icono [8x8] en el espacio de color YCbCr | 3 matrices [8x8] de 64 coeficientes (DCTY, DCTCb, DCTCr) |

### Exploración en zig-zag

La exploración en zig-zag se realiza con los tres grupos de 64 coeficientes DCT, siguiendo el esquema presentado en la figura. El objetivo de la exploración en zig-zag son los coeficientes de baja frecuencia de la matriz de 8x8.
Las entradas y salidas de esta fase se resumen en la siguiente tabla:
| Entrada etapa 5 | Salida etapa 5 |
| 3 matrices [8x8] de 64 coeficientes (DCTY, DCTCb, DCTCr) | 3 exploraciones en zig-zag de la matriz (DY, DCB, DCR) |
Finalmente, se obtienen este conjunto de tres matrices que corresponden a los DDC de la imagen de entrada.

## Comparación

Este proceso ayuda a evaluar si dos elementos son iguales entre ellos, y si los comparamos, también podremos calcular su distancia. En el caso de los descriptores de color el proceso de correspondencia ayuda a evaluar si dos imágenes son similares. Su procedimiento es el siguiente:
* Dada una imagen de entrada la aplicación intenta encontrar otra imagen con un descriptor similar en una base de datos.
Si se consideran dos DDC:
* {DY, DCB, DCR}
* {DY ", DCB", DCR "},
La distancia entre los dos descriptores se puede calcular como: $D={\sqrt {\sum _{i}w_{yi}(DY_{i}-DY_{i}')^{2}}}+{\sqrt {\sum _{i}w_{bi}(DCb_{i}-DCb_{i}')^{2}}}+{\sqrt {\sum _{i}w_{ri}(DCr_{i}-DCr_{i}')^{2}}}$
El subíndice i representa el orden de detección del zig-zag de los coeficientes. Además, fíjese que se puede utilizar el peso de los coeficientes (w) con el fin de ajustar el rendimiento del proceso del emparejamiento. Estos pesos dan más importancia a unos componentes del descriptor en más que otros. Observando la fórmula, se puede extraer que:
* 2 imágenes son idénticas si la distancia es 0.
* 2 imágenes son similares si la distancia es cercana a 0.
Por lo tanto, este proceso de emparejamiento permitirá identificar imágenes similares mediante los descriptores de color. La complejidad del proceso para encontrar coincidencias es baja, y con este método se pueden alcanzar búsquedas de alta velocidad.

## Aplicación

Nuestro objetivo es encontrar imágenes con colores similares, por lo tanto, tenemos que extraer el DDC de estas imágenes y luego comparar estos datos descriptivos con la técnica del emparejamiento. En consecuencia, podemos definir dos partes principales en la aplicación de este método:
* Generar una base de datos de imágenes para obtener sus DDC.
* Buscar similitudes entre una imagen de entrada dada y la base de datos procesada.
La siguiente figura muestra el proceso de análisis de una base de datos:
En este proceso se analiza una base de datos de imágenes con el fin de obtener los DDC que las representan. Este proceso consiste en cargar una imagen en memoria y calcular su descriptor DDC como ya se ha explicado en la sección anterior. El resultado final es una base de datos de los DDC vinculados a las imágenes que se quieren representar.
Una vez que la base de datos de imágenes se ha analizado, se lleva a cabo la comparación entre una imagen de entrada y la base de datos de los DDC. Con este proceso se obtienen imágenes con colores similares ordenadas de mayor a menor similitud.