Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

dct

Transformación discreta del coseno

Descripción

ejemplo

y = dct(x) devuelve la transformación de coseno discreta unitaria de la matriz de entrada.x La salida tiene el mismo tamaño que .yx Si tiene más de una dimensión, opera a lo largo de la primera dimensión de matriz con un tamaño mayor que 1.xdct

y = dct(x,n) cero-pads o trunca la dimensión relevante de a la longitud antes de transformar.xn

ejemplo

y = dct(x,n,dim) calcula la transformación a lo largo de la dimensión.dim Para introducir una dimensión y utilizar el valor predeterminado de , especifique el segundo argumento como vacío, .n[]

ejemplo

y = dct(___,'Type',dcttype) especifica el tipo de transformación de coseno discreta que se va a calcular. Consulte para obtener más información.Transformación coseno discreta Esta opción se puede combinar con cualquiera de las sintaxis anteriores.

Ejemplos

contraer todo

Encuentre cuántos coeficientes DCT representan el 99% de la energía en una secuencia.

x = (1:100) + 50*cos((1:100)*2*pi/40); X = dct(x); [XX,ind] = sort(abs(X),'descend'); i = 1; while norm(X(ind(1:i)))/norm(X) < 0.99    i = i + 1; end needed = i;

Reconstruya la señal y compárela con la señal original.

X(ind(needed+1:end)) = 0; xx = idct(X);  plot([x;xx]') legend('Original',['Reconstructed, N = ' int2str(needed)], ...        'Location','SouthEast')

Cargue un archivo que contenga mediciones de profundidad de un molde utilizado para acuñar un centavo de los Estados Unidos. Los datos, tomados en el Instituto Nacional de Estándares y Tecnología, se muestrean en una red de 128 por 128. Visualice los datos.

load penny  surf(P) view(2) colormap copper shading interp axis ij square off

Calcular la transformación de coseno discreta de los datos de imagen. Operar primero a lo largo de las filas y luego a lo largo de las columnas.

Q = dct(P,[],1); R = dct(Q,[],2);

Encuentra qué porcentaje de coeficientes DCT contienen el 99,9% de la energía en la imagen.

X = R(:);  [~,ind] = sort(abs(R(:)),'descend'); coeffs = 1; while norm(X(ind(1:coeffs)))/norm(X) < 0.999    coeffs = coeffs + 1; end fprintf('%3.1f%% of the coefficients are sufficient\n',coeffs/numel(R)*100)
6.9% of the coefficients are sufficient 

Reconstruya la imagen utilizando sólo los coeficientes necesarios.

R(abs(R) < X(coeffs)) = 0;  S = idct(R,[],2); T = idct(S,[],1);

Muestre la imagen reconstruida.

surf(T) view(2) shading interp axis ij square off

Cargue un archivo que contenga mediciones de profundidad de un molde utilizado para acuñar un centavo de los Estados Unidos. Los datos, tomados en el Instituto Nacional de Estándares y Tecnología, se muestrean en una red de 128 por 128. Visualice los datos.

load penny  surf(P) view(2) colormap copper shading interp axis ij square off

Calcular la transformación discreta del coseno de los datos de imagen utilizando la variante DCT-1. Operar primero a lo largo de las filas y luego a lo largo de las columnas.

Q = dct(P,[],1,'Type',1); R = dct(Q,[],2,'Type',1);

Invierta la transformación. Truncar el inverso para que cada dimensión de la imagen reconstruida sea la mitad de la longitud del original.

S = idct(R,size(P,2)/2,2,'Type',1); T = idct(S,size(P,1)/2,1,'Type',1);

Invierta la transformación de nuevo. Cero-pad el inverso para que cada dimensión de la imagen reconstruida sea el doble de la longitud de la original.

U = idct(R,size(P,2)*2,2,'Type',1); V = idct(U,size(P,1)*2,1,'Type',1);

Muestre las imágenes originales y reconstruidas.

surf(V) view(2) shading interp hold on  surf(P) view(2) shading interp  surf(T) view(2) shading interp hold off axis ij equal off

Argumentos de entrada

contraer todo

Matriz de entrada, especificada como un vector, matriz, matriz u objeto de valor real o de valores complejos.gpuArray

Vea y para obtener más información sobre los objetos.Run MATLAB Functions on a GPU (Parallel Computing Toolbox)GPU Support by Release (Parallel Computing Toolbox)gpuArray (Parallel Computing Toolbox)

Ejemplo: especifica un sinusoides como vector de fila.sin(2*pi*(0:255)/4)

Ejemplo: especifica un sinusoides de dos canales.sin(2*pi*[0.1;0.3]*(0:39))'

Tipos de datos: single | double
Soporte de números complejos:

Longitud de transformación, especificada como un escalar entero positivo.

Tipos de datos: single | double

Dimensión para operar a lo largo, especificada como un escalar entero positivo.

Tipos de datos: single | double

Tipo de transformación de coseno discreto, especificado como un escalar entero positivo de 1 a 4. Consulte las definiciones de los diferentes tipos de DCT.Transformación coseno discreta

Tipos de datos: single | double

Argumentos de salida

contraer todo

Transformación de coseno discreta, devuelta como un vector, matriz, matriz u objeto de valor real o de valores complejos.gpuArray

Más acerca de

contraer todo

Transformación coseno discreta

La transformación de coseno discreta (DCT) está estrechamente relacionada con la transformación discreta de Fourier. A menudo puede reconstruir una secuencia con mucha precisión a partir de sólo unos pocos coeficientes DCT. Esta propiedad es útil para aplicaciones que requieren reducción de datos.

El DCT tiene cuatro variantes estándar. Para una señal de longitud, y conxN δkℓ el delta de Kronecker, las transformaciones se definen por:

  • DCT-1:

    y(k)=2N1n=1Nx(n)11+δn1+δnN11+δk1+δkNcos(πN1(n1)(k1))

  • DCT-2:

    y(k)=2Nn=1Nx(n)11+δk1cos(π2N(2n1)(k1))

  • DCT-3:

    y(k)=2Nn=1Nx(n)11+δn1cos(π2N(n1)(2k1))

  • DCT-4:

    y(k)=2Nn=1Nx(n)cos(π4N(2n1)(2k1))

Las series se indexan a partir de n = 1 Y k = 1 en lugar de la habitual n = 0 Y k = 0, porque los vectores se ejecutan de 1 a en lugar de 0 aMATLAB®N N – 1.

Todas las variantes del DCT son (o, equivalentemente, ):UnitarioOrtogonal Para encontrar sus inversas, cambie y en cada definición.kn En particular, DCT-1 y DCT-4 son sus propios inversos, y DCT-2 y DCT-3 son inversos entre sí.

Referencias

[1] Jain, A. K. Fundamentals of Digital Image Processing. Englewood Cliffs, NJ: Prentice-Hall, 1989.

[2] Pennebaker, W. B., and J. L. Mitchell. JPEG Still Image Data Compression Standard. New York: Van Nostrand Reinhold, 1993.

[3] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.

Capacidades ampliadas

Consulte también

| | (Image Processing Toolbox) | (Image Processing Toolbox)

Introducido antes de R2006a