Transformada de coseno discreta

Compartir Imprimir Citar
Técnica utilizada en procesamiento de señales y compresión de datos

Una transformada de coseno discreta (DCT) expresa una secuencia finita de puntos de datos en términos de una suma de funciones de coseno que oscilan a diferentes frecuencias. La DCT, propuesta por primera vez por Nasir Ahmed en 1972, es una técnica de transformación ampliamente utilizada en el procesamiento de señales y la compresión de datos. Se utiliza en la mayoría de los medios digitales, incluidas imágenes digitales (como JPEG y HEIF), video digital (como MPEG y H.26x), audio digital (como Dolby Digital, MP3 y AAC), televisión digital (como SDTV, HDTV y VOD), radio digital (como AAC+ y DAB+) y codificación de voz (como AAC-LD, Siren y Opus). Los DCT también son importantes para muchas otras aplicaciones en ciencia e ingeniería, como procesamiento de señales digitales, dispositivos de telecomunicaciones, reducción del uso del ancho de banda de la red y métodos espectrales para la solución numérica de ecuaciones diferenciales parciales.

El uso de funciones de coseno en lugar de funciones de seno es fundamental para la compresión, ya que se necesitan menos funciones de coseno para aproximar una señal típica, mientras que para las ecuaciones diferenciales los cosenos expresan una elección particular de condiciones de contorno. En particular, una DCT es una transformada relacionada con Fourier similar a la transformada discreta de Fourier (DFT), pero que utiliza solo números reales. Los DCT generalmente están relacionados con los coeficientes de la serie de Fourier de una secuencia extendida periódicamente y simétricamente, mientras que los DFT están relacionados con los coeficientes de la serie de Fourier de solo secuencias extendidas periódicamente. Las DCT son equivalentes a las DFT de aproximadamente el doble de longitud, y funcionan con datos reales con simetría uniforme (ya que la transformada de Fourier de una función real e incluso es real e incluso), mientras que en algunas variantes los datos de entrada o salida se desplazan media muestra.. Hay ocho variantes DCT estándar, de las cuales cuatro son comunes.

La variante más común de la transformada de coseno discreta es la DCT de tipo II, que a menudo se denomina simplemente "DCT". Este fue el DCT original propuesto por primera vez por Ahmed. Su inversa, la DCT de tipo III, a menudo se denomina simplemente "la DCT inversa" o "el IDCT". Dos transformadas relacionadas son la transformada de seno discreta (DST), que es equivalente a una DFT de funciones reales e impares, y la transformada de coseno discreta modificada (MDCT), que se basa en una DCT de superpuestos. Los DCT multidimensionales (MD DCT) se desarrollan para extender el concepto de DCT a las señales MD. Hay varios algoritmos para calcular MD DCT. Se ha desarrollado una variedad de algoritmos rápidos para reducir la complejidad computacional de implementar DCT. Uno de ellos es el entero DCT (IntDCT), una aproximación de enteros del estándar DCT, utilizado en varios estándares internacionales ISO/IEC e ITU-T.

La compresión DCT, también conocida como compresión de bloques, comprime datos en conjuntos de bloques DCT discretos. Los bloques DCT pueden tener varios tamaños, incluidos 8x8 píxeles para el DCT estándar, y tamaños variados de DCT enteros entre 4x4 y 32x32 píxeles. El DCT tiene una fuerte "compactación de energía" propiedad, capaz de lograr alta calidad a altas tasas de compresión de datos. Sin embargo, pueden aparecer artefactos de compresión en bloques cuando se aplica una compresión DCT intensa.

Historia

La transformada de coseno discreta (DCT) fue concebida por primera vez por Nasir Ahmed, T. Natarajan y K. R. Rao mientras trabajaban en la Universidad Estatal de Kansas, y propuso el concepto a la Fundación Nacional de Ciencias en 1972. Originalmente pretendía DCT para la compresión de imágenes.. Ahmed desarrolló un algoritmo DCT práctico con sus estudiantes de doctorado T. Raj Natarajan, Wills Dietrich y Jeremy Fries, y su amigo el Dr. K. R. Rao en la Universidad de Texas en Arlington en 1973, y descubrieron que era el algoritmo más eficiente para compresión de imagen Presentaron sus resultados en un artículo de enero de 1974, titulado Discrete Cosine Transform. Describió lo que ahora se llama la DCT tipo II (DCT-II), así como la DCT inversa tipo III (IDCT). Fue una publicación de referencia, y ha sido citada como un avance fundamental en miles de trabajos desde su publicación. El trabajo de investigación básico y los eventos que condujeron al desarrollo de la DCT se resumieron en una publicación posterior de Ahmed, "How I Came Up with the Discrete Cosine Transform".

Desde su introducción en 1974, ha habido una importante investigación sobre la DCT. En 1977, Wen-Hsiung Chen publicó un artículo con C. Harrison Smith y Stanley C. Fralick presentando un algoritmo DCT rápido. Otros desarrollos incluyen un artículo de 1978 de M.J. Narasimha y A.M. Peterson y un artículo de 1984 de B.G. Sotavento. Estos trabajos de investigación, junto con el artículo original de Ahmed de 1974 y el artículo de Chen de 1977, fueron citados por el Grupo Conjunto de Expertos Fotográficos como la base del algoritmo de compresión de imágenes con pérdida de JPEG en 1992.

En 1975, John A. Roese y Guner S. Robinson adaptaron la DCT para la codificación de video con compensación de movimiento entre cuadros. Experimentaron con la DCT y la transformada rápida de Fourier (FFT), desarrollaron codificadores híbridos entre fotogramas para ambas y descubrieron que la DCT es la más eficiente debido a su complejidad reducida, capaz de comprimir datos de imagen hasta 0,25 bits por píxel. para una escena de videoteléfono con una calidad de imagen comparable a la de un codificador intracuadro que requiere 2 bits por píxel. En 1979, Anil K. Jain y Jaswant R. Jain desarrollaron aún más la compresión de video DCT con compensación de movimiento, también llamada compensación de movimiento en bloque. Esto llevó a Chen a desarrollar un algoritmo práctico de compresión de video, llamado DCT con compensación de movimiento o codificación de escena adaptativa, en 1981. La DCT con compensación de movimiento se convirtió más tarde en la técnica de codificación estándar para la compresión de video desde finales de la década de 1980 en adelante.

La DCT entera se usa en la codificación de video avanzada (AVC), presentada en 2003, y la codificación de video de alta eficiencia (HEVC), presentada en 2013. La DCT entera también se usa en el formato de imagen de alta eficiencia (HEIF), que utiliza un subconjunto del formato de codificación de video HEVC para codificar imágenes fijas.

Una variante DCT, la transformada de coseno discreta modificada (MDCT), fue desarrollada por John P. Princen, A.W. Johnson y Alan B. Bradley en la Universidad de Surrey en 1987, siguiendo el trabajo anterior de Princen y Bradley en 1986. La MDCT se usa en la mayoría de los formatos de compresión de audio modernos, como Dolby Digital (AC-3), MP3 (que usa un algoritmo híbrido DCT-FFT), codificación de audio avanzada (AAC) y Vorbis (Ogg).

La transformada sinusoidal discreta (DST) se derivó de la DCT, reemplazando la condición de Neumann en x=0 con una condición de Dirichlet. El horario de verano fue descrito en el documento DCT de 1974 por Ahmed, Natarajan y Rao. Posteriormente, Anil K. Jain describió una DST de tipo I (DST-I) en 1976, y H.B. Kekra y J. K. Solanka en 1978.

Nasir Ahmed también desarrolló un algoritmo DCT sin pérdidas con Giridhar Mandyam y Neeraj Magotra en la Universidad de Nuevo México en 1995. Esto permite utilizar la técnica DCT para la compresión de imágenes sin pérdidas. Es una modificación del algoritmo DCT original e incorpora elementos de DCT inversa y modulación delta. Es un algoritmo de compresión sin pérdidas más eficaz que la codificación de entropía. DCT sin pérdidas también se conoce como LDCT.

Aplicaciones

