Pergunta

Esta é uma questão bastante ampla; que ferramentas / existem bibliotecas para tirar duas fotografias que não são idênticos, mas extremamente semelhantes, e identificar as diferenças específicas entre eles?

Um exemplo seria para tirar uma foto do meu sofá na sexta-feira depois da minha namorada é de limpeza feito e antes de um longo fim de semana de ter amigos, beber e jogar banda de rock. Dois dias depois eu dar uma segunda foto do sofá; iluminação é idêntico, o sofá não se moveu um milímetro, e eu uso um tripé em um local fixo.

Quais as ferramentas que eu poderia usar para gerar uma imagem de um terceiro heatmap das diferenças diff das imagens, ou? Existem algumas ferramentas para .NET?

Foi útil?

Solução

Confira artigo de Andrew Kirillov em CodeProject. Ele escreveu uma aplicação C # usando o AForge.NET biblioteca de visão computacional para detectar movimento. No site AForge.NET, há um discussão de duas diferenças quadro para detecção de movimento.

Outras dicas

Isso depende em grande parte sobre o formato e compressão de imagem. Mas, no final do dia, você provavelmente está tomando duas varreduras e comparando-pixel por pixel.

Dê uma olhada na Perceptual Utility Diferença Imagem .

A maneira mais óbvia de ver cada pequena diferença, normalmente quase imperceptível, seria XOR os dados de pixel. Se a iluminação é ainda um pouco diferente, porém, pode ser muito. Diferenciação (subtração) os dados de pixel pode ser mais o que você está procurando, dependendo de quão sutil são as diferenças.

Um lugar para começar é com uma imagem rica processamento de biblioteca, como IM . Você pode se envolver com seus operadores de forma interativa com a ferramenta IMlab , chamá-lo diretamente a partir de C ou C ++, ou usar a realmente ligação decente Lua para dirigi-lo da Lua. Ele suporta uma ampla gama de operações em bitmaps, bem como uma biblioteca extensível de formatos de arquivo.

Mesmo que você não tenha deliberadamente se mudou alguma coisa, você pode querer usar um algoritmo como SIFT para obter o alinhamento de boa qualidade sub-pixel entre os quadros. A menos que você deseja para tratar a câmera como fixo e detectar o movimento do sofá também.

Eu escrevi este aplicativo .NET livre usando o kit de ferramentas minha empresa faz (DotImage). Ele tem um algoritmo muito simples, mas o código fonte é aberto se você quiser jogar com ele -. Você pode adaptar o algoritmo para .NET classes de imagem se você não quiser comprar uma cópia do DotImage

http: / /www.atalasoft.com/cs/blogs/31appsin31days/archive/2008/05/13/image-difference-utility.aspx

É uma pergunta interessante. Eu não posso encaminhá-lo para quaisquer bibliotecas específicas, mas o processo que você está perguntando sobre é basicamente um caso mínima de compensação de movimento. Esta é a maneira que o MPEG (MP4, DIVX, qualquer que seja) de vídeo consegue vídeo compressa de modo extremamente bem; você pode olhar para MPEG para algumas informações sobre a forma como esses algoritmos de compensação de movimento são implementadas.

Uma outra coisa a ter em mente; compressão JPEG é uma compressão baseada em bloco; grande parte do benefício que MPEG traz de coisas é realmente fazer uma comparação bloco. Se a maior parte da sua imagem (dizem que o fundo) é o mesmo de uma imagem para a seguinte, os blocos não será alterada. É uma maneira rápida de reduzir a quantidade de dados necessários para ser comparado.

apenas usar as classes de imagem NET, criar um novo bitmap () x 2 e olhar para o R & G & valores B de cada pixel, você também pode olhar para o A valores (Alpha / transparência) se você quiser ao determinar diferença.

também uma nota, usando o método getPixel (y, x) pode ser muito lento, não há outra maneira de obter a imagem inteira (menos elegante) e para cada ing por ele mesmo se bem me lembro foi chamado o getBitmap ou algo semelhante, olhar nas classes de imagem / bitmap e ler alguns titui eles realmente são tudo que você precisa e não são assim tão difícil de usar, não vá terceiros, a menos que você tem a.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top