Filtro médio móvel 2d


Criado em quarta-feira, 08 de outubro de 2008 20:04 Atualizado em quinta-feira, 14 de março de 2017 01:29 Escrito por Batuhan Osmanoglu Acessos: 41010 Média móvel em Matlab Muitas vezes eu me encontro na necessidade de prover os dados que eu tenho para reduzir o ruído um pouco pouco. Eu escrevi algumas funções para fazer exatamente o que eu quero, mas os matlabs criados na função de filtro funcionam muito bem também. Aqui vou escrever sobre dados em média 1D e 2D. O filtro 1D pode ser realizado usando a função de filtro. A função de filtro requer pelo menos três parâmetros de entrada: o coeficiente de numerador para o filtro (b), o coeficiente de denominador para o filtro (a) e os dados (X), é claro. Um filtro de média em execução pode ser definido simplesmente por: Para dados 2D, podemos usar a função Matlabs filter2. Para obter mais informações sobre como funciona o filtro, você pode digitar: Aqui está uma implementação rápida e suja de um filtro médio 16 por 16 em movimento. Primeiro precisamos definir o filtro. Como tudo o que queremos é contribuição igual de todos os vizinhos, podemos usar apenas a função. Nós dividimos tudo com 256 (1616), uma vez que não queremos alterar o nível geral (amplitude) do sinal. Para aplicar o filtro, podemos simplesmente dizer o seguinte. Abaixo estão os resultados para a fase de um interferograma SAR. Neste caso, Range está no eixo Y e o Azimuth é mapeado no eixo X. O filtro tinha 4 pixels de largura em alcance e 16 pixels de largura em Azimuth. Tenho uma matriz onde os valores discretos de onda senoidal são gravados e armazenados. Quero encontrar o máximo e o min da forma de onda. Uma vez que os dados de onda senoidal são tensões gravadas usando um DAQ, haverá algum ruído, então eu quero fazer uma média ponderada. Supondo que self. yArray contém meus valores de onda senoidal, aqui está o meu código até agora: Meu problema parece estar no segundo loop, onde, dependendo do tamanho da janela da média (filtro), eu quero resumir os valores na janela para tomar A média deles. Recebo um erro dizendo: Eu sou um EE com muito pouca experiência em programação, então qualquer ajuda seria muito apreciada perguntou 29 de maio 13 às 18:09 Paul, obrigado pela recomendação. No entanto, deve notar-se que, embora x: y não produza um erro, ele ganhou o resultado esperado no código OP39s. O OP precisaria usar sua correção, mas com yxfiltersize e retirado do loop ou a soma deve ser removida, com a indexação xy deixada no lugar. Ndash tom10 30 de maio 13 às 17:18 tom10, eu tenho certeza de que você está certo. Minha resposta foi principalmente interrompendo alguma intuição sobre o problema mais provável, não estou informado sobre o domínio do problema para saber a precisão do algoritmo real. É por isso que encaminhei o OP para a sua resposta. Ndash Paul Woolcock 30 de maio 13 às 17:22 As outras respostas descrevem corretamente seu erro, mas esse tipo de problema realmente exige o uso de numpy. Numpy irá correr mais rápido, seja mais eficiente em memória e seja mais expressivo e conveniente para esse tipo de problema. Heres um exemplo: se você não quer usar numpy, também deve notar que há um erro lógico no seu programa que resulta no TypeError. O problema é que na linha você está usando a soma dentro do loop onde você também está calculando a soma. Então, você precisa usar a soma sem o loop, ou encaminhar a matriz e adicionar todos os elementos, mas não os dois (e está fazendo ambos, ou seja, aplicando soma ao elemento da matriz indexada, o que leva ao erro no primeiro Lugar, colocar). Ou seja, aqui estão duas soluções: filtro médio ou categoria de filtro média. Desenvolvimento de software de processamento de sinal e imagem digital (DSP e DIP). Abstrato. O artigo é um guia prático para o filtro médio, ou a compreensão e implementação média do filtro. O artigo contém teoria, código-fonte C, instruções de programação e aplicação de amostra. 1. Introdução ao filtro médio, ou filtro médio do filtro médio. Ou filtro médio é um filtro de janela de classe linear, que suaviza o sinal (imagem). O filtro funciona como de passagem baixa. A idéia básica por trás do filtro é que qualquer elemento do sinal (imagem) tenha uma média em sua vizinhança. Para entender como isso é feito na prática, comecemos com a idéia da janela. 2. Filtrar a janela ou a máscara. Imagine, você deve ler uma carta e o que você vê em texto restrito por furo em um gabarito especial como este. Então, o resultado da leitura é som t. Ok, deixe-nos ler a carta novamente, mas com a ajuda de outro estêncil: agora o resultado da leitura é o som 240. Vamos fazer a terceira tentativa: agora você está lendo a letra t como som 952. O que acontece aqui Para dizer isso Em linguagem matemática, você está fazendo um elemento de operação (leitura) sobre (letra t). E o resultado (som) depende da vizinhança do elemento (letras próximas a t). E esse estêncil, que ajuda a retirar a vizinhança de elementos, é janela Sim, a janela é apenas um estêncil ou padrão, por meio do qual você está selecionando a vizinhança do elemento 0151 um conjunto de elementos em torno do dado 0151 para ajudá-lo a tomar uma decisão. Outro nome para janela de filtro é máscara 0151 máscara é um estêncil, que esconde elementos que não estamos prestando atenção. No nosso exemplo, o elemento em que estamos operando posiciona-se no lado esquerdo da janela, na prática, no entanto, sua posição usual é o centro da janela. Deixe-nos ver alguns exemplos de janelas. Em uma dimensão. FIG. 4. Janela ou máscara de tamanho 5 em 1D. Em duas dimensões. FIG. 5. Janela ou máscara de tamanho 3x3 em 2D. Em três dimensões. Pense em construir. E agora mdash sobre o quarto nesse edifício. A sala é como janela 3D, que corta algum subespaço de todo o espaço do edifício. Você pode encontrar a janela 3D em volume (voxel) processamento de imagem. 3. Compreendendo o filtro médio Agora, vejamos, como ldquota uma média entre os elementos vizinhança. A fórmula é simples 0151 resumir elementos e dividir a soma pelo número de elementos. Por exemplo, vamos calcular uma média para o caso, representada na fig. 7. FIG. 7. Tomando uma média. E isso é tudo. Sim, acabamos de filtrar o sinal 1D por meio do filtro. Realizemos currículo e anote instruções passo a passo para processamento por meio do filtro. Filtro médio ou algoritmo de filtro médio: Coloque uma janela sobre o elemento Pegue uma média de 0151 elementos resumidos e divida a soma pelo número de elementos. Agora, quando temos o algoritmo, é hora de escrever algum código mdash, vamos até a programação. 4. Programação de filtro médio 1D Nesta seção, desenvolvemos 1D filtro médio com janela de tamanho 5. Deixe-nos ter sinal 1D de comprimento N como entrada. O primeiro passo é a janela colocando 0151, fazemos isso alterando o índice do elemento principal: preste atenção, que estamos começando com o terceiro elemento e terminando com os últimos, mas dois. O problema é que não podemos começar com o primeiro elemento, porque neste caso, a parte esquerda da janela do filtro está vazia. Vamos discutir a seguir, como resolver esse problema. O segundo passo é tomar a média, ok: agora, digamos o algoritmo como função: O elemento de tipo pode ser definido como: 5. Bordas de tratamento Para todos os filtros de janela, há algum problema. Isso é um tratamento de borda. Se você colocar a janela sobre o primeiro (último) elemento, a parte esquerda (direita) da janela estará vazia. Para preencher a lacuna, o sinal deve ser estendido. Para o filtro médio, há uma boa idéia para estender o sinal ou a imagem simetricamente, assim: então, antes de passar o sinal para a nossa função de filtro média, o sinal deve ser estendido. Deixe-nos escrever o invólucro, o que faz todos os preparativos. Como você pode ver, nosso código leva em conta alguns problemas práticos. Antes de tudo, verificamos os nossos parâmetros de entrada. O sinal 0151 não deve ser NULL e o comprimento do sinal deve ser positivo: o segundo passo 0151 verificamos o caso N1. Este caso é especial, porque para construir a extensão precisamos de pelo menos dois elementos. Para o sinal de 1 elemento, o resultado é o próprio sinal. Além disso, preste atenção, nosso filtro médio funciona no local, se o resultado do parâmetro de saída for NULL. Agora, alocemos a memória para a extensão do sinal. E verifique a alocação de memória.

Comments

Popular Posts