La DCT es la técnica de transformación más utilizada en el procesamiento de señales y, con diferencia, la transformada lineal más utilizada en la compresión de datos. Los medios digitales sin comprimir, así como la compresión sin pérdidas, tenían requisitos de ancho de banda y memoria poco prácticos, que se redujeron significativamente con la técnica de compresión con pérdidas DCT altamente eficiente, capaz de lograr relaciones de compresión de datos de 8: 1 a 14: 1 para una calidad cercana al estudio. hasta 100:1 para contenido de calidad aceptable. Los estándares de compresión DCT se utilizan en tecnologías de medios digitales, como imágenes digitales, fotos digitales, video digital, transmisión de medios, televisión digital, transmisión de televisión, video a pedido (VOD), cine digital, video de alta definición (video HD) y televisión de alta definición (HDTV).

La DCT, y en particular la DCT-II, se usa a menudo en el procesamiento de señales e imágenes, especialmente para la compresión con pérdida, porque tiene una fuerte "compactación de energía" propiedad: en aplicaciones típicas, la mayor parte de la información de la señal tiende a concentrarse en unos pocos componentes de baja frecuencia del DCT. Para procesos de Markov fuertemente correlacionados, la DCT puede aproximarse a la eficiencia de compactación de la transformada de Karhunen-Loève (que es óptima en el sentido de descorrelación). Como se explica a continuación, esto se deriva de las condiciones de contorno implícitas en las funciones coseno.

Las DCT también se emplean ampliamente para resolver ecuaciones diferenciales parciales mediante métodos espectrales, donde las diferentes variantes de la DCT corresponden a condiciones de contorno pares/impares ligeramente diferentes en los dos extremos de la matriz.

Los DCT también están estrechamente relacionados con los polinomios de Chebyshev, y los algoritmos rápidos de DCT (a continuación) se utilizan en la aproximación de Chebyshev de funciones arbitrarias mediante series de polinomios de Chebyshev, por ejemplo, en cuadratura de Clenshaw-Curtis.

El DCT es el estándar de codificación para dispositivos de telecomunicaciones multimedia. Es ampliamente utilizado para la reducción de la tasa de bits y la reducción del uso del ancho de banda de la red. La compresión DCT reduce significativamente la cantidad de memoria y ancho de banda necesarios para las señales digitales.

Aplicaciones generales

La DCT se usa ampliamente en muchas aplicaciones, entre las que se incluyen las siguientes.

  • Procesamiento de señal de audio — codificación de audio, compresión de datos de audio (pérdida y sin pérdida), sonido envolvente, eco acústico y cancelación de retroalimentación, reconocimiento de fonemas, cancelación de tiempo (TDAC)
    • Audio digital
    • Radio digital — Radiodifusión digital de audio (DAB+), radio HD
    • Procesamiento de discursos: reconocimiento de voz, detección de actividad de voz (VAD)
    • Telefonía digital — voz sobre IP (VoIP), telefonía móvil, videofonía, teleconferencia, videoconferencia
  • Biometría: orientación de huellas dactilares, sistemas de reconocimiento facial, observación biométrica de agua, marcación biométrica basada en huellas dactilares, identificación/reconocimiento de huellas dactilares
    • Detección facial - reconocimiento facial
  • Computadoras y Internet — la World Wide Web, redes sociales, vídeo en Internet
    • Red de ancho de banda reducation
  • Electrónica de consumo — sistemas multimedia, dispositivos multimedia de telecomunicaciones, dispositivos de consumo
  • Cryptography — encryption, steganography, copyright protection
  • Compresión de datos — transformación de codificación, compresión perdida, compresión sin pérdidas
    • Operaciones de codificación: cuantificación, ponderación perceptual, codificación de entropía, codificación variable
  • Medios digitales: distribución digital
    • Streaming media — streaming de audio, streaming de vídeo, streaming de televisión, vídeo a demanda (VOD)
  • Detección de falsificación
  • Electromagnética geofísica transitoria (transiente EM)
  • Imágenes — identificación del artista, enfoque y medida de borrosa, extracción de características
    • Formato de color — formato de luminancia y diferencias de color, formatos de color (como YUV444 y YUV411), operaciones de decodificación como la operación inversa entre los formatos de color de visualización (YIQ, YUV, RGB)
    • Imágenes digitales — imágenes digitales, cámaras digitales, fotografía digital, imágenes de alto rango dinamico (imagen HDR)
    • compresión de imagen — formatos de archivo de imagen, compresión de imagen multivista, transmisión de imagen progresiva
    • Procesamiento de imágenes — procesamiento digital de imágenes, análisis de imágenes, recuperación de imágenes basadas en contenidos, detección de esquinas, representación de imagen en bloques direccionales, detección de bordes, mejora de imagen, fusión de imagen, segmentación de imágenes, estimación del nivel de ruido de imagen, especiado, rotación, perfil de distorsión (JND) justamente notable, efectos de enmascaramiento espatiotemporal, imágenes forzadas
    • Evaluación de la calidad de imagen — métrica de degradación de la calidad basada en el DCT (MDC)
    • Reconstrucción de imágenes — texturas direccionales inspección de automóviles, restauración de imágenes, pintura, recuperación visual
  • Tecnología médica
    • Electrocardiografía (ECG) — vectorcardiografía (VCG)
    • Imágenes médicas — compresión de imagen médica, fusión de imagen, observación de agua, clasificación de compresión del tumor cerebral
  • Reconocimiento del patrón
  • Región de interés (ROI) extracción
  • Procesamiento de señales — procesamiento digital de señales, procesadores digitales de señalización (DSP), software DSP, multiplexación, señalización, señales de control, conversión analógica a digital (ADC), muestreo compresivo, ocultamiento de errores de pirámide DCT, muestreo, aumento de muestreo, relación de señal a ruido (SNR), estimación, transmux, filtro Wiener
    • Análisis de características de cepstrum complejo
    • Filtro DCT
  • Vigilancia
  • Cámara de caja negra Vehicular
  • Video
    • Cine digital — cinematografía digital, cámaras de cine digitales, edición de vídeo, edición de películas, Dolby Digital audio
    • Televisión digital (DTV) — radiodifusión digital de televisión, televisión de definición estándar (SDTV), televisión de alta definición (HDTV), chips de encoder/decodificador HDTV, ultra HDTV (UHDTV)
    • Video digital — disco digital versátil (DVD), video de alta definición (HD)
    • Codificación de vídeo — compresión de vídeo, estándares de codificación de vídeo, estimación de movimiento, compensación de movimiento, predicción entre marcos, vectores de movimiento, codificación de vídeo 3D, modelo de probabilidad de detección de distorsión local (LDDP), detección de objetos móviles, codificación de vídeo multivisual (MVC)
    • Procesamiento de vídeo — análisis de movimiento, análisis de movimiento 3D-DCT, análisis de contenido de vídeo, extracción de datos, navegación por vídeo, producción de vídeo profesional
  • Observación de agua: marcación de agua digital, observación de imágenes, observación de vídeo, observación de vídeo 3D, ocultamiento de datos reversibles, detección de marcas de agua
  • Tecnología inalámbrica
    • Dispositivos móviles — teléfonos móviles, teléfonos inteligentes, videofonos
    • Tecnología de radiofrecuencia (RF) — ingeniería RF, arrays de apertura, sistemas de rayos, circuitos aritméticos digitales, detección direccional, imagen espacial
  • Red de sensores inalámbricos (WSN) — redes inalámbricas de sensores acústicos

Estándares de medios visuales DCT

El DCT-II, también conocido como simplemente el DCT, es la técnica de compresión de imagen más importante. Se utiliza en estándares de compresión de imágenes como JPEG, y estándares de compresión de vídeo como H.26x, MJPEG, MPEG, DV, Theora y Daala. Allí, el DCT-II bidimensional de N× × N{displaystyle Ntimes N} bloques son computados y los resultados son cuantitativos y entropía codificados. En este caso, N{displaystyle N} es típicamente 8 y la fórmula DCT-II se aplica a cada fila y columna del bloque. El resultado es una matriz de coeficiente de 8 × 8 en la que el ()0,0){displaystyle (0,0)} El elemento (top-left) es el componente DC (frecuencia cero) y las entradas con valores de índice vertical y horizontal creciente representan frecuencias espaciales verticales y horizontales superiores.

