Eu tenho que capturar a cor da pele independentemente da iluminação. Eu usei os seguintes critérios (usando hsv e rgb), mas não está funcionando:
int h = get_hue(...);
int s = get_saturation(...);
int r = get_red_component(...);
int g = get_green_component(...);
int b = get_blue_component(...);
if ((h<38)&&(h>6)&&(s>0.23)&&(s<0.68)){
// skin color
}
else if ((r>95) && (g>40) && (b>20) &&
((maximum(r,g,b)-minimum(r,g,b))>15) &&
(abs(r-g)>15)&&(r>g)&&(r>b)){
// also skin color
}
Funciona de manhã quando minha pele está iluminada, mas à noite não funciona.
Qualquer ajuda será apreciada. Desde já, obrigado. (PS - minha pele não é branca.)
image-processing
opencv
object-recognition
Roney Island
fonte
fonte
Respostas:
Na minha experiência, o melhor método para isso é convertê-lo no espaço de cores do laboratório. L representa a luz, e a e b são independentes da luz. O OpenCV suporta conversão de escala de cores do laboratório.
fonte
Para este caso especial, recomendo a leitura do modelo LAB Color.
E, em relação ao modelo LAB Color, leia o Delta E. A distância entre duas cores. Mais detalhes sobre o espaço de cores podem ser encontrados aqui: http://www.codeproject.com/Articles/613798/Colorspaces-and-Conversions
Eu nunca tentei o modelo de cores LAB via OpenCV, pois é um incômodo converter de RGB para LAB e vice-versa (requer uma etapa imediata).
Mas eu explorei o Delta E no MatLab com grande sucesso. É necessário selecionar a capa primeiro, desenhar um pequeno ROI no vídeo / imagem e o programa encontrará exatamente o mesmo tom de cor da capa que você selecionou através do ROI.
Outra opção também é olhar para a textura. Uma breve visualização aqui: http://books.google.com.sg/books?id=bRlk_WjfITIC&pg=PA598&lpg=PA598&dq=skin+thresholding+from+texture&source=bl&ots=28fE0livyh&sig=8EeQTLFCc-JBf79&hl=pt_BR = 0CDUQ6AEwAQ # v = uma página & q = skin% 20thresholding% 20from% 20texture & f = false
Isso é basicamente o treinamento de um banco de dados de imagens. Comente aqui se precisar de ajuda para treinar o banco de dados de imagens ou a conversão do ColorSpace. Um pouco ocupado, então a resposta são apenas sugestões que você pode fazer. Felicidades.
fonte
tente isto:
fonte