Oi, este será um artigo muito simples, mas você vai achar muito útil. Trata-se de Extração de Fundo de um Vídeo. Suponha que você tenha um vídeo de filmagem de tráfego, pode ser uma coisa assim. Tráfego na Índia. E você é convidado a encontrar um fundo aproximado. Ou qualquer coisa assim. A extração de fundo vem importante no rastreamento de objetos. Se você já possui uma imagem do fundo nu, então é simples. Mas, em muitos casos, você não terá essa imagem e, então, você terá que criar uma. É aí que o Running Average é útil. (Eu pensei sobre isso quando um cara fez uma pergunta no SOF. Link) A função que usamos aqui para encontrar Running Average é cv2.accumulateWeighted (). Por exemplo, se estamos assistindo um vídeo, continuamos alimentando cada quadro para esta função, e a função continua encontrando as médias de todos os quadros alimentados a ele de acordo com a relação abaixo: src não é senão a nossa imagem de origem. Pode ser em escala de cinza ou imagem colorida e ponto flutuante de 8 bits ou 32 bits. Dst é a imagem de saída ou acumulador com os mesmos canais que a da imagem de origem, e é um ponto flutuante de 32 bits ou 64 bits. Além disso, devemos declarar primeiro um valor que será tomado como valor inicial. Alfa é o peso da imagem de entrada. De acordo com o Docs, o alfa regula a velocidade de atualização (o quão rápido o acumulador 8220forgets8221 sobre imagens anteriores). Em palavras simples, se o alfa é um valor maior, a imagem média tenta pegar mudanças muito rápidas e curtas nos dados. Se for menor valor, a média fica lenta e não considera mudanças rápidas nas imagens de entrada. Vou explicar um pouco com a ajuda de imagens no final do artigo. No código acima, estabeleci duas médias, uma com maior valor alfa e outra com menor valor alfa para que você possa entender o efeito de alfa. No início, ambos estão configurados para o quadro inicial da captura. E em loop eles são atualizados. Você pode ver alguns resultados no link SOF que eu já forneci. (Eu forneço esses resultados aqui, você pode verificar o código e o valor alfa lá): usei minha webcam e economize o quadro original e a média de execução em um determinado instante. Este é um quadro de um vídeo de tráfego típico feito por uma câmera estacionária. Como você pode ver, um carro está indo na estrada, e a pessoa está tentando atravessar a estrada em um determinado instante de tempo. Mas veja a média de corrida naquele momento. Não há pessoa e carro nesta imagem (Na verdade, está lá, tenha uma aparência próxima, então você vai ver, e a pessoa é mais clara do que o carro, já que o carro está se movendo muito rápido e em toda a imagem, não tem muito Efeito em média, mas a pessoa está lá por um longo tempo, já que ele está lento e se movendo através da estrada.) Agora precisamos ver o efeito do alfa sobre essas imagens. Imagens emocionantes Aprenda a: Borrar imagens com vários filtros de passagem baixa Aplicar Filtros personalizados para imagens (convolução 2D) Convolução 2D (Filtragem de imagens) Quanto aos sinais unidimensionais, as imagens também podem ser filtradas com vários filtros passa-baixa (LPF), filtros de passagem alta (HPF), etc. Um LPF Ajuda a remover o ruído ou a imagem borrada. Um filtro HPF ajuda a encontrar bordas em uma imagem. OpenCV fornece uma função, cv2.filter2D (). Para transformar um kernel com uma imagem. Como exemplo, tentaremos um filtro de média em uma imagem. Um kernel de filtro de média de 5x5 pode ser definido da seguinte maneira: a filtragem com o núcleo acima resulta na seguinte execução: para cada pixel, uma janela 5x5 está centrada neste pixel, todos os pixels que se enquadram nesta janela são resumidos e o resultado é Então dividido por 25. Isso equivale a calcular a média dos valores de pixels dentro dessa janela. Esta operação é executada para todos os pixels na imagem para produzir a imagem filtrada de saída. Experimente este código e verifique o resultado: Borrão da imagem (Suavização de imagem) A imagem desfocada é conseguida convolvendo a imagem com um kernel de filtro de passagem baixa. É útil para remover o ruído. Ele realmente remove o conteúdo de alta freqüência (por exemplo: ruído, bordas) da imagem, resultando em bordas embaçadas quando este é um filtro aplicado. (Bem, existem técnicas de desfocagem que não desfocam bordas). OpenCV fornece principalmente quatro tipos de técnicas de desfocagem. 1. Averaging Isso é feito convolvendo a imagem com um filtro de caixa normalizado. Ele simplesmente leva a média de todos os pixels na área do kernel e substitui o elemento central por essa média. Isso é feito pela função cv2.blur () ou cv2.boxFilter (). Verifique os documentos para obter mais detalhes sobre o kernel. Devemos especificar a largura e a altura do kernel. Um filtro de caixa normalizado de 3x3 ficaria assim: se você não quiser usar um filtro de caixa normalizado, use cv2.boxFilter () e passe o argumento normalizeFalse para a função. Verifique a demonstração da amostra abaixo com um kernel de tamanho 5x5: 2. Filtragem Gaussiana Nesta abordagem, em vez de um filtro de caixa consistindo em coeficientes de filtro iguais, é usado um kernel Gaussiano. É feito com a função, cv2.GaussianBlur (). Devemos especificar a largura e altura do kernel, que deve ser positivo e estranho. Também devemos especificar o desvio padrão nas direções X e Y, sigmaX e sigma, respectivamente. Se apenas sigmaX for especificado, sigmaY é tomado como igual a sigmaX. Se ambos forem dados como zeros, eles são calculados a partir do tamanho do kernel. A filtragem gaussiana é altamente eficaz na remoção do ruído gaussiano da imagem. Se você quiser, você pode criar um kernel gaussiano com a função, cv2.getGaussianKernel (). O código acima pode ser modificado para o borrão Gaussiano: 3. Filtragem Mediana Aqui, a função cv2.medianBlur () calcula a mediana de todos os pixels sob a janela do kernel e o pixel central é substituído por esse valor mediano. Isso é altamente eficaz na remoção de barulho de sal e pimenta. Uma coisa interessante a notar é que, nos filtros gaussianos e de caixa, o valor filtrado para o elemento central pode ser um valor que pode não existir na imagem original. No entanto, este não é o caso da filtragem mediana, uma vez que o elemento central é sempre substituído por algum valor de pixel na imagem. Isso reduz o ruído de forma eficaz. O tamanho do kernel deve ser um inteiro ímpar positivo. Nesta demo, adicionamos um ruído 50 à nossa imagem original e usamos um filtro mediano. Verifique o resultado: 4. Filtragem bilateral Como observamos, os filtros que apresentamos anteriormente tendem a desfocar bordas. Este não é o caso do filtro bilateral, cv2.bilateralFilter (). Que foi definido para, e é altamente eficaz na remoção de ruído enquanto preserva as arestas. Mas a operação é mais lenta em comparação com outros filtros. Nós já vimos que um filtro Gaussiano leva o bairro ao redor do pixel e encontra sua média ponderada gaussiana. Este filtro Gaussiano é uma função do espaço sozinho, ou seja, pixels próximos são considerados durante a filtragem. Não considera se os pixels têm quase o mesmo valor de intensidade e não considera se o pixel está em uma borda ou não. O efeito resultante é que os filtros gaussianos tendem a desfocar bordas, o que não é desejável. O filtro bilateral também usa um filtro gaussiano no domínio espacial, mas também usa um componente de filtro gaussiano (multiplicativo) (que é uma função das diferenças de intensidade de pixels). A função gaussiana do espaço garante que apenas os pixels são 8216 vizinhos do espaço 8217 são considerados para filtragem, enquanto o componente gaussiano aplicado no domínio da intensidade (uma função gaussiana das diferenças de intensidade) assegura que apenas aqueles pixels com intensidades semelhantes aos do pixel central ( 8216intensity neighbors8217) estão incluídos para calcular o valor de intensidade desfocada. Como resultado, este método preserva bordas, uma vez que, para os pixels situados perto das bordas, pixels vizinhos colocados no outro lado da borda e, portanto, exibindo variações de grande intensidade quando comparados com o pixel central, não serão incluídos para desfocagem. A amostra abaixo demonstra o uso de filtragem bilateral (Para detalhes sobre argumentos, veja os documentos OpenCV). Observe que a textura na superfície desapareceu, mas as arestas ainda são preservadas.
Dc Metatrader Indicator Descrição: Você pode fazer uso de um indicador Dc Metatrader incrível exatamente onde você pode baixar totalmente grátis. Este tipo de indicador de divisas funciona bem com o Metatrader 4, bem como com o Metatrader 5. Este site provavelmente irá ajudá-lo a compreender todas as coisas que você precisa descobrir sobre o indicador de divisas Dc. Independentemente das versões do Metatrader que você está utilizando, este indicador pode funcionar perfeitamente com praticamente todas as versões. Selecionar entre os vários tipos de indicadores de resistência de suporte Metatrader é possível em nossa seção de indicadores de resistência de suporte de sites. Não só que você possa tirar proveito da eficácia do Dc, seja feliz porque pode ser baixado gratuitamente. Para ser completamente persuadido, sinta-se livre para verificar a imagem adicionada. Isso apresenta a visão geral de como o Metatrader parecerá logo após a instalação. Atualmente, 1 pessoa hoje já baixou o indicad...
Comments
Post a Comment