La codificación de video avanzada (AVC) utiliza el entero DCT (IntDCT), una aproximación entera del DCT. Utiliza bloques DCT enteros de 4x4 y 8x8. La codificación de video de alta eficiencia (HEVC) y el formato de imagen de alta eficiencia (HEIF) utilizan tamaños de bloque DCT enteros variados entre 4x4 y 32x32 píxeles. A partir de 2019, AVC es, con mucho, el formato más utilizado para la grabación, compresión y distribución de contenido de video, utilizado por el 91% de los desarrolladores de video, seguido de HEVC, que es utilizado por el 43% de los desarrolladores.

Formatos de imagen

Nivel de compresión de imagenAñoAplicaciones comunes
JPEG1992El estándar de compresión de imagen más utilizado y el formato de imagen digital,
JPEG XR2009Especificación de papel XML abierto
WebP2010Un formato gráfico que soporta la compresión perdida de imágenes digitales. Desarrollado por Google.
Formato de imagen de alta eficiencia (HEIF)2013Formato de archivo de imagen basado en la compresión HEVC. Mejora la compresión sobre JPEG y soporta la animación con una compresión mucho más eficiente que el formato GIF animado.
BPG2014Basado en compresión HEVC
JPEG XL2020Un formato de archivo raster-graphics libre de regalías que soporta tanto la compresión perdida como la perdida.

Formatos de vídeo

Estándar de codificación de vídeoAñoAplicaciones comunes
H.2611988Primero una familia de estándares de codificación de vídeo. Utilizado principalmente en videoconferencias antiguas y productos de videofono.
Motion JPEG (MJPEG)1992QuickTime, edición de vídeo, edición no lineal, cámaras digitales
MPEG-1 Video1993Distribución digital de vídeo en vídeo CD o Internet
MPEG-2 Video (H.262)1995Almacenamiento y manejo de imágenes digitales en aplicaciones de transmisión, televisión digital, HDTV, cable, satélite, Internet de alta velocidad, distribución de vídeo DVD
DV1995Camcorders, casetes digitales
H.263 (MPEG-4 Parte 2)1996Telefonía de vídeo sobre red telefónica conmutada pública (PSTN), H.320, Red Digital de Servicios Integrados (ISDN)
Codificación avanzada de vídeo (AVC / H.264 / MPEG-4)2003El formato más común de grabación/compresión/distribución de vídeo HD, vídeo de Internet, YouTube, Blu-ray Discs, transmisiones HDTV, navegadores web, televisión de streaming, dispositivos móviles, dispositivos de consumo, Netflix, telefonía de vídeo, FaceTime
Theora2004Internet vídeo, navegadores web
VC-12006Windows Media, Blu-ray Discs
Apple ProRes2007Producción de video profesional.
WebM Video2010Un formato de código abierto multimedia desarrollado por Google destinado a ser utilizado con HTML5.
Codificación de vídeo de alta eficiencia (HEVC / H.265)2013El sucesor emergente de la norma H.264/MPEG-4 AVC, habiendo mejorado sustancialmente la capacidad de compresión.
Daala2013Formato de vídeo de investigación por Xiph.org.
AV12018Un formato de código abierto basado en VP10 (el sucesor interno de VP9), Daala y Thor; utilizado por proveedores de contenidos como YouTube y Netflix.

Estándares de audio MDCT

Audio general

Nivel de compresión de audioAño Aplicaciones comunes
Dolby Digital (AC-3) 1991 Cine, cine digital, DVD, Blu-ray, streaming de medios, videojuegos
Adaptive Transform Acoustic Coding (ATRAC) 1992 MiniDisc
MPEG Layer III (MP3) 1993 Distribución digital de audio, reproductores MP3, reproductores de medios portátiles, streaming de medios
Código de audio perceptual (PAC) 1996 Servicio de radio de audio digital (DARS)
Codificación de audio avanzada (AAC / MP4 Audio) 1997 Distribución digital de audio, reproductores de medios portátiles, streaming de medios, consolas de juegos, dispositivos móviles, iOS, iTunes, Android, BlackBerry
Codificación de audio avanzada de alta eficiencia (AAC+) 1997 Radio digital, radiodifusión digital de audio (DAB+), Digital Radio Mondiale (DRM)
Cook Codec 1998 RealAudio
Windows Media Audio (WMA) 1999 Windows Media
Vorbis 2000 Digital audio distribution, radio stations, streaming media, videojuegos, Spotify, Wikipedia
Codificación de alta definición (HDC) 2002 Radio digital, radio HD
Adaptación de Resolución Dinámica (DRA) 2008 China estándar nacional de audio, China Multimedia Radiodifusión móvil, DVB-H
Opus 2012 VoIP, telefonía móvil, WhatsApp, PlayStation 4
Dolby AC-4 2017 ATSC 3.0, televisión de alta definición (TV UHD)
MPEG-H 3D Audio

Codificación del habla

Nivel de codificación del hablaAño Aplicaciones comunes
AAC-LD (LD-MDCT) 1999 Telefonía móvil, voz sobre IP (VoIP), iOS, FaceTime
Siren 1999 VoIP, audio de banda ancha, G.722.1
G.722.1 1999 VoIP, audio de banda ancha, G.722
G.729.1 2006 G.729, VoIP, audio de banda ancha, telefonía móvil
EVRC-WB 2007 audio de banda ancha
G.718 2008 VoIP, audio de banda ancha, telefonía móvil
G.719 2008 Teleconferencias, videoconferencias, correo de voz
CELT 2011 VoIP, telefonía móvil
Servicios de voz mejorados (EVS) 2014 Telefonía móvil, VoIP, audio de banda ancha

MD DCT

Los DCT multidimensionales (MD DCT) tienen varias aplicaciones, principalmente DCT 3D como el 3-D DCT-II, que tiene varias aplicaciones nuevas como sistemas de codificación de imágenes hiperespectrales, codificación DCT 3D de longitud temporal variable, codificación de video algoritmos, codificación de video adaptable y compresión 3-D. Debido a la mejora en el hardware, el software y la introducción de varios algoritmos rápidos, la necesidad de usar M-D DCT está aumentando rápidamente. DCT-IV ha ganado popularidad por sus aplicaciones en la implementación rápida de bancos de filtrado polifásicos de valor real, transformadas ortogonales superpuestas y bases de ondículas moduladas en coseno.

Procesamiento de señales digitales

DCT juega un papel muy importante en el procesamiento de señales digitales. Mediante el uso de la DCT, las señales se pueden comprimir. DCT se puede utilizar en electrocardiografía para la compresión de señales de ECG. DCT2 proporciona una mejor relación de compresión que DCT.

La DCT está ampliamente implementada en procesadores de señales digitales (DSP), así como en software de procesamiento de señales digitales. Muchas empresas han desarrollado DSP basados en tecnología DCT. Los DCT se utilizan ampliamente para aplicaciones como codificación, decodificación, video, audio, multiplexación, señales de control, señalización y conversión de analógico a digital. Los DCT también se utilizan comúnmente para chips codificadores/descodificadores de televisión de alta definición (HDTV).

Artefactos de compresión

Un problema común con la compresión DCT en medios digitales son los artefactos de compresión en bloques, causados por bloques DCT. El algoritmo DCT puede causar artefactos basados en bloques cuando se aplica una compresión intensa. Debido a que la DCT se usa en la mayoría de los estándares de codificación de imágenes y videos digitales (como los formatos JPEG, H.26x y MPEG), los artefactos de compresión de bloques basados en DCT están muy extendidos en los medios digitales. En un algoritmo DCT, una imagen (o cuadro en una secuencia de imágenes) se divide en bloques cuadrados que se procesan independientemente unos de otros, luego se toma la DCT de estos bloques y se cuantifican los coeficientes DCT resultantes. Este proceso puede causar artefactos de bloqueo, principalmente en índices de compresión de datos altos. Esto también puede causar el "ruido de mosquito" efecto, comúnmente encontrado en video digital (como los formatos MPEG).

