Eu comecei a experimentar c ++ e opencv por causa de eu quero aprender o processamento de imagens.
Agora, meu primeiro exercício é criar um detector de pele com calcHist e calcBackProject .
Mas eu não entendo algumas coisas:
- a interpretação estatística do projeto de volta e por que ele é chamado de "projeto de volta"
- eu tenho bastante boa compreensão do que varia parâmetro está em
calcBackProject
. Mas eu estou realmente preso com o parâmetro de intervalos emcalcHist
função. - Para obter mais precisão na detecção, acho que seria bom usar a backgrojection em mais níveis: em cada canal de rgb ans em cada canal de hsv. Mas eu não sei como posso combinar os diferentes resultados de
calcBackProject
canais separados de rgb e hsv.
E acho que minha compreensão não-boa é causada pela falta de teoria do que estou fazendo com esses dois métodos (veja o primeiro ponto). Então, por favor me explique em inglês simples.
image-processing
opencv
histogram
nkint
fonte
fonte
Respostas:
Veja O que é projeção traseira nos tutoriais do openCV
Um histograma de imagem mede a distribuição de cores (e brilho) dos pixels em uma imagem.
Se você tirar uma imagem e identificar uma região de interesse, por exemplo. uma mão e calcule o histograma dos pixels nesse objeto.
Em seguida, pegue esse histograma e uma segunda imagem e, basicamente, inverta o processo - você escolhe os pixels na segunda imagem que correspondem ao histograma da primeira. É esse processo inverso que lhe dá o nome de retroprojeção.
Em seguida, você assume que as áreas da imagem na segunda imagem que têm a mesma distribuição de cores que um objeto na primeira imagem são uma imagem do mesmo objeto (ou similar).
fonte