2013-01-15 2 views
8

일부 이미지가있는 로고 (템플릿)와 일치 시키려고합니다. 내 이미지는 모두 색상이 자연스럽고 내가하고있는 방식은 openCV의 cvMatchTemplate()을 사용하고 원본 이미지 위에 템플릿 (로고)을 실행하는 것입니다. 템플릿을 여러 단계로 확장하여 가장 일치하는 항목을 찾습니다. 이미지에 디지털로 각인 된 로고 만 있고 현장에있는 로고는 찾지 못했습니다. 예 : (이미지가 내 작업의 표현과 명확성을 위해 순수하고 그래서 800 × 600 표준에 확장 해상도를 고정 아니하는 내가OpenCV 일치 템플릿

내 이미지 작업하고 이미지되지 않습니다 이미지 http://i56.tinypic.com/2v3j3wx.jpg에서 하늘 스포츠 검출 . 이제 내 소스 이미지 해상도가 300x300이라고 매우 나쁘면 결과는 매우 평범합니다. 템플릿 매개 변수에 CV_TM_CCOEFF_NORMED 메서드를 사용하고 정확한 일치도 점수가 매우 낮습니다 (0의 눈금에서 0.4로 낮습니다). ~ 1.0) 로고가 있는지 없는지 확실하게 말할 수 없게됩니다. 여기에 두 가지 질문이 있습니다.

1 - opencv 템플릿 매칭에서 어떻게 컬러 이미지를 처리합니까? 문서와 다른 추측은 각각의 채널에 대한 점수를 따로 계산하고 최상의 결과를 얻었습니다. 그렇다면 더 나은 결과를 위해 모든 세 채널을 고려하는 것이 더 나을 것입니다.

2 - 다른 대안! :)

어떤 것이 명확하지 않은지 알려주세요!

EDIT (추가 정보) : 의견에서 논의한대로, 나는 현재의 매칭 기법을 스케일링 된 템플릿 매칭으로 첨부하고 있습니다. 첨부 된 이미지는 테스트 목적으로 순수하고 내가 일치 소스 이미지 A screen shot from youtube 로고 이미지 Got from wikipedia 출력 이미지 사용하여 템플릿 (이미지가 proprieotry 그대로 게시 할 수 없습니다) 함께 일하고 이미지 내 실제 세트가 아닌 유의하시기 바랍니다 Red block indicating the best match wrt highest score

템플릿이 매치되었지만, 여기서 얻은 점수는이 가장 일치하는 점수가 0.59입니다. 상대적으로 좋은 경기 점수지만 좋은 로고가 존재하는지 여부를 알려주지는 못합니다. 내 테스트 이미지에서 화면의 로고가 투명 할 때 로고는 여전히 감지되지만 점수는 0.3-0.4로 낮습니다. SURF/SIFT를 사용하면 더 나은 결과를 얻을 수 있습니까?

EDIT (SURF 시도) opencv 공식 문서 (minHessian = 2000)에서 예제로 이미 제공된 SURF 코드를 실행하려고했습니다. link here 여기에 출력됩니다. 나는 2,3 포인트가 예상 경계 내에 것으로 보인다 (그것을 해석하는 방법을 잘 모르겠습니다.이 좋은 생각인가? 더 이상의 제안을? enter image description here 감사

+0

정규화 된 교차 상관 관계는 태스크. 두 이미지에서 키포인트 일치가 따라 오는 키포인트 검출기가 필요할 수 있습니다. 그런 일에 대한 한 가지 전형적인 방법은 서프라고합니다. 당신이 원하는 실제 이미지 (나쁜 이미지와 템플릿)를 포함시킬 수 있습니까? – mmgp

+0

답변 해 주셔서 감사합니다. 나는 SIFT/SURF 기법을 고려해 보았지만, 일부는 조언했다. 그것은 내 응용 프로그램의 과잉이었다. 그러나 SURF가 내 정밀도를 향상시킬 수 있는지 확인하고 싶습니다. SURF 샘플 코드를 읽는 것 외에 다른 작업을 수행하는 방법에 관해서는 머리를 숙이십시오. 이미지는 본질적으로 독점적이지만 자유롭게 사용할 수있는 이미지의 동작을 복제하고 문제에 대한 명확성을 위해 여기에 게시합니다. –

+0

SURF가 정밀도를 향상시키는 지 확인하려면 간단합니다. 정밀도를 향상시키는 지 확인하십시오. 누가 당신을 그것에 대해 조언 했습니까? 그리고 그 이유는 무엇입니까? (과잉 공격은 확실한 이유가 아닙니다.) – mmgp

답변

3

당신이하기 전에 원본 이미지에 가우시안 블러를 사용하여 시도해 봤어 템플릿 일치를 수행합니까?

OpenCV Python Gaussian Blur

은 또한 당신이 히스토그램 비교를 시도해 볼 수도 있습니다 : 나는 OpenCV의 문서 도구에서 가우시안 블러에 나쁜 경기를

링크를주고 원본 이미지의 품질 생각으로 이렇게하면 더 정확한 결과를 제공 할 수 있습니다

Drawing Histograms

,691 : 지역의 템플릿 매칭에 대한 기술은 템플릿 일치 상관 관계가 아주 작은 경우, 올바른 값이 반환 것을 추가로 확인, 제안 히스토그램을 그리기

는 선택 사항입니다, 그것은

Comparing the Histograms

^이 방법은 이미지의 히스토그램 (소스 및 템플릿)와 그들 사이의 상관 관계를 계산 ... 그러나 자신의 응용 프로그램에 유용 할 수 있습니다 템플릿 일치가 가장 좋은 상관 관계라고 생각하는 곳이나 이미지의 다른 위치와 같이 전체 소스의 막대 그래프를 원하지 않으므로 관심 영역 (ROI)의 막대 그래프를 얻으려면 다음의 C++ 코드 :

Mat OriginalImage = imread("source.jpg", 0); 
Rect RegionOfInterest = Rect(150, 150, 250, 250); 
Mat ROIImage = OriginalImage(RegionOfInterest); 

이를 통해 관심 영역의 히스토그램을 계산할 수 있습니다. Template Matching에서 템플릿이 소스라고 생각하는 영역의 히스토그램을 얻고 템플릿 일치 출력을 확인하거나 반박하기 위해 비교합니다.

+0

안녕하세요, 아니요. 가우시안 블러를 사용하지 않았습니다. 템플릿 이미지가 고품질 인 이미지에서 품질이 저하되고 있습니다. 그렇다면 템플릿 로고 이미지에 가우시안 블러를 사용해야합니까? –

+0

Gaussian Blur의 아이디어는 정보를 제거하는 것입니다. 템플릿 매칭 (상관 관계) 임계 값 설정을 단순화 할 것이라고 생각하기 때문에 시스템에 추가 할 것을 제안했습니다. 따라서 나는 그것이 소스에 흐릿하게 보일 것이라고 말하고 싶습니다. 템플릿이 더 좋은 품질입니다. 주로이 템플릿으로 소스를 흐리게하려고하거나이 템플릿을 흐리게 만듭니다. (하지만 이미지를 보지 못했기 때문에 소스의 흐림도 문제가되지 않을 수 있습니다.) 뿐만 아니라 다른 두 솔루션 ...) 설명서에 가우시안 흐림에 대한 링크를 첨부했습니다. – MattTheHack

+0

BTW, 템플릿 일치가 작동하지 않으면 검색을 위해 사용할 수있는 또 다른 간단한 이미지 처리 기술이 있지만 처음에는 우리는 가우시안 블러가 도움이되는지를 알게 될 것입니다. – MattTheHack