Los bloques DCT se usan a menudo en el arte de los glitches. La artista Rosa Menkman utiliza artefactos de compresión basados en DCT en su arte glitch, en particular los bloques DCT que se encuentran en la mayoría de los formatos de medios digitales, como imágenes digitales JPEG y audio digital MP3. Otro ejemplo es Jpegs del fotógrafo alemán Thomas Ruff, que utiliza artefactos JPEG intencionales como base del estilo de la imagen.

Resumen informal

Al igual que cualquier transformada relacionada con Fourier, las transformadas de coseno discretas (DCT) expresan una función o una señal en términos de una suma de sinusoides con diferentes frecuencias y amplitudes. Al igual que la transformada discreta de Fourier (DFT), una DCT opera en una función en un número finito de puntos de datos discretos. La distinción obvia entre una DCT y una DFT es que la primera usa solo funciones de coseno, mientras que la segunda usa tanto cosenos como senos (en forma de exponenciales complejas). Sin embargo, esta diferencia visible es simplemente una consecuencia de una distinción más profunda: una DCT implica diferentes condiciones de contorno de la DFT u otras transformaciones relacionadas.

Las transformaciones relacionadas con Fourier que operan en una función sobre un dominio finito, como el DFT o DCT o una serie Fourier, se pueden considerar como una definición implícita de un extensión de esa función fuera del dominio. Es decir, una vez que escribes una función f()x){displaystyle f(x)} como una suma de sinusoides, usted puede evaluar esa suma en cualquier x{displaystyle x}, incluso para x{displaystyle x} donde el original f()x){displaystyle f(x)} no fue especificado. El DFT, como la serie Fourier, implica una extensión periódica de la función original. Un DCT, como una transformación cosina, implica una extensión uniforme de la función original.

Ilustración de las extensiones implícitas de datos de entrada del DCT, incluso/odd, para N=11 puntos de datos (puntos rojos), para los cuatro tipos más comunes de DCT (tipos I-IV). Observe las diferencias sutiles en las interfaces entre los datos y las extensiones: en DCT-II y DCT-IV ambos puntos finales se reproducen en las extensiones pero no en DCT-I o DCT-III (y se inserta un punto cero en la extensión de inversión de signos en DCT-III).

Sin embargo, debido a que los DCT operan en secuencias finitas, discretas, surgen dos problemas que no se aplican a la transformada de coseno continua. Primero, uno tiene que especificar si la función es par o impar en ambos los límites izquierdo y derecho del dominio (es decir, el min-n y max-n límites en las definiciones a continuación, respectivamente). En segundo lugar, uno tiene que especificar alrededor de en qué punto la función es par o impar. En particular, considere una secuencia abcd de cuatro puntos de datos equidistantes y digamos que especificamos un límite par izquierdo. Hay dos posibilidades sensatas: los datos son pares sobre la muestra a, en cuyo caso la extensión par es dcbabcd, o los datos son pares sobre el punto a medio camino entre a y el punto anterior, en cuyo caso la extensión par es dcbaabcd (se repite a).

Estas opciones conducen a todas las variaciones estándar de las DCT y también a las transformadas sinusoidales discretas (DST). Cada límite puede ser par o impar (2 opciones por límite) y puede ser simétrico con respecto a un punto de datos o al punto medio entre dos puntos de datos (2 opciones por límite), para un total de 2 × 2 × 2 × 2 = 16 posibilidades. La mitad de estas posibilidades, aquellas donde el límite izquierdo es par, corresponden a los 8 tipos de DCT; la otra mitad son los 8 tipos de DST.

Estas diferentes condiciones de contorno afectan fuertemente las aplicaciones de la transformada y conducen a propiedades útiles únicas para los distintos tipos de DCT. Más directamente, cuando se utilizan transformadas relacionadas con Fourier para resolver ecuaciones diferenciales parciales mediante métodos espectrales, las condiciones de contorno se especifican directamente como parte del problema que se está resolviendo. O, para la MDCT (basada en la DCT tipo IV), las condiciones de contorno están íntimamente involucradas en la propiedad crítica de la MDCT de cancelación de aliasing en el dominio del tiempo. De una manera más sutil, las condiciones de contorno son responsables de la "compactación de energía" Propiedades que hacen que las DCT sean útiles para la compresión de imágenes y audio, porque los límites afectan la tasa de convergencia de cualquier serie similar a Fourier.

En particular, es bien sabido que cualquier discontinuidad en una función reduce la tasa de convergencia de la serie de Fourier, por lo que se necesitan más sinusoides para representar la función con una precisión determinada. El mismo principio rige la utilidad de la DFT y otras transformadas para la compresión de señales; cuanto más suave es una función, menos términos en su DFT o DCT se requieren para representarla con precisión, y más se puede comprimir. (Aquí, pensamos en la DFT o DCT como aproximaciones para la serie de Fourier o la serie coseno de una función, respectivamente, para hablar sobre su "suavidad".) Sin embargo, la periodicidad implícita de la DFT significa que las discontinuidades generalmente ocurren en los límites: es poco probable que cualquier segmento aleatorio de una señal tenga el mismo valor en los límites izquierdo y derecho. (Surge un problema similar para la DST, en la que la condición de límite izquierdo impar implica una discontinuidad para cualquier función que no sea cero en ese límite). En contraste, una DCT donde ambos límites son incluso siempre produce una extensión continua en los límites (aunque la pendiente es generalmente discontinua). Esta es la razón por la cual las DCT y, en particular, las DCT de los tipos I, II, V y VI (los tipos que tienen dos límites pares) generalmente funcionan mejor para la compresión de señales que las DFT y las DST. En la práctica, generalmente se prefiere un DCT de tipo II para tales aplicaciones, en parte por razones de conveniencia computacional.

Definición formal

Formally, la discreta transformación cosina es una función lineal, invertible f:RN→ → RN{displaystyle f:mathbb {R} {N}to mathbb {R} (donde) R{displaystyle mathbb {R} denota el conjunto de números reales), o equivalentemente un invertible N × N Matriz cuadrada. Hay varias variantes del DCT con definiciones ligeramente modificadas. El N números reales x0,...... xN− − 1{displaystyle ~x_{0},ldots x_{N-1}~} se transforman en N números reales X0,...... ,XN− − 1{displaystyle X_{0},,ldots,X_{N-1} según una de las fórmulas:

En Hungría, el Día de la Madre se celebra el primer domingo de mayo. Fue celebrado por primera vez en 1925 por la Juventud de la Cruz Roja Húngara.

Xk=12()x0+()− − 1)kxN− − 1)+.. n=1N− − 2xn#⁡ ⁡ [π π N− − 1nk]parak=0,...... N− − 1.{displaystyle X_{k}={2}(x_{0}+(-1)^{k}x_{N-1})+sum ¿Qué? left[,{frac {pi }{,N-1,},n,k,right]qquad {text{ for }~k=0,ldots N-1~}

