Não entendo como as frequências são definidas nas imagens / fotografias. Até onde eu entendo agora, as altas frequências são como coisas nítidas nas imagens, como bordas mais ou menos, e as baixas frequências são o oposto?
Eu também gostaria de entender o resultado das Transformações Discretas de Fourier, como ler corretamente.
Seria legal se alguém pudesse me explicar o seguinte:
O que são frequências nas imagens e como elas são definidas?
Como você lê o resultado de uma Transformação Discreta de Fourier?
terminology
image-processing
Jakob Abfalter
fonte
fonte
Respostas:
Responderei apenas à primeira pergunta: o que são frequências nas imagens?
A Transformada de Fourier é uma técnica matemática em que a mesma informação de imagem é representada não para cada pixel separadamente, mas para cada frequência. Pense nisso desta maneira. O mar tem ondas, algumas das quais são muito lentas (como marés), outras são de tamanho médio e outras ainda são pequenas, como as ondulações formadas por uma rajada. Você pode pensar nelas como três ondas separadas, mas em cada ponto da superfície do mar e em um momento, você obtém apenas uma altura de água.
O mesmo se aplica às imagens. Você pode pensar na imagem composta de várias ondas ou frequências. Para criar sua imagem, comece com a cor média (na verdade, pensar em imagens em escala de cinza é mais fácil). Em seguida, adicione ondas de comprimentos e força diferentes para criar lentamente detalhes na imagem.
Imagem de origem:
Primeira Frequência (Média):
A segunda frequência ao longo da dimensão vertical é uma onda começando no zero na parte inferior da imagem, subindo, tornando-se zero novamente ao longo do horizonte central e caindo abaixo de zero para finalmente se tornar zero no topo da imagem. (Descrevi uma série de Fourier sem mudança de fase, mas a analogia ainda se mantém.)
Aqui você pode ver a segunda frequência ao longo da horizontal e vertical. Observe que você pode descobrir onde a montanha estará (escura) e onde o céu e o lago estarão (mais claros).
Segunda Frequência:
Cada onda ou frequência adicional traz mais ondulações e, como tal, mais detalhes. Para obter imagens diferentes, a altura / amplitude da onda pode ser alterada, bem como o ponto inicial da onda, também chamada de Fase.
Terceira Frequência:
Curiosamente, a quantidade de informações é a mesma nessa representação e pode-se ir e voltar entre imagens normais (domínio espacial) e imagens transformadas de Fourier (domínio de frequência). No domínio da frequência, precisamos manter as informações de todas as frequências junto com a amplitude e as informações da fase.
Aqui está usando 50% das frequências:
Existem variantes de tudo isso, com distinções a serem feitas entre as séries de Fourier, transformada de Fourier e transformada discreta de Fourier e transformada discreta de cosseno (DCT).
Uma aplicação interessante está no uso de algoritmos de compactação como o JPEG. Aqui, o DCT é usado para salvar mais partes importantes da imagem (as frequências baixas) e menos as altas.
Escrevi isso na esperança de que leitores iniciantes possam obter um entendimento básico da idéia das transformadas de Fourier. Por isso fiz algumas simplificações que espero que os leitores mais avançados me perdoem.
Animado
O vídeo gerado por Thomas Devoogdt pode ser visto no Vimeo .
Frequências no pós-processamento
Existem vários métodos que dependem de frequências para pós-processamento, principalmente porque nunca olhamos para pixels únicos individualmente. Muitos algoritmos funcionam com frequência, porque é mais natural pensar neles dessa maneira. Mas também porque a Transformada de Fourier contém as mesmas informações, podemos expressar qualquer operação matemática (ou etapa de pós-processamento) na frequência e nos domínios espaciais! Às vezes, a descrição em pixels é melhor, mas geralmente a descrição da frequência é melhor. (Melhor significa principalmente mais rápido neste contexto.)
Uma técnica que eu gostaria de apontar por nenhuma razão específica, exceto que são artistas trabalhando diretamente com frequências e que é * separação de frequências *. Não vou descrevê-lo, mas você pode ver como ele funciona no YouTube para Photoshop e GIMP.
Você cria duas camadas, uma com as frequências baixas e outra com as altas frequências. Para retratos, você pode suavizar a pele nas altas frequências sem afetar os tons de pele nas baixas frequências.
Código
Este é um código para gerar os exemplos acima. Pode ser executado como um simples programa Python.
fonte
Vou tentar explicar com os termos matemáticos mais simples possíveis. Se você quiser pular a matemática, pule para a parte II, se quiser obter a resposta curta pule para a Parte III
Parte I
Frequência de um sinal significa o número de ocorrências de um evento repetido por unidade de tempo. Portanto, se a unidade de tempo for segundos, a frequência será medida com Herz: 1Hz = 1 / s. Portanto, um sinal com 100Hz, tem um padrão que se repete 100 vezes por segundo.
O sinal mais básico (do ponto de vista do processamento do sinal) é um sinal sinusal.
y (t) = sin (2πft)
onde f é a frequência desse sinal sinusal e t é o tempo. Se esse sinal foi emitido ef estava em torno de 50Hz, você ouvirá um tom baixo muito baixo. com uma frequência mais alta como 15kHz, será um tom mais alto.
Agora, para generalizar o conceito, o sinal pode ser um sinal espacial, em vez de um sinal temporal ... como se você desenhasse a onda sinusal em um pedaço de papel, com um eixo chamado x apontando para a direita e o eixo y perpendicular para o eixo x.
y (x) = sin (2πfx)
onde f é a frequência do sinal ex é a variável espacial. f aqui não é mais medido com 1 / s, mas 1 / (unidade de espaço).
Fourier, um matemático francês, mostrou que você pode gerar qualquer sinal adicionando vários sinais seno e cosseno com diferentes amplitudes e frequências. Isso é chamado de Análise de Fourier.
Utilizando a análise de Fourier, é possível escrever qualquer função y (x) como uma soma dos sinais seno e cosseno com frequências diferentes, para que uma função y (x) possa ser reescrita em termos de várias funções relacionadas à frequência Y (f). Pode-se dizer que y (x) = AlgumaFunção (Y (f)). ou Y (f) = Função inversa de algumas funções (y (x))
A transformação de Fourier é a função F que transforma um sinal do domínio x para o domínio da frequência.
F é uma função analógica, Transformação Discreta de Fourier DFT é a aproximação numérica de F. Transformação Rápida de Fourier A FFT é uma maneira de executar a DFT otimizada para velocidade.
Está bem...
parte II
Agora, as imagens de computador são compostas por pixels, e cada pixel tem um valor de intensidade para os valores Vermelho, Verde e Azul, também conhecido como RGB. Nas imagens em escala de cinza, a intensidade de R, G, B de qualquer pixel é igual, R = G = B = I, para que possamos falar sobre I para imagens em escala de cinza.
A imagem em escala de cinza 800px X 100px abaixo foi gerada usando I (x) = sin (2πfx) em que f = 1 repetição / 800px = 0,00125 repetição / px
Você pode gerá-lo você mesmo com Python3
A imagem 800px X 100px em escala de cinza abaixo foi gerada usando I (x) = sin (2πfx) em que f = 10repetições / 800px = 0,0125 repetições / px
Agora é fácil ver que esta imagem tem uma frequência horizontal de 10. Vamos aumentar a frequência em um fator de 10, de modo que n = 100. f = 100/800 = 1/8 = 0,125 repetições / px:
Como mencionado anteriormente, você pode representar qualquer sinal (imagem em escala de cinza 1D) como uma série de sinais senoidais (imagens em seno em escala de cinza 1D) com frequências diferentes.
Parte III
Portanto, uma imagem em escala de cinza 1D A tem frequências mais altas que outra imagem em escala de cinza B se A tiver detalhes "mais finos".
Você pode generalizar esse princípio para imagens coloridas em 2D e até 3D. Quanto mais refinados os "detalhes" de uma imagem, maior é o conteúdo de frequência dessa imagem.
Portanto, um céu azul é de baixa frequência em comparação com a imagem de uma flor.
Você pode aprender mais sobre isso lendo sobre a análise de Fourier e sobre o processamento digital de imagens.
fonte
Resumidamente, a frequência refere-se à taxa de mudança. Mais precisamente, a frequência é o inverso do período da mudança - ou seja, a quantidade de tempo que leva para alternar de um brilho (ou qualquer outro) para um brilho diferente e voltar novamente. Quanto mais rápido a mudança (por exemplo, do claro para o escuro), maior a "frequência" visual necessária para representar essa parte da imagem.
Em outras palavras, você pode pensar na frequência em uma imagem como a taxa de mudança. Partes da imagem que mudam rapidamente de uma cor para outra (por exemplo, bordas nítidas) contêm altas frequências e partes que mudam gradualmente (por exemplo, grandes superfícies com cores sólidas) contêm apenas baixas frequências.
Quando falamos sobre DCT e FFT e outras transformações similares, geralmente as fazemos em uma parte da imagem (por exemplo, para compactação JPEG, detecção de borda e assim por diante). Faz mais sentido falar sobre as transformações, então, no contexto de um bloco de transformação de um determinado tamanho.
Imagine, se desejar, um bloco de 32 pixels x 32 pixels de dados de imagem. (Esse número é arbitrário.) Suponha que a imagem seja um gradiente simples, branco no lado esquerdo, preto no meio e branco no lado direito. Diríamos que esse sinal tem um período de aproximadamente um comprimento de onda por 32 pixels de largura, porque passa por um ciclo completo de branco para preto e branco novamente a cada 32 pixels.
Arbitrariamente, podemos chamar essa frequência de 1 a 1 ciclo por 32 pixels. Lembro-me vagamente de que isso é comumente chamado θ nos livros de transformação, ou talvez θ / 2, mas eu poderia estar lembrando errado. De qualquer maneira, vamos chamá-lo de 1 por enquanto, porque isso é verdadeiramente arbitrário em um sentido absoluto; o que importa é a relação entre frequências em um sentido relativo. :-)
Suponha que você tenha uma segunda imagem que seja branca em uma borda e desbotada duas vezes mais rapidamente, de modo que ela passe de branco para preto, para branco, para preto e para branco novamente para a outra borda. Então, chamaríamos essa frequência de "2" porque ela muda duas vezes mais que a largura desse bloco de 32 pixels.
Se quiséssemos reproduzir essas imagens simples, poderíamos literalmente dizer que cada linha consiste em um sinal com uma frequência de 1 ou 2, e você saberia como são as imagens. Se as imagens passassem de preto para 50% de cinza, você poderia fazer o mesmo, mas diria que elas tinham uma frequência de 1 ou 2 a uma intensidade de 50%.
Imagens do mundo real, é claro, não são apenas um simples gradiente. A imagem muda frequentemente e não periodicamente conforme você digitaliza da esquerda para a direita. No entanto, dentro de um bloco pequeno o suficiente (por exemplo, 8 pixels, 16 pixels), você pode aproximar essa linha de pixels como a soma de uma série de sinais, começando com a média dos valores de pixels na linha, seguidos pela quantidade de " sinal de frequência 0,5 "(preto de um lado, desbotando para branco) para combinar (ou com uma quantidade negativa, a quantidade desse sinal a subtrair), seguido pela quantidade de frequência 1, frequência 2, frequência 4 e assim por diante .
Agora, uma imagem é única, pois tem frequência nas duas direções; pode ficar mais claro e mais escuro ao se mover na horizontal e na vertical. Por esse motivo, usamos transformações 2D DCT ou FFT em vez de 1D. Mas o princípio ainda é basicamente o mesmo. Você pode representar com precisão uma imagem 8x8 com uma grade 8x8 de buckets de tamanhos semelhantes.
As imagens também são mais complexas por causa das cores, mas vamos ignorar isso por enquanto, e assumiremos que estamos vendo apenas uma imagem em escala de cinza, como você pode ver ao ver o canal vermelho de uma fotografia isoladamente.
Quanto a como ler os resultados de uma transformação, isso depende se você está olhando para uma transformação 1D ou 2D. Para uma transformação 1D, você tem uma série de posições. O primeiro é a média de todos os valores de entrada. O segundo é a quantidade do sinal de frequência 1 a ser adicionado, o terceiro é a quantidade do sinal de frequência 2 a ser adicionado, etc.
Para uma transformação 2D, você tem uma grade de valores n x n . O canto superior esquerdo é tipicamente essa média e, à medida que você avança na direção horizontal, cada balde contém a quantidade de sinal a ser misturado com uma frequência horizontal de 1, 2, 4 etc. e, na direção vertical, ele é a quantidade de sinal para misturar com uma frequência vertical de 1, 2, 4 etc.
Essa é, obviamente, a história completa, se você estiver falando de um DCT; Por outro lado, cada compartimento para uma FFT contém peças reais e imaginárias. A FFT ainda é baseada na mesma idéia básica (mais ou menos), exceto que a maneira como as frequências são mapeadas nas caixas é diferente e a matemática é mais complicada. :-)
Obviamente, o motivo mais comum para gerar esse tipo de transformação é dar um passo adiante e jogar alguns dados fora. Por exemplo, o DCT é usado na compactação JPEG. Ao ler os valores em um padrão em zigue-zague, começando com o canto superior esquerdo (a média) e movendo-se para o canto inferior direito, os dados mais importantes (as informações de média e baixa frequência) são registrados primeiro, seguidos pelos dados de frequência progressivamente mais altos. Em algum momento, você basicamente diz "isso é bom o suficiente" e joga fora os dados de maior frequência. Isso suaviza essencialmente a imagem jogando fora os detalhes finos, mas ainda fornece aproximadamente a imagem correta.
E IIRC, FFTs também são algumas vezes usados para detecção de bordas, onde você joga fora todos, exceto os componentes de alta frequência, como um meio de detectar as áreas de alto contraste em bordas afiadas.
A National Instruments tem um belo artigo que explica isso com fotos. :-)
fonte
Imagine digitalizar a imagem linha por linha com uma fotocélula e alimentar os resultados com uma plotadora (essas máquinas planas que produzem ondas negras no papel), um osciloscópio (essas caixas que produzem ondas verdes tremulantes na tela) ou um analisador de espectro (caixas maiores que faça cercas verdes ou multicoloridas). Ou um alto-falante mesmo. Quanto mais refinadas as estruturas em uma imagem, maiores serão as frequências (o tom no alto-falante) do sinal mostrado / ouvido. Quanto mais contraste houver nas estruturas finas, maior será a amplitude das partes de alta frequência do sinal.
fonte