2013-05-21 4 views
0

OpenCV에서 입력 이미지가 회색 이미지로 변환되는 SURF 기능을 사용하고 있습니다.SURF 및 OpenSURF를 컬러 이미지로 변환

OpenSURF의 문서를 살펴보면 회색 음영이 아니라는 것을 깨달았습니다.

내 혼란은 모든 이미지 형식 (YUV, HSV, RGB)에 SURF를 적용 할 수 있습니까? 그렇지 않으면이를 달성하기 위해 프로그램을 변경하고 수정해야합니까?

답변

1

대부분의 기능 감지기는 이미지 패치의 가장자리 패턴을 분석하기 때문에 그레이 스케일에서 작동합니다. 사용자가 언급 한 색상 형식의 단일 색상 채널에서 SURF를 실행할 수 있습니다. 즉, YUV 이미지에서 Y, U 또는 V 또는 HSV 이미지에서 H, S 또는 V로 실행할 수 있습니다. OpenSURF가 이것을 어떻게 처리하는지 잘 모르지만 내부적으로 그레이 스케일 이미지를 사용해야합니다.

+0

추가적으로 OpenSURF는 계산이 완료되면 바로 회색 음영 변환을 수행합니다 적분 영상 (검출기에 의해 필요함). 'IplImage * img = getGray (source);'를 수행하는'IplImage * Integral (IplImage * source)'를 보라. – deltheil

0

단일 채널이 아닌 OpenSURF에 이미지를 지정하면 OpenCV와 마찬가지로 cvtColor(src, dst, CV_BGR2GRAY)이 호출됩니다. YUV, HSV, Lab 등에서 3 채널 이미지를 전달하면 이미지에 부적절한 색상 변환이 적용되므로 문제가 심각하게 발생합니다 ..

+0

따라서 나는 예를 들어 YUV를 사용하고 있다면 Y 채널을 그냥 통과해야합니다. 그렇지 않으면 틀릴 것입니다. – rish

+0

Y 채널 (즉 단일 채널 이미지) 만 전달하면 괜찮습니다 (색상 변환이 적용되지 않음). BTW에서는 cv :: split()을 사용하여 3 채널 YUV 이미지를 3 x 단일 채널 이미지를 포함하는 벡터로 바꿀 수 있습니다. – Bull