Transformada inversa de cosseno 2-D MATLAB:restaurar imagens de dados de frequência
A Transformada Inversa do Cosseno, muitas vezes denotada como ICT ou IDCT, é uma operação matemática que inverte o processo da Transformada do Cosseno. É particularmente útil no processamento de sinais e imagens para reconstruir sinais ou imagens a partir de suas representações no domínio da frequência.
No contexto de sinais ou imagens 2-D, a Transformada Inversa de Cosseno 2-D (TIC 2-D ou IDCT 2-D) converte uma matriz de coeficientes de cosseno (representando o conteúdo de frequência do sinal ou imagem) de volta ao domínio espacial, produzindo o sinal ou imagem original.
A Transformada Inversa de Cosseno 2-D no MATLAB é usada para converter uma matriz de valores de cosseno em uma imagem de domínio espacial. É a operação inversa da Transformada de Cosseno 2-D e é comumente usada no processamento e compactação de imagens. A função idct2 é usada para realizar a Transformada Inversa de Cosseno 2-D no MATLAB.
Transformada discreta de cosseno inversa 2-D
No MATLAB, a função idct2 é usada para realizar a Transformada Inversa de Cosseno 2-D. Ele pega uma matriz de coeficientes de cosseno como entrada e retorna a representação do domínio espacial do sinal ou imagem. O resultado é uma imagem reconstruída que pode ser exibida ou processada posteriormente.
A Transformada Inversa de Cosseno é crucial em várias aplicações, incluindo compressão de imagem (por exemplo, em compressão JPEG), reconstrução de imagem e tarefas de processamento de sinal onde sinais ou imagens precisam ser transformados de volta à sua forma original após manipulação no domínio de frequência.
Sintaxe
01Explicação da sintaxe
B =idct2(A) - Calcula a Transformada Discreta de Cosseno Inversa (IDCT) bidimensional da matriz A, retornando o resultado na matriz B. Esta operação reconstrói efetivamente a imagem do domínio espacial a partir de sua representação no domínio da frequência em A.
B =idct2(A, m,n) - calcula a Transformada Discreta de Cosseno Inversa (IDCT) bidimensional da matriz A e especifica o tamanho da matriz de saída B como m por n. Esta operação reconstrói efetivamente a imagem do domínio espacial a partir de sua representação no domínio da frequência em A, redimensionando-a para as dimensões especificadas m por n.
B =idct2(A, [m,n]) - calcula a Transformada Discreta de Cosseno Inversa (IDCT) bidimensional da matriz A e redimensiona a matriz de saída B para ter m linhas en colunas. Esta operação reconstrói a imagem no domínio espacial a partir de sua representação no domínio da frequência em A, redimensionando-a para as dimensões especificadas [m n].
Vejamos alguns exemplos de transformada discreta inversa de cosseno 2-D
Exemplo 1:Para remover altas frequências da imagem usando a função idct2()
O código que temos é -
10
No exemplo -
- A função imread é usada para ler a imagem de um arquivo ('autumn.tif' neste caso) e armazená-la na variável img.
- Se a imagem for colorida (ou seja, tiver três canais para vermelho, verde e azul), ela será convertida em escala de cinza usando a função rgb2gray. Isso é feito porque o DCT 2-D normalmente é aplicado a imagens em tons de cinza.
- A função dct2 calcula o DCT 2-D da imagem. O resultado é armazenado na variável dct_img. O DCT representa a imagem no domínio da frequência, onde os componentes de alta frequência correspondem a mudanças rápidas nos valores dos pixels.
- Um valor limite é escolhido para determinar quais coeficientes DCT manter e quais descartar. Neste exemplo, optamos por manter apenas os primeiros 50 coeficientes (em uma imagem de 256x256, esses coeficientes representam as frequências mais baixas). Os coeficientes de alta frequência (aqueles além do limite) são definidos como zero.
- A função idct2 calcula a DCT 2-D inversa dos coeficientes DCT modificados (dct_img_thresh). Esta operação reconstrói efetivamente a imagem no domínio espacial a partir de sua representação no domínio da frequência. O resultado é armazenado em filtered_img.
- Finalmente, a imagem original e a imagem filtrada são exibidas lado a lado usando a função imshow. A imagem original é exibida à esquerda e a imagem filtrada (com as altas frequências removidas) é exibida à direita.
Na execução, a saída que obtemos é -
Exemplo 2:redimensionamento de imagem usando B =idct2(A, m,n)
O código que temos é -
28
No exemplo temos -
- A função imread é usada para ler a imagem de um arquivo ('autumn.tif' neste caso) e armazená-la na variável img.
- Se a imagem for colorida (ou seja, tiver três canais para vermelho, verde e azul), ela será convertida em escala de cinza usando a função rgb2gray. Esta etapa é importante porque o DCT 2-D normalmente é aplicado a imagens em tons de cinza.
- A função dct2 calcula o DCT 2-D da imagem. O resultado é armazenado na variável dct_img. O DCT representa a imagem no domínio da frequência, onde diferentes frequências da imagem são representadas por diferentes coeficientes.
- Para redimensionar a imagem, redimensionamos a matriz de coeficientes DCT (dct_img) para um tamanho menor. Isso é feito usando a função imresize, especificando o novo tamanho como metade do tamanho original (new_size =size(img) / 2). Isso reduz efetivamente a representação da imagem no domínio da frequência.
- A função idct2 calcula a DCT 2-D inversa dos coeficientes DCT redimensionados (dct_resized). Esta operação reconstrói efetivamente a imagem redimensionada no domínio espacial a partir de sua representação redimensionada no domínio da frequência.
- Finalmente, a imagem original e a imagem redimensionada são exibidas lado a lado usando a função imshow. A imagem original é exibida à esquerda e a imagem redimensionada (obtida usando IDCT 2-D) é exibida à direita.
A saída na execução é -
Exemplo 3:redimensionando uma matriz usando a transformada discreta inversa de cosseno (IDCT) 2-D
O código que temos é o seguinte -
32
Neste exemplo, criamos uma matriz de amostra 4x4 A. Em seguida, aplicamos o IDCT 2-D a A e redimensionamos o resultado para uma matriz 3x2 [m, n] =[3, 2]. A matriz redimensionada B é exibida após a transformação.
A saída que obtemos é a seguinte -
40
MATLAB:Laplaciano de Filtro Gaussiano para Detecção de Bordas Domine MATLAB OOP:Construindo Código Robusto e Reutilizável com Classes e Objetos
MATLAB