Algunos autores multiplican aún más x0{displaystyle x_{0} y xN− − 1{displaystyle x_{N-1} términos por 2,{displaystyle {sqrt {2,},} y multiplicar correspondientemente X0{displaystyle X_{0} y XN− − 1{displaystyle X_{N-1} términos por 1/2,{displaystyle 1/{sqrt {2,},} que hace la matriz DCT-I ortogonal, si uno se multiplica por un factor de escala general 2N− − 1,{fnMicrosoft {fnMicroc} - Sí. pero rompe la correspondencia directa con un DFT real.

El DCT-I es exactamente equivalente (hasta un factor de escala general de 2), a un DFT de 2()N− − 1){displaystyle 2(N-1)} números reales con incluso simetría. Por ejemplo, un DCT-I de N=5{displaystyle N=5} números reales abcde{displaystyle a bcc} es exactamente equivalente a un DFT de ocho números reales abcdedcb{displaystyle a bcccccc} (incluso simetría), dividida por dos. (En cambio, los tipos DCT II-IV implican un cambio de medio muestreo en el equivalente DFT.)

Note, however, that the DCT-I is not defined for N{displaystyle N} menos de 2, mientras que todos los demás tipos de DCT se definen para cualquier positivo N.{displaystyle N.

Así, el DCT-I corresponde a las condiciones de límites: xn{displaystyle x_{n} incluso alrededor n=0{displaystyle n=0} e incluso alrededor n=N− − 1{displaystyle n=N-1}; de manera similar Xk.{displaystyle X_{k}

DCT-II

Xk=.. n=0N− − 1xn#⁡ ⁡ [π π N()n+12)k]parak=0,...... N− − 1.{displaystyle X_{k}=sum ¿Por qué?

La DCT-II es probablemente la forma más utilizada y, a menudo, se la conoce simplemente como "la DCT".

Esta transformación es exactamente equivalente (hasta un factor de escala general de 2) a un DFT de 4N{displaystyle 4N} entradas reales de la simetría incluso donde los elementos índices son cero. Es decir, es la mitad del DFT del 4N{displaystyle 4N} insumos Sí.n,{displaystyle Y... Donde Sí.2n=0,{displaystyle Y... Sí.2n+1=xn{displaystyle Y... para <math alttext="{displaystyle 0leq n0≤ ≤ n.N,{displaystyle 0leq n made,}<img alt="{displaystyle 0leq n Sí.2N=0,{displaystyle y_{2N}=0,} y Sí.4N− − n=Sí.n{displaystyle Y... para <math alttext="{displaystyle 0<n0.n.2N.{displaystyle 0 interpretadon2N.}<img alt="{displaystyle 0<n La transformación DCT-II también es posible utilizando 2N señal seguida de una multiplicación por medio turno. Esto lo demuestra Makhoul.

Algunos autores multiplican aún más X0{displaystyle X_{0} por mandato 1/N{displaystyle 1/{sqrt {N,},} y multiplicar el resto de la matriz por un factor de escala general 2/N{\fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {cHFF}fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft}\fnMicrosoft {\fnMicrosoft {fnMicrosoft {fnMicrosoft}\fnMicrosoft}\\\\\fnMicrom}\\\\fnMicrom}\\\fnMicrom}\\\\\\\\\\\\\\\\fnMicrom\\\fnMicrom\fnMicrosoft\fnMicrosoft\\\\\fnMicrom\\\\\\\\\fnMicro {{2}/{N}}} (ver abajo para el cambio correspondiente en DCT-III). Esto hace que la matriz DCT-II ortogonal, pero rompe la correspondencia directa con un DFT real-incluso real de entrada semi-injertada. Esta es la normalización utilizada por Matlab, por ejemplo, véase. En muchas aplicaciones, como JPEG, el escalado es arbitrario porque los factores de escala se pueden combinar con un paso computacional posterior (por ejemplo, el paso de cuantificación en JPEG), y se puede elegir un escalado que permita que el DCT se computa con menos multiplicaciones.

El DCT-II implica las condiciones límite: xn{displaystyle x_{n} incluso alrededor n=− − 1/2{displaystyle No. e incluso alrededor n=N− − 1/2;{displaystyle N=N-1/2;} Xk{displaystyle X_{k} incluso alrededor k=0{displaystyle k=0} y extraño alrededor k=N.{displaystyle k=N.}

DCT-III

Xk=12x0+.. n=1N− − 1xn#⁡ ⁡ [π π N()k+12)n]parak=0,...... N− − 1.{displaystyle X_{k}={tfrac {1}{2}x_{0}+sum ¿Qué? left[,{tfrac {,pi ,} {N}left(k+{tfrac {1}{2}right)n,right]qquad {text{ for }~k=0,ldots N-1~.}

Debido a que es el inverso de DCT-II (hasta un factor de escala, consulte a continuación), esta forma a veces se denomina simplemente "la DCT inversa" ("IDCT").

Algunos autores dividen x0{displaystyle x_{0} por mandato 2{displaystyle {sqrt {2}} en lugar de por 2 (resultando en general x0/2{displaystyle # término) y multiplicar la matriz resultante por un factor de escala general 2/N{fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {cHFF}fnMicrosoft {\fnMicrosoft {fnMicrosoft {fnMicrosoft}\fnMicrosoft {\fnMicrosoft {fnMicrosoft {fnMicrosoft}\fnMicrosoft}\\\\\fnMicrom}\\\fnMicrom}\\\fnMicrom}\\\\\\\\\\\\\\\\\fnMicrom\\fnMicrom\fnMicrosoft\\\\\\\fnMicrosoftfnMicrosoft\\\\\\\\\fn {2/N}} (ver arriba para el cambio correspondiente en el DCT-II), de modo que el DCT-II y DCT-III sean transpuestos unos de otros. Esto hace que la matriz DCT-III ortogonal, pero rompe la correspondencia directa con un DFT real-incluso real de salida semi-injertada.

The DCT-III implies the boundary conditions: xn{displaystyle x_{n} incluso alrededor n=0{displaystyle n=0} y extraño alrededor n=N;{displaystyle N=N;} Xk{displaystyle X_{k} incluso alrededor k=− − 1/2{displaystyle k=-1/2} e incluso alrededor k=N− − 1/2.{displaystyle k=N-1/2.}

DCT-IV

Xk=.. n=0N− − 1xn#⁡ ⁡ [π π N()n+12)()k+12)]parak=0,...... N− − 1.{displaystyle X_{k}=sum ¿Por qué? {1}{2}right),right]qquad {text{ for }k=0, ldots N-1~.}

La matriz DCT-IV se convierte en ortogonal (y por lo tanto, siendo claramente simétrica, su propio inverso) si uno se multiplica por un factor de escala general 2/N.{fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {cHFF}fnMicrosoft {\fnMicrosoft {fnMicrosoft {fnMicrosoft}\fnMicrosoft {\fnMicrosoft {fnMicrosoft {fnMicrosoft}\fnMicrosoft}\\\\\fnMicrom}\\\fnMicrom}\\\fnMicrom}\\\\\\\\\\\\\\\\\fnMicrom\\fnMicrom\fnMicrosoft\\\\\\\fnMicrosoftfnMicrosoft\\\\\\\\\fn {2/N}}

Una variante de la DCT-IV, donde los datos de diferentes transformadas se superponen, se denomina transformada de coseno discreta modificada (MDCT).

El DCT-IV implica las condiciones límite: xn{displaystyle x_{n} incluso alrededor n=− − 1/2{displaystyle No. y extraño alrededor n=N− − 1/2;{displaystyle n=N-1/2;} similarmente para Xk.{displaystyle X_{k}

DCT V-VIII

Los DCT de tipos I–IV tratan ambos límites de manera consistente con respecto al punto de simetría: son pares/impares alrededor de un punto de datos para ambos límites o a mitad de camino entre dos puntos de datos para ambos límites. Por el contrario, las DCT de tipos V-VIII implican límites que son pares/impares alrededor de un punto de datos para un límite y a mitad de camino entre dos puntos de datos para el otro límite.

En otras palabras, los tipos de DCT I–IV equivalen a DFT reales de orden uniforme (sin importar si N{displaystyle N} es incluso o extraño), ya que el DFT correspondiente es de longitud 2()N− − 1){displaystyle 2(N-1)} (para DCT-I) o 4N{displaystyle 4N} (para DCT-II) o 8N{displaystyle 8N} (para DCT-IV). Los cuatro tipos adicionales de transformación cosina discreta corresponden esencialmente a DFT reales de orden lógicamente extraño, que tienen factores de N± ± 1/2{displaystyle Npm {1}/{2} en los denominadores de los argumentos cosinos.

Sin embargo, parece que estas variantes rara vez se usan en la práctica. Una razón, quizás, es que los algoritmos FFT para DFT de longitud impar son generalmente más complicados que los algoritmos FFT para DFT de longitud par (por ejemplo, los algoritmos radix-2 más simples son solo para longitudes pares), y esta mayor complejidad se traslada a las DCT. como se describe abajo.

(El conjunto trivial real-even, una longitud-uno DFT (longitudodd) de un solo número a, corresponde a un DCT-V de longitud N=1.{displaystyle N=1.})

Transformadas inversas

Usando las convenciones de normalización anteriores, el inverso de DCT-I es DCT-I multiplicado por 2/(N − 1). El inverso de DCT-IV es DCT-IV multiplicado por 2/N. El inverso de DCT-II es DCT-III multiplicado por 2/N y viceversa.

Como para el DFT, el factor de normalización frente a estas definiciones de transformación es simplemente una convención y difiere entre tratamientos. Por ejemplo, algunos autores multiplican las transformaciones por 2/N{fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {fnMicrosoft {cHFF}fnMicrosoft {\fnMicrosoft {fnMicrosoft {fnMicrosoft}\fnMicrosoft {\fnMicrosoft {fnMicrosoft {fnMicrosoft}\fnMicrosoft}\\\\\fnMicrom}\\\fnMicrom}\\\fnMicrom}\\\\\\\\\\\\\\\\\fnMicrom\\fnMicrom\fnMicrosoft\\\\\\\fnMicrosoftfnMicrosoft\\\\\\\\\fn {2/N}} para que el inverso no requiera ningún factor multiplicativo adicional. Combinado con factores apropiados 2 (ver arriba), esto se puede utilizar para hacer la matriz transformadora ortogonal.

DCT multidimensionales

Las variantes multidimensionales de los diversos tipos de DCT se derivan directamente de las definiciones unidimensionales: son simplemente un producto separable (equivalente a una composición) de DCT a lo largo de cada dimensión.

MD DCT-II

Por ejemplo, una DCT-II bidimensional de una imagen o una matriz es simplemente la DCT-II unidimensional, desde arriba, realizada a lo largo de las filas y luego a lo largo de las columnas (o viceversa). Es decir, el 2D DCT-II viene dado por la fórmula (omitiendo la normalización y otros factores de escala, como se indicó anteriormente):

Xk1,k2=.. n1=0N1− − 1().. n2=0N2− − 1xn1,n2#⁡ ⁡ [π π N2()n2+12)k2])#⁡ ⁡ [π π N1()n1+12)k1]=.. n1=0N1− − 1.. n2=0N2− − 1xn1,n2#⁡ ⁡ [π π N1()n1+12)k1]#⁡ ⁡ [π π N2()n2+12)k2].{displaystyle {begin{aligned}X_{k_{1},k_{2} {=sum} - ¿Por qué? ¿Por qué? left[{frac ♪ } {N_{2}}} (n_{2}+{frac {1}{2}right)k_{2}right)cos left[{frac {pi) } {N_{1}}} (n_{1}+{frac {1}{2}derecha)k_{1}derecha]\cH00=sum - ¿Por qué? ¿Por qué? left[{frac ♪ } {N_{1}}} (n_{1}+{2}right)k_{1}right)cos left[{frac {pi] } {N_{2}}} (n_{2}+{2}right)k_{2}right].end{aligned}}
El inverso de un DCT multidimensional es sólo un producto separable de los inversos de los DCTs unidimensionales correspondientes (ver arriba), por ejemplo, los inversos unidimensionales aplicados a lo largo de una dimensión a la vez en un algoritmo de columna de fila.

El 3-D DCT-II es solo la extensión del 2-D DCT-II en un espacio tridimensional y matemáticamente se puede calcular mediante la fórmula

Xk1,k2,k3=.. n1=0N1− − 1.. n2=0N2− − 1.. n3=0N3− − 1xn1,n2,n3#⁡ ⁡ [π π N1()n1+12)k1]#⁡ ⁡ [π π N2()n2+12)k2]#⁡ ⁡ [π π N3()n3+12)k3],paraki=0,1,2,...... ,Ni− − 1.{displaystyle X_{k_{1},k_{2},k_{3}=sum - ¿Por qué? - ¿Por qué? ¿Por qué? left[{frac ♪ } {N_{1}}} (n_{1}+{2}right)k_{1}right)cos left[{frac {pi] } {N_{2}}} (n_{2}+{frac {2}right)k_{2}right]cos left[{frac {pi] } {N_{3}}} (n_{3}+{frac {2}right)k_{3}right],quad {text{for }k_{i}=0,1,2,dotsN_{i}-1.}

El inverso de 3-D DCT-II es 3-D DCT-III y se puede calcular a partir de la fórmula dada por

xn1,n2,n3=.. k1=0N1− − 1.. k2=0N2− − 1.. k3=0N3− − 1Xk1,k2,k3#⁡ ⁡ [π π N1()n1+12)k1]#⁡ ⁡ [π π N2()n2+12)k2]#⁡ ⁡ [π π N3()n3+12)k3],parani=0,1,2,...... ,Ni− − 1.{displaystyle x_{n_{1},n_{2},n_{3}=sum - ¿Por qué? - ¿Por qué? ¿Por qué? left[{frac ♪ } {N_{1}}} (n_{1}+{2}right)k_{1}right)cos left[{frac {pi] } {N_{2}}} (n_{2}+{frac {2}right)k_{2}right]cos left[{frac {pi] } {N_{3}}} (n_{3}+{frac {2}right)k_{3}right],quad {text{for }n_{i}=0,1,2,dotsN_{i}-1.}

Técnicamente, calcular una DCT bidimensional, tridimensional (o multi) mediante secuencias de DCT unidimensionales a lo largo de cada dimensión se conoce como algoritmo fila-columna. Sin embargo, al igual que con los algoritmos FFT multidimensionales, existen otros métodos para calcular lo mismo mientras se realizan los cálculos en un orden diferente (es decir, intercalar/combinar los algoritmos para las diferentes dimensiones). Debido al rápido crecimiento de las aplicaciones basadas en 3-D DCT, se están desarrollando varios algoritmos rápidos para el cálculo de 3-D DCT-II. Los algoritmos Vector-Radix se aplican para calcular M-D DCT para reducir la complejidad computacional y aumentar la velocidad computacional. Para calcular 3-D DCT-II de manera eficiente, se desarrolló un algoritmo rápido, el algoritmo Vector-Radix Decimation in Frequency (VR DIF).

DIF 3D DCT-II VR

Para aplicar el algoritmo VR DIF, los datos de entrada deben formularse y reorganizarse de la siguiente manera. Se supone que el tamaño de transformación N × N × N es 2.

Las cuatro etapas básicas de computación 3-D DCT-II utilizando VR DIF Algorithm.
x~ ~ ()n1,n2,n3)=x()2n1,2n2,2n3)x~ ~ ()n1,n2,N− − n3− − 1)=x()2n1,2n2,2n3+1)x~ ~ ()n1,N− − n2− − 1,n3)=x()2n1,2n2+1,2n3)x~ ~ ()n1,N− − n2− − 1,N− − n3− − 1)=x()2n1,2n2+1,2n3+1)x~ ~ ()N− − n1− − 1,n2,n3)=x()2n1+1,2n2,2n3)x~ ~ ()N− − n1− − 1,n2,N− − n3− − 1)=x()2n1+1,2n2,2n3+1)x~ ~ ()N− − n1− − 1,N− − n2− − 1,n3)=x()2n1+1,2n2+1,2n3)x~ ~ ()N− − n1− − 1,N− − n2− − 1,N− − n3− − 1)=x()2n1+1,2n2+1,2n3+1)### {2} {2n_{2}2n_{2}n_}n_} {n_} {n_} {n_} {n_} {n_} {2} {n_}} {n_} {n_}} {n_} {n_}} {n_}} {n_}}}} {n_}} {n_}} {n_n_}n_n_n_n_n_}} {n_} {n_n_n_n_n_n_n_n_n_}} {n_}n_n_} {n_n_} {n_n_n_n_}}n_n_}n____n_n_}n_n_n_n_n_n___n_}n_n_ {2} {2} (2n_{1}+1,2n_{2}+1,2n_{3}{wde {x}(N-n_{1}-1,N-n_{2}-1,N-n_{3}-1)=x(2n_{1}+1,2n_{2}+1,end{array}}}
Donde 0≤ ≤ n1,n2,n3≤ ≤ N2− − 1{displaystyle 0leq No. {fnK} {fn}}}}

La figura al lado muestra las cuatro etapas que están involucradas en calcular DCT-II 3-D utilizando algoritmo VR DIF. La primera etapa es la reordenación 3-D utilizando el mapeo de índice ilustrado por las ecuaciones anteriores. La segunda etapa es el cálculo de mariposas. Cada mariposa calcula ocho puntos juntos como se muestra en la figura justo debajo, donde c()φ φ i)=#⁡ ⁡ ()φ φ i){displaystyle c(varphi _{i})=cos(varphi _{i})}.

El 3-D DCT-II original ahora se puede escribir como

X()k1,k2,k3)=.. n1=1N− − 1.. n2=1N− − 1.. n3=1N− − 1x~ ~ ()n1,n2,n3)#⁡ ⁡ ()φ φ k1)#⁡ ⁡ ()φ φ k2)#⁡ ⁡ ()φ φ k3){displaystyle X(k_{1},k_{2},k_{3}=sum # {n_{1}=1} {N-1}sum # {n_{2}=1} {N-1}sum ¿Por qué?

Donde φ φ i=π π 2N()4Ni+1),yi=1,2,3.{displaystyle varphi _{i}={frac {pi }{2N}(4N_{i}+1),{text{ and }}i=1,2,3}

Si las partes iguales y extrañas k1,k2{displaystyle k_{1},k_{2} y k3{displaystyle K_{3} y se consideran, la fórmula general para el cálculo del DCT-II 3-D puede expresarse como

La única etapa de mariposa del algoritmo VR DIF.
X()k1,k2,k3)=.. n1=1N2− − 1.. n2=1N2− − 1.. n1=1N2− − 1x~ ~ ijl()n1,n2,n3)#⁡ ⁡ ()φ φ ()2k1+i)#⁡ ⁡ ()φ φ ()2k2+j)#⁡ ⁡ ()φ φ ()2k3+l)){displaystyle X(k_{1},k_{2},k_{3}=sum ¿Qué? {N}{2}-1}sum ¿Qué? {N}{2}-1}sum ¿Qué? {N}{2}-1}{tilde {x}_{ijl}(n_{1},n_{2},n_{3})cos(varphi (2k_{1}+i)cos(varphi (2k_{2}+j)cos(varphi (2k_{3}+l)}}

dónde

x~ ~ ijl()n1,n2,n3)=x~ ~ ()n1,n2,n3)+()− − 1)lx~ ~ ()n1,n2,n3+n2){displaystyle {tilde {x}_{yl}(n_{1},n_{2},n_{3}={tilde {x} {x} {n_{1},n_{2})+(-1)}{c}{c} {c}c}c}c} {c}c} {c} {cc}}}}cccccccccccccccc}ccccccccccccccccccccccccccccccccccccccccccccH00}cccccccccc}cc}} No, no. {n}{2}right)}
+()− − 1)jx~ ~ ()n1,n2+n2,n3)+()− − 1)j+lx~ ~ ()n1,n2+n2,n3+n2){displaystyle +(-1)^{j}{tilde {x}left(n_{1},n_{2}+{frac} {n}{2},n_{3}right)+(-1){j+l}{tilde {x}left(n_{1},n_{2}+{frac} {n}{2},n_{3}+{frac {n}right)}
+()− − 1)ix~ ~ ()n1+n2,n2,n3)+()− − 1)i+jx~ ~ ()n1+n2+n2,n2,n3){displaystyle +(-1)^{i}{tilde {x}left(n_{1}+{frac} {n}{2},n_{2},n_{3}right)+(-1)^{i+j}{tilde {x}left(n_{1}+{frac {n}{2}+{frac} {n}{2},n_{2},n_{3}right)}
+()− − 1)i+lx~ ~ ()n1+n2,n2,n3+n3){displaystyle +(-1)^{i+l}{tilde {x}left(n_{1}+{frac} {n}{2},n_{2},n_{3}+{frac} {n}{3}right)}
+()− − 1)i+j+lx~ ~ ()n1+n2,n2+n2,n3+n2)Dondei,j,l=0o1.{displaystyle +(-1)^{i+j+l}{tilde {x}left(n_{1}+{frac} {n}{2},n_{2}+{frac} {n}{2}},n_{3}+{frac {n}}right){text{ where }i,j,l=0{text{ or }}}1.}
Complejidad aritmética

Toda la necesidad de cálculo del DCT 3-D [log2⁡ ⁡ N]{displaystyle ~ [log _{2}N]~ etapas, y cada etapa implica 18N3{displaystyle ~{tfrac {1}{8} No. mariposas. Todo el DCT 3-D requiere [18N3log2⁡ ⁡ N]{displaystyle ~left[{tfrac {1}{3}log _{2}Nright]~ mariposas para ser calculadas. Cada mariposa requiere siete multiplicaciones reales (incluyendo multiplicaciones triviales) y 24 adiciones reales (incluyendo adiciones triviales). Por lo tanto, el número total de multiplicaciones reales necesarias para esta etapa es [78N3log2⁡ ⁡ N],{displaystyle ~left[{tfrac {7}{8} N^{3}log _{2}Nright]~,} y el número total de adiciones reales, es decir, incluyendo las post-addiciones (adiciones recursivas) que se pueden calcular directamente después de la etapa de mariposa o después de la etapa del bit-reverso se dan por [32N3log2⁡ ⁡ N]⏟ ⏟ Real+[32N3log2⁡ ⁡ N− − 3N3+3N2]⏟ ⏟ Recursivo=[92N3log2⁡ ⁡ N− − 3N3+3N2].{displaystyle ~underbrace {left[{frac {3}{2}N^{3}log ¿Qué? {3}{2}N^{3}log ################################################################################################################################################################################################################################################################ {9}{2}N^{3}log No.

El método convencional para calcular MD-DCT-II está utilizando un enfoque Row-Column-Frame (RCF) que es computacionalmente complejo y menos productivo en las plataformas de hardware más avanzadas recientes. El número de multiplicaciones requeridas para calcular VR DIF Algorithm en comparación con el algoritmo RCF son bastante pocos en número. The number of Multiplications and additions involved in RCF approach are given by [32N3log2⁡ ⁡ N]{displaystyle ~left[{frac {3}{2}N^{3}log - No. y [92N3log2⁡ ⁡ N− − 3N3+3N2],{displaystyle ~left[{frac {9}{2}N^{3}log - No. respectivamente. De la tabla 1, se puede ver que el número total

CUADRO 1 Comparación de VR DIF " RCF Algoritmos para computar 3D-DCT-II
Tamaño de transformación 3D VR Mults RCF Mults VR 3D Adds RCF Adds
8 × 8 × 8 2.625 4.5 10.875 10.875
16 × 16 3.5 6 15.188 15.188
32 × 32 4.375 7.5 19.594 19.594
64 × 64 5.25 9 24.047 24.047

de las multiplicaciones asociadas con el algoritmo 3-D DCT VR es menor que la asociada con el enfoque RCF en más del 40 %. Además, el enfoque RCF implica transposición de matriz y más indexación e intercambio de datos que el nuevo algoritmo VR. Esto hace que el algoritmo 3D DCT VR sea más eficiente y más adecuado para aplicaciones 3D que involucran 3D DCT-II, como la compresión de video y otras aplicaciones de procesamiento de imágenes 3D.

La consideración principal al elegir un algoritmo rápido es evitar las complejidades computacionales y estructurales. A medida que avanza la tecnología de las computadoras y los DSP, el tiempo de ejecución de las operaciones aritméticas (multiplicaciones y sumas) se vuelve muy rápido y la estructura computacional regular se convierte en el factor más importante. Por lo tanto, aunque el algoritmo 3-D VR propuesto anteriormente no alcanza el límite inferior teórico en el número de multiplicaciones, tiene una estructura computacional más simple en comparación con otros algoritmos 3-D DCT. Se puede implementar en su lugar usando una sola mariposa y posee las propiedades del algoritmo Cooley-Tukey FFT en 3-D. Por lo tanto, el 3-D VR presenta una buena opción para reducir las operaciones aritméticas en el cálculo del 3-D DCT-II, manteniendo la estructura simple que caracteriza a los algoritmos de FFT estilo mariposa de Cooley-Tukey.

Dos dimensiones Frecuencias DCT de JPEG DCT

La imagen a la derecha muestra una combinación de frecuencias horizontales y verticales para una 8 × 8 ()N1=N2=8){displaystyle (~N_{1}=N_{2}=8~)} DCT bidimensional. Cada paso de izquierda a derecha y de arriba a abajo es un aumento de frecuencia en 1/2 ciclo. Por ejemplo, mover uno derecho de la plaza superior izquierda produce un aumento de medio ciclo en la frecuencia horizontal. Otro movimiento a la derecha produce dos ciclos. Un movimiento hacia abajo produce dos ciclos horizontales y medio ciclo verticalmente. Datos fuente (8×8) se transforma en una combinación lineal de estos 64 cuadrados de frecuencia.

MD-DCT-IV

El M-D DCT-IV es solo una extensión del 1-D DCT-IV en el dominio M dimensional. La DCT-IV 2-D de una matriz o una imagen viene dada por

Xk,l l =.. n=0N− − 1.. m=0M− − 1xn,m#⁡ ⁡ ()()2m+1)()2k+1)π π 4N)#⁡ ⁡ ()()2n+1)()2l l +1)π π 4M),{4fnMicrosoft Sans Serif} {fnMicrosoft Sans Serif} {fnMicrosoft Sans Serif} {cfnMicrosoft Sans Serif} {fnMicrosoft Sans Serif} {ccccH0}ccccH0cH0}ccH0cH0cH00cH00cH00cH00cH00cH00ccH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00cH00}cH00cH00cH00}cH00cH
para k=0,1,2...... N− − 1{displaystyle ~~k=0, 1, 2 ldots N-1~ y l l =0,1,2,...... M− − 1.{displaystyle ~~ell =0, 1, 2, ldots M-1~}

Podemos calcular el MD DCT-IV usando el método regular de filas y columnas o podemos usar el método de transformación polinomial para un cálculo rápido y eficiente. La idea principal de este algoritmo es utilizar la Transformada polinomial para convertir la DCT multidimensional en una serie de DCT 1-D directamente. MD DCT-IV también tiene varias aplicaciones en varios campos.

Cálculo

Aunque la aplicación directa de estas fórmulas requeriría O()N2){displaystyle ~ {fnMitcal {fnMicrosoft Sans Serif} operaciones, es posible calcular lo mismo con sólo O()Nlog⁡ ⁡ N){displaystyle ~{mathcal {}(Nlog N)~ complejidad mediante la factorización de la computación de forma similar a la rápida transformación Fourier (FFT). También se puede calcular DCT a través de FFTs combinados con O()N){displaystyle ~{mthcal {}(N)~ pasos previos y posteriores al procesamiento. En general, O()Nlog⁡ ⁡ N){displaystyle ~{mathcal {}(Nlog N)~ métodos para calcular los DCT son conocidos como algoritmos rápidos de transformación cosina (FCT).

Los algoritmos más eficientes, en principio, son generalmente los que se especializan directamente para el DCT, en lugar de utilizar un FFT común más O()N){displaystyle ~{mthcal {}(N)~ operaciones adicionales (véase a continuación una excepción). Sin embargo, incluso algoritmos DCT "especializados" (incluidos todos aquellos que logran los recuentos aritméticos más bajos conocidos, al menos para potencia de dos tamaños) suelen estar estrechamente relacionados con algoritmos FFT – ya que los DCT son esencialmente DFT de datos reales, se puede diseñar un algoritmo DCT rápido tomando un FFT y eliminando las operaciones redundantes debido a esta simetría. Esto puede incluso hacerse automáticamente (Frigo & Johnson 2005). Los algoritmos basados en el algoritmo FFT Cooley–Tukey son más comunes, pero cualquier otro algoritmo FFT también es aplicable. Por ejemplo, el algoritmo de Winograd FFT conduce a algoritmos de multiplicación mínima para el DFT, aunque generalmente a costa de más adiciones, y un algoritmo similar fue propuesto por (Feig, Winograd & julio de 1992) harv error: no target: CITEREFFeigWinogradJuly_1992 (help) para el DCT. Debido a que los algoritmos para DFTs, DCTs y transformaciones similares están todos tan estrechamente relacionados, cualquier mejora en algoritmos para una transformación teóricamente llevará a ganancias inmediatas para los otros transformados también (Duhamel & Vetterli 1990).

Si bien los algoritmos DCT que emplean una FFT no modificada a menudo tienen una sobrecarga teórica en comparación con los mejores algoritmos DCT especializados, los primeros también tienen una clara ventaja: los programas FFT altamente optimizados están ampliamente disponibles. Por lo tanto, en la práctica, suele ser más fácil obtener un alto rendimiento para longitudes generales N con algoritmos basados en FFT. Los algoritmos DCT especializados, por otro lado, tienen un uso generalizado para transformaciones de tamaños pequeños y fijos, como el 8 × 8 DCT-II utilizado en la compresión JPEG, o los pequeños DCT (o MDCT) normalmente utilizados en la compresión de audio. (El tamaño de código reducido también puede ser una razón para usar un DCT especializado para aplicaciones de dispositivos integrados).

De hecho, incluso los algoritmos DCT usando un FFT ordinario son a veces equivalentes a podar las operaciones redundantes de un FFT más grande de datos simétricos reales, e incluso pueden ser óptimos desde la perspectiva de los conteos aritméticos. Por ejemplo, un DCT tipo II es equivalente a un DFT de tamaño 4N{displaystyle ~4N~} con simetría real-even cuyos elementos índices son cero. Uno de los métodos más comunes para computar esto a través de un FFT (por ejemplo, el método utilizado en FFTPACK y FFTW) fue descrito por Narasimha & Peterson (1978) y Makhoul (1980), y este método en retrospectiva se puede ver como un paso de un algoritmo de decimación a tiempo Cooley–Tukey aplicado al DFT real "lógico" correspondiente al TC. Debido a que los elementos incluso indexados son cero, este paso del ráx-4 es exactamente el mismo que un paso del rápido. Si el tamaño posterior N{displaystyle ~N~ FFT real-data también se realiza por un algoritmo de split-radix real-data (como en Sorensen et al. (1987)), entonces el algoritmo resultante realmente coincide con lo que fue largo el recuento aritmético más bajo publicado para el poder de dos DCT-II (2Nlog2⁡ ⁡ N− − N+2{displaystyle ~2Nlog No. operaciones reales-aritméticas).

Una reducción reciente en la operación cuenta a 179Nlog2⁡ ⁡ N+O()N){displaystyle ~{tfrac {17}{9}Nlog No. también utiliza un FFT de datos reales. Por lo tanto, no hay nada intrínsecamente malo en computar el DCT a través de un FFT desde una perspectiva aritmética – a veces es simplemente una cuestión de si el algoritmo FFT correspondiente es óptimo. (Como cuestión práctica, la sobrecarga de función en la facturación de una rutina FFT separada podría ser significativa para pequeños N,{displaystyle ~N~,} pero esta es una implementación en lugar de una pregunta algorítmica ya que puede resolverse desrollando o inlineando.)

Ejemplo de IDCT

Un ejemplo que muestra ocho filtros diferentes aplicados a una imagen de prueba (top left) multiplicando su espectro DCT (top right) con cada filtro.

Considere esta imagen en escala de grises de 8x8 de la letra A mayúscula.

Tamaño original, escalonado 10x (vecino sano), escalada 10x (bilinear).
Funciones de base de la transformación cosina discreta con coeficientes correspondientes (específica para nuestra imagen).
DCT de la imagen = [6.1917− − 0.34111.24180.14920.15830.2742− − 0,07240,05610.22050,02140.45030,3947− − 0,7846− − 0.43910.1001− − 0,2541.04230.2214− − 1.0017− − 0,27200,0789− − 0.19520.28010.4713− − 0,2340− − 0,0392− − 0,2617− − 0,28660.63510.3501− − 0.14330,35500,27500,02260.12290.2183− − 0,2583− − 0,0742− − 0.2042− − 0,59060,06530,0428− − 0.4721− − 0,29050.47450,2875− − 0,0284− − 0.13110.31690,0541− − 0.1033− − 0,0225− − 0,00560.1017− − 0.1650− − 0.1500− − 0,2970− − 0,06270,19600,0644− − 0.1136− − 0.10310.18870.1444]{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0..

Cada función base se multiplica por su coeficiente y luego este producto se suma a la imagen final.

A la izquierda está la imagen final. En el medio está la función ponderada (multiplicada por un coeficiente) que se añade a la imagen final. A la derecha está la función actual y el coeficiente correspondiente. Las imágenes se escalan (utilizando la interpolación bilineal) por factor 10×.