1

어떤 오브젝트의 모양을 감지하고 있습니다. 배경이 흰색이고 전경/물체가 검은 색 인 이진 이미지가 있습니다. 검정색의 전경에서 물체의 모양을 감지해야합니다.이미지 처리에서 모양 감지

어떻게 할 수 있습니까? 모양이 사람/자동차/상자 등 도움이 될 수 있습니다

+0

축척/회전 불변성이 될까요? 게임을위한 것이거나 실제 사진을 고려해야합니까? –

+0

무언가의 모양을 찾는 것이 많은 다른 것을 의미 할 수 있으므로 모양을 알아내는 궁극적 인 목표가 무엇인지 말해 주시면이 질문에 더 많은 답변을 얻으실 수 있습니다. 양식은 기능을 따른다. – amphetamachine

답변

2

나는 암페타민이 말한 것처럼 최종 목표는 확실하지 않지만 셰이프를 감지하는 꽤 일반적인 접근 방법은 cvFindContours 이진 이미지를 반환하고 'CvContour'(사실 cvSeq) 집합을 반환합니다. 2 진 이미지는 이미지를 thresholding (cvThreshold)하여 매우 간단하게 검색 할 수 있습니다. opencv src 디렉토리의 sample /에서 contours.c 예제를 확인하십시오. 당신이 윤곽의 인코딩을 일단

cvThreshold(g_gray, g_gray, g_thresh, 255, CV_THRESH_BINARY); 
cvFindContours(g_gray, g_storage, &contours); 
cvZero(g_gray); 
if(contours){ 
    cvDrawContours(
     g_gray, 
     contours, 
     cvScalarAll(255), 
     cvScalarAll(255), 
     100); 
} 
cvShowImage("Contours", g_gray); 

당신이 cvMatchShapes이 윤곽을를 사용할 수 있습니다

Noah (2009) opencv tutorial

이 샘플 코드는 당신에게 일반적인 아이디어를 줄 것이다 :뿐만 아니라이 링크를 확인 이러한 윤곽선들 사이의 유사성 척도를 반환합니다.

희망이 접근 방식 당신에게 머리를 시작 제공!

2

정확한 모양 탐지를 위해 당신은 하아르 검출을 사용하거나 K 가장 가까운 이웃을 사용해야합니다. Haar 탐지는 매우 정확할 수 있지만 설정하는 데 오랜 시간이 걸립니다. K 가장 가까운 이웃은 설정이 쉽지만 정확하지는 않습니다. this youtube video을 확인하십시오. 이 사람은 KNN을 사용하여 다른 손짓을 감지합니다. 비교 이미지는 기본적으로 검은 얼룩입니다. KNN의 나쁜 점은 프로그램을 실행하는 데 더 많은 리소스가 필요하다는 것입니다. 그러나 haar 탐지를 사용하면 haartraining.exe를 사용하여 계단식 XML 파일을 만들 때 주요 처리가 이미 수행되었습니다.