Usando o MATLAB, como posso encontrar a média móvel de 3 dias de uma coluna específica de uma matriz e acrescentar a média móvel a essa matriz que estou tentando calcular a média móvel de 3 dias de baixo para cima da matriz. Eu forneci o meu código: Dada a seguinte matriz e máscara: Eu tentei implementar o comando conv, mas estou recebendo um erro. Aqui está o comando conv que venho tentando usar na segunda coluna da matriz a: A saída que desejo é dada na seguinte matriz: Se você tiver alguma sugestão, eu agradeceria muito. Obrigado Para a coluna 2 da matriz a, estou calculando a média móvel de 3 dias da seguinte maneira e colocando o resultado na coluna 4 da matriz a (renomeiei a matriz a como 39desiredOutput39 apenas para ilustração). A média de 3 dias de 17, 14, 11 é 14 a média de 3 dias de 14, 11, 8 é 11 a média de 3 dias de 11, 8, 5 é 8 e a média de 3 dias de 8, 5, 2 é 5. Não há valor nas duas linhas inferiores da quarta coluna porque o cálculo da média móvel de três dias começa na parte inferior. A saída 39valid39 não será mostrada até pelo menos 17, 14 e 11. Espero que isso faça sentido ndash Aaron Jun 12 13 at 1:28 Em geral, ajudaria se você mostrasse o erro. Nesse caso, você está fazendo duas coisas erradas: primeiro, sua convolução precisa ser dividida por três (ou o comprimento da média móvel). Segundo, observe o tamanho de c. Você não pode simplesmente encaixar c em um. A maneira típica de obter uma média móvel seria usar o mesmo: mas isso não parece com o que você quer. Em vez disso, você é forçado a usar algumas linhas: O Cientista e o Guia dos Engenheiros para o Processamento Digital de Sinais Steven W. Smith, Ph. D. Como o nome indica, o filtro de média móvel opera calculando a média de um número de pontos do sinal de entrada para produzir cada ponto no sinal de saída. Na forma de equação, isso está escrito: Onde está o sinal de entrada, é o sinal de saída e M é o número de pontos na média. Por exemplo, em um filtro de média móvel de 5 pontos, o ponto 80 no sinal de saída é dado por: Como alternativa, o grupo de pontos do sinal de entrada pode ser escolhido simetricamente em torno do ponto de saída: . 15-1 de: j 0 a M -1, a: j - (M -1) / 2 a (M -1) / 2. Por exemplo, em um filtro de média móvel de 10 pontos, o índice, j. pode executar de 0 a 11 (média de um lado) ou -5 a 5 (média simétrica). A média simétrica requer que M seja um número ímpar. A programação é um pouco mais fácil com os pontos em apenas um lado, no entanto, isso produz um deslocamento relativo entre os sinais de entrada e saída. Você deve reconhecer que o filtro de média móvel é uma convolução usando um kernel de filtro muito simples. Por exemplo, um filtro de 5 pontos tem o kernel do filtro: 82300, 0, 1/5, 1/5, 1/5, 1/5, 1/5, 0, 08230. Ou seja, o filtro da média móvel é uma convolução do sinal de entrada com um pulso retangular com uma área de um. A Tabela 15-1 mostra um programa para implementar o filtro de média móvel. A filtragem de imagens pode ser agrupada em dois, dependendo dos efeitos: Filtros passa baixa (Suavização) A filtragem passa baixa (também conhecida como suavização) é usada para remover ruídos de freqüência imagem digital. Os filtros low-pass usualmente empregam operador de janela móvel que afeta um pixel da imagem de cada vez, alterando seu valor por alguma função de uma região local (janela) de pixels. O operador se move sobre a imagem para afetar todos os pixels da imagem. Filtros de alta freqüência (detecção de borda, nitidez) Um filtro de alta freqüência pode ser usado para tornar uma imagem mais nítida. Estes filtros enfatizam detalhes finos na imagem - o oposto do filtro de baixa passagem. A filtragem passa-alta funciona da mesma forma que a filtragem passa-baixa, usa apenas um kernel de convolução diferente. Ao filtrar uma imagem, cada pixel é afetado por seus vizinhos, e o efeito líquido da filtragem é mover informações ao redor da imagem. Neste capítulo, use esta imagem: bogotobogo site search: bogotobogo site search: A filtragem média é fácil de implementar. É usado como um método de suavização de imagens, reduzindo a quantidade de variação de intensidade entre um pixel e o seguinte, resultando na redução do ruído nas imagens. A idéia de filtragem de média é simplesmente substituir cada valor de pixel em uma imagem pelo valor médio (médio) de seus vizinhos, incluindo ele próprio. Isso tem o efeito de eliminar os valores de pixels que não são representativos de seus arredores. A filtragem média geralmente é considerada como um filtro de convolução. Como outras convoluções, ela é baseada em torno de um kernel, que representa a forma e o tamanho da vizinhança a ser amostrada ao calcular a média. Muitas vezes é usado um kernel 3 vezes 3 quadrados, como mostrado abaixo: O mf é o filtro médio: O filter2 () é definido como: Y filter2 (h, X) filtra os dados em X com o filtro FIR bidimensional no matriz h. Ele calcula o resultado, Y, usando a correlação bidimensional e retorna a parte central da correlação com o mesmo tamanho de X. Ele retorna a parte de Y especificada pelo parâmetro shape. shape é uma string com um desses valores: full. Retorna a correlação bidimensional completa. Nesse caso, Y é maior que X. (padrão) Retorna a parte central da correlação. Nesse caso, Y é do mesmo tamanho que X. válido. Retorna apenas as partes da correlação que são calculadas sem bordas preenchidas com zero. Neste caso, Y é menor que X. Agora queremos aplicar o kernel definido na seção anterior usando filter2 (): Podemos ver que a imagem filtrada (à direita) foi desfocada um pouco em comparação com a entrada original (esquerda) . Como mencionado anteriormente, o filtro de baixa passagem pode ser usado para a proteção de ruído. Vamos testá-lo. Primeiro, para tornar a entrada um pouco suja, borrifamos um pouco de pimenta e sal na imagem e, em seguida, aplicamos o filtro médio: ela tem algum efeito sobre o ruído de sal e pimenta, mas não muito. Isso só os fez desfocados. Que tal tentar o filtro mediano embutido no Matlabs? Pesquisa no site bogotobogo: pesquisa no site bogotobogo: Median filter - medfilt2 () Aqui está o script: Muito melhor. Ao contrário do filtro anterior, que está apenas usando o valor médio, desta vez usamos mediana. A filtragem mediana é uma operação não linear frequentemente usada no processamento de imagens para reduzir o ruído de sal e pimenta. Observe também que o medfilt2 () é o filtro 2-D, portanto, ele só funciona para a imagem em tons de cinza. Para remover o ruído da imagem RGB, por favor, vá até o final deste capítulo: Removendo o ruído na imagem RGB. O Matlab fornece um método para criar um filtro 2-D predefinido. Seu fspecial (): h fspecial (type) cria um filtro bidimensional h do tipo especificado. Ele retorna h como um kernel de correlação, que é o formato apropriado para usar com imfilter (). O tipo é uma string com um desses valores: Processamento de imagem e vídeo em Matlab OpenCV 3 - processamento de vídeo de imagem Processamento de imagem e vídeo em OpenCV 3 com Python
No comments:
Post a Comment