Lodes Tutorial de gráficos de computador Filtragem de imagens Índice Introdução A filtragem de imagens permite aplicar vários efeitos em fotos. O tipo de filtragem de imagem descrito aqui usa um filtro 2D semelhante ao incluído no Paint Shop Pro como filtro definido pelo usuário e no Photoshop como filtro personalizado. Convolução O truque da filtragem de imagem é que você tem uma matriz de filtro 2D e a imagem 2D. Então, para cada pixel da imagem, tome a soma dos produtos. Cada produto é o valor de cor do pixel atual ou um vizinho dele, com o valor correspondente da matriz do filtro. O centro da matriz de filtro tem que ser multiplicado com o pixel atual, os outros elementos da matriz de filtro com pixels vizinhos correspondentes. Esta operação onde você toma a soma de produtos de elementos de duas funções 2D, onde você deixa uma das duas funções se mover sobre cada elemento da outra função, é chamado Convolução ou Correlação. A diferença entre a convolução ea correlação é que para a convolução você tem que espelhar a matriz do filtro, mas geralmente seu simétrico de qualquer maneira assim não há nenhuma diferença. Os filtros com convolução são relativamente simples. Filtros mais complexos, que podem usar funções mais sofisticadas, também existem, e podem fazer coisas muito mais complexas (por exemplo, o filtro Lápis de Cor no Photoshop), mas esses filtros não são discutidos aqui. A operação de convolução 2D requer um loop de 4 duplos, por isso não é extremamente rápido, a menos que você use pequenos filtros. Aqui bem geralmente estar usando filtros 3x3 ou 5x5. Existem algumas regras sobre o filtro: Seu tamanho tem que ser desigual, de modo que ele tem um centro, por exemplo 3x3, 5x5 e 7x7 são ok. Não é necessário, mas a soma de todos os elementos do filtro deve ser 1 se você deseja que a imagem resultante tenha o mesmo brilho que o original. Se a soma dos elementos for maior que 1, o resultado será uma imagem mais brilhante e, se for menor que 1, uma imagem mais escura. Se a soma for 0, a imagem resultante não é necessariamente completamente preta, mas será muito escura. A imagem tem dimensões finitas, e se você está, por exemplo, calculando um pixel no lado esquerdo, não há mais pixels à esquerda dele enquanto estes são necessários para a convolução. Você pode usar o valor 0 aqui, ou envolver ao redor para o outro lado da imagem. Neste tutorial, o envolvimento é escolhido porque pode ser feito facilmente com uma divisão de módulo. Os valores de pixel resultantes após a aplicação do filtro podem ser negativos ou maiores que 255, se isso acontecer, você pode truncar-los para que valores menores que 0 sejam Feito 0 e valores maiores que 255 são definidos como 255. Para valores negativos, você também pode ter o valor absoluto em vez disso. No domínio de Fourier ou domínio de frequência, a operação de convolução torna-se uma multiplicação em vez disso, que é mais rápida. No domínio de Fourier, filtros muito mais poderosos e maiores podem ser aplicados mais rapidamente, especialmente se você usar a Transformada Rápida de Fourier. Mais sobre isto está no artigo Transform de Fourier. Neste artigo, bem olhar para alguns filtros pequenos muito típicos, tais como borrão, detecção de borda e relevo. Filtros de imagem arent viável para aplicações em tempo real e jogos ainda, mas theyre útil no processamento de imagem. Filtros de áudio e eletrônicos digitais trabalham com convolução também, mas em 1D. Heres o código thatll ser usado para experimentar diferentes filtros. Além de usar uma matriz de filtro, ele também tem um fator multiplicador e um viés. Depois de aplicar o filtro, o fator será multiplicado com o resultado, eo viés adicionado a ele. Portanto, se você tem um filtro com um elemento 0,25, mas o fator é definido como 2, todos os elementos do filtro são, em teoria, multiplicados por dois, de modo que o elemento 0,25 seja realmente 0,5. O viés pode ser usado se você quiser tornar a imagem resultante mais brilhante. O resultado de um pixel é armazenado em flutuadores vermelho, verde e azul, antes de convertê-lo para o valor inteiro no buffer de resultado. O cálculo do filtro em si é um loop de 4 duplas que tem que passar por cada pixel da imagem e, em seguida, através de cada elemento da matriz do filtro. A localização imageX e imageY é calculada de modo que para o elemento central do filtro itll seja x, y, mas para os outros elementos itll ser um pixel da imagem para a esquerda, direita, superior ou inferior de x, y. Seu módulo é dividido através da largura (w) ou altura (h) da imagem de modo que os pixels fora da imagem serão enrolados ao redor. Antes de modulo dividindo-lo, w ou h também são adicionados a ele, porque esta divisão módulo não funciona corretamente para valores negativos. Agora, pixel (-1, -1) será convertido corretamente em pixel (w-1, h-1). Se você quiser tomar o valor absoluto de valores menores do que zero em vez de truncá-lo, use este código em vez disso: O cientista e engenheiros guia para processamento de sinal digital Por Steven W. Smith, Ph. D. Capítulo 24: Processamento Linear de Imagens Convolução por Separabilidade Esta é uma técnica para convolução rápida, desde que o PSF seja separável. Diz-se que uma PSF é separável se puder ser dividida em dois sinais unidimensionais: uma projeção vertical e uma projeção horizontal. A Figura 24-5 mostra um exemplo de uma imagem separável, o PSF quadrado. Especificamente, o valor de cada pixel na imagem é igual ao ponto correspondente na projeção horizontal multiplicado pelo ponto correspondente na projeção vertical. Em forma matemática: onde x r, c é a imagem bidimensional, e vert r amp horz c são as projeções unidimensionais. Obviamente, a maioria das imagens não satisfaz este requisito. Por exemplo, o pillbox não é separável. Há, no entanto, um número infinito de imagens separáveis. Isto pode ser compreendido gerando projeções arbitrárias horizontais e verticais, e encontrando a imagem que lhes corresponde. Por exemplo, a Fig. 24-6 ilustra isso com perfis que são exponenciais de dois lados. A imagem que corresponde a esses perfis é então encontrada a partir da Eq. 24-1. Quando exibido, a imagem aparece como uma forma de diamante que decresce exponencialmente a zero à medida que a distância da origem aumenta. Na maioria das tarefas de processamento de imagem, o PSF ideal é circularmente simétrico. Tais como o pillbox. Mesmo que as imagens digitalizadas sejam normalmente armazenadas e processadas no formato retangular de linhas e colunas, é desejável modificar a imagem da mesma forma em todas as direções. Isso levanta a questão: existe um PSF que é circularmente simétrico e separável? A resposta é, sim, mas há apenas um, o Gaussiano. Conforme ilustrado na Fig. 24-7, uma imagem gaussiana bidimensional tem projeções que também são gaussianas. A imagem ea projeção Gaussianos têm o mesmo desvio padrão. Para convolver uma imagem com um kernel de filtro separável, convolve cada linha na imagem com a projeção horizontal. Resultando em uma imagem intermediária. Em seguida, convolve cada coluna dessa imagem intermediária com a projeção vertical do PSF. A imagem resultante é idêntica à convolução direta da imagem original e do kernel do filtro. Se você gosta, convolve as colunas primeiro e depois as linhas o resultado é o mesmo. A convolução de uma imagem N vezes N com um kernel de filtro M vezes M requer um tempo proporcional a N 2 M 2. Em outras palavras, cada pixel na imagem de saída depende de todos os pixels no kernel do filtro. Em comparação, a convolução por separabilidade requer apenas um tempo proporcional a N2M. Para kernels de filtro que são centenas de pixels de largura, esta técnica reduzirá o tempo de execução por um fator de centenas. As coisas podem ficar ainda melhor. Se você estiver disposto a usar um PSF retangular (Fig. 24-5) ou um PSF exponencial de dupla face (Fig. 24-6), os cálculos são ainda mais eficientes. Isso ocorre porque as circunvoluções unidimensionais são o filtro de média móvel (Capítulo 15) e o filtro unipolar bidirecional (Capítulo 19), respectivamente. Ambos os filtros unidimensionais podem ser rapidamente realizados por recursão. Isto resulta num tempo de convolução da imagem proporcional a apenas N2. Completamente independente do tamanho do PSF. Em outras palavras, uma imagem pode ser convolvida com um PSF tão grande quanto necessário, com apenas algumas operações inteiras por pixel. Por exemplo, a convolução de uma imagem 512 x 512 requer apenas algumas centenas de milissegundos em um computador pessoal. Isso é rápido Não gosto da forma desses dois núcleos de filtro Convoluir a imagem com um deles várias vezes para aproximar um PSF Gaussiano (garantido pelo Teorema do Limite Central, Capítulo 7). Estes são grandes algoritmos, capazes de arrebatar o sucesso das mandíbulas da falha. Eles valem a pena lembrar. O cientista e engenheiros guia para processamento de sinal digital Por Steven W. Smith, Ph. D. Capítulo 6: Convolução Vamos resumir este modo de entender como um sistema altera um sinal de entrada para um sinal de saída. Primeiro, o sinal de entrada pode ser decomposto em um conjunto de impulsos, cada um dos quais pode ser visto como uma função delta escalada e deslocada. Em segundo lugar, a saída resultante de cada impulso é uma versão escalonada e deslocada da resposta ao impulso. Em terceiro lugar, o sinal de saída global pode ser encontrado adicionando estas respostas de impulso escalonadas e deslocadas. Em outras palavras, se conhecemos uma resposta de impulso de sistemas, então podemos calcular qual será a saída para qualquer possível sinal de entrada. Isso significa que sabemos tudo sobre o sistema. Não há nada mais que se possa aprender sobre as características de um sistema linear. (No entanto, em capítulos posteriores mostraremos que essas informações podem ser representadas em diferentes formas). A resposta ao impulso passa por um nome diferente em algumas aplicações. Se o sistema considerado é um filtro. A resposta ao impulso é chamada de kernel do filtro. O núcleo da convolução. Ou simplesmente, o kernel. No processamento de imagem, a resposta ao impulso é chamada de função de propagação de pontos. Embora esses termos sejam usados de maneiras ligeiramente diferentes, todos significam a mesma coisa, o sinal produzido por um sistema quando a entrada é uma função delta. Convolução é uma operação matemática formal, assim como multiplicação, adição e integração. A adição toma dois números e produz um terceiro número. Enquanto convolução leva dois sinais e produz um terceiro sinal. Convolução é usado na matemática de muitos campos, tais como probabilidade e estatística. Em sistemas lineares, a convolução é usada para descrever a relação entre três sinais de interesse: o sinal de entrada, a resposta de impulso e o sinal de saída. A Figura 6-2 mostra a notação quando a convolução é usada com sistemas lineares. Um sinal de entrada, x n, entra em um sistema linear com uma resposta de impulso, h n, resultando em um sinal de saída, y n. Na forma de equação: x n h n y n. Expressa em palavras, o sinal de entrada convoluído com a resposta ao impulso é igual ao sinal de saída. Assim como a adição é representada pelo mais,, ea multiplicação pela cruz, vezes, a convolução é representada pela estrela,. É lamentável que a maioria das linguagens de programação também usam a estrela para indicar a multiplicação. Uma estrela em um programa de computador significa multiplicação, enquanto uma estrela em uma equação significa convolução. A Figura 6-3 mostra a convolução sendo usada para filtragem passa-baixa e passa-alta. O sinal de entrada de exemplo é a soma de dois componentes: três ciclos de uma onda senoidal (representando uma alta freqüência), mais uma rampa lentamente crescente (composta de baixas freqüências). Em (a), a resposta de impulso para o filtro passa-baixo é um arco liso, resultando apenas na forma de onda de rampa que varia lentamente sendo passada para a saída. Similarmente, o filtro de passagem alta, (b), permite que apenas a sinusóide com mudança mais rápida passe. A Figura 6-4 ilustra dois exemplos adicionais de como a convolução é usada para processar sinais. O atenuador inversor, (a), inverte o sinal de cima para baixo e reduz a sua amplitude. A derivada discreta (também chamada de primeira diferença), mostrada em (b), resulta em um sinal de saída relacionado com a inclinação do sinal de entrada. Observe os comprimentos dos sinais nas Figs. 6-3 e 6-4. Os sinais de entrada são de 81 amostras de comprimento, enquanto que cada resposta de impulso é composta de 31 amostras. Na maioria dos aplicativos DSP, o sinal de entrada é de centenas, milhares ou mesmo milhões de amostras de comprimento. A resposta ao impulso é geralmente muito mais curta, por exemplo, alguns pontos para algumas centenas de pontos. A matemática por trás convolução doesnt restringir quanto tempo esses sinais são. No entanto, especifica o comprimento do sinal de saída. O comprimento do sinal de saída é igual ao comprimento do sinal de entrada, mais o comprimento da resposta ao impulso, menos um. Para os sinais nas Figs. 6-3 e 6-4, cada sinal de saída é: 81 31 - 1 111 amostras de comprimento. O sinal de entrada é executado da amostra 0 a 80, a resposta de impulso da amostra 0 a 30 eo sinal de saída da amostra 0 a 110. Agora chegamos à matemática detalhada da convolução. Conforme utilizado no Processamento de Sinal Digital, a convolução pode ser entendida de duas formas distintas. O primeiro analisa a convolução do ponto de vista do sinal de entrada. Isso envolve analisar como cada amostra no sinal de entrada contribui para muitos pontos no sinal de saída. A segunda via analisa a convolução do ponto de vista do sinal de saída. Isso examina como cada amostra no sinal de saída recebeu informações de muitos pontos no sinal de entrada. Tenha em mente que essas duas perspectivas são maneiras diferentes de pensar sobre a mesma operação matemática. O primeiro ponto de vista é importante porque fornece uma compreensão conceitual de como a convolução pertence ao DSP. O segundo ponto de vista descreve a matemática da convolução. Isso tipifica uma das tarefas mais difíceis que você vai encontrar no DSP: fazer o seu entendimento conceitual se encaixam com a mistura de matemática usada para comunicar as idéias.
A OANDA usa cookies para tornar nossos sites fáceis de usar e personalizados para nossos visitantes. Os cookies não podem ser usados para identificá-lo pessoalmente. Ao visitar o nosso site, você aceita o uso de cookies da OANDA8217 de acordo com nossa Política de Privacidade. Para bloquear, excluir ou gerenciar cookies, visite aboutcookies. org. A restrição de cookies impedirá que você se beneficie de algumas das funcionalidades do nosso site. Baixe o nosso Mobile Apps Select conta: ampltiframe src4489469.fls. doubleclick. netactivityisrc4489469typenewsi0catoanda0u1fxtradeiddclatdcrdidtagforchilddirectedtreatmentord1num1 mcesrc4489469.fls. doubleclick. netactivityisrc4489469typenewsi0catoanda0u1fxtradeiddclatdcrdidtagforchilddirectedtreatmentord1num1 width1 height1 frameborder0 styledisplay: nenhum mcestyledisplay: noneampgtampltiframeampgt Como usar Fibonacci em linhas de retração de Fibonacci Forex são baseadas na seqüência de Fibonacci e são considerados Um indicador técnico pred...
Comments
Post a Comment