Contenido principal

dct

Transformada de coseno discreta

Descripción

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

ejemplo

y = dct(x,n) rellena de ceros o trunca la dimensión relevante de x a la longitud n antes de la transformación.

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

ejemplo

y = dct(___,Type=dcttype) especifica el tipo de transformada de coseno discreta que calcular. Para obtener más detalles, consulte Transformada de coseno discreta. Esta opción puede combinarse con cualquiera de las sintaxis anteriores.

ejemplo

Ejemplos

contraer todo

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

x = (1:100) + 50*cos((1:100)*2*pi/40).^3;
X = dct(x);
[XX,ind] = sort(abs(X),"descend");
i = 1;
while (norm(X(ind(1:i)))/norm(X))^2 < 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 = " + needed, ...
       Location='SouthEast')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Original, Reconstructed, N = 4.

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

load penny

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

Figure contains an axes object. The hidden axes object contains an object of type surface.

Calcule la transformada de coseno discreta de los datos de imagen. Opere primero en las filas y después en las columnas.

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

Descubra qué fracción de coeficientes de la DCT contienen el 99,98% de la energía de la imagen.

X = R(:);

[~,ind] = sort(abs(X),"descend");
coeffs = 1;
while (norm(X(ind(1:coeffs)))/norm(X))^2 < 0.9998
   coeffs = coeffs + 1;
end
disp(coeffs + " of " + numel(R) + " coefficients are sufficient")
5215 of 16384 coefficients are sufficient

Reconstruya la imagen utilizando solo los coeficientes necesarios.

R(abs(R) < abs(X(ind(coeffs)))) = 0;

S = idct(R,[],2);
T = idct(S,[],1);

Muestre la imagen reconstruida.

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

Figure contains an axes object. The hidden axes object contains an object of type surface.

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

load penny

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

Figure contains an axes object. The hidden axes object contains an object of type surface.

Calcule la transformada de coseno discreta de los datos de imagen mediante la variante DCT-1. Opere primero en las filas y después en las columnas.

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

Invierta la transformada. Trunque la inversa de modo que cada dimensión de la imagen reconstruida tenga la mitad de la longitud de la original.

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

Invierta la transformada de nuevo. Rellene de ceros la inversa de modo que cada dimensión de la imagen reconstruida tenga 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 la imagen original y la reconstruida.

surf(V)
hold on
surf(P)
surf(T)
hold off

shading interp
view(2)
axis ij equal off

Figure contains an axes object. The hidden axes object contains 3 objects of type surface.

Argumentos de entrada

contraer todo

Arreglo de entrada, especificado como vector de valor real o valor complejo, matriz o arreglo N-D.

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

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

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

Longitud de la transformada, especificada como escalar entero positivo.

Tipos de datos: single | double

Dimensión sobre la que se desea operar, especificada como escalar entero positivo.

Tipos de datos: single | double

Tipo de transformada de coseno discreta, especificado como escalar entero positivo de 1 a 4. Consulte Transformada de coseno discreta para encontrar las definiciones de los diferentes tipos de DCT.

Tipos de datos: single | double

Argumentos de salida

contraer todo

Transformada de coseno discreta, especificada como vector de valor real o valor complejo, matriz o arreglo N-D.

Más acerca de

contraer todo

Referencias

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

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

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

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido antes de R2006a

Consulte también

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