2014-11-21 7 views
2

홍채를 비교할 때 도움이 필요합니다.홍채 이미지를 opencv와 비교

이미 홍채 이미지를 분할하고 정규화했습니다. 이제는 기능을 추가하거나, 데이터베이스에 추가하거나, 단순히 기능 벡터 목록에 추가하고 다른 기능 벡터와 비교하고 싶습니다. 그런 홍채가 이미 데이터베이스에 있는지 아닌지를 내 신청서에서 결정하기를 원합니다. 물론 이미지, 그들은 서로 다른 관점에서 diffenent 수행하고 있으며, 각도 등 내가 가보 필터는 도움이 될 것입니다, 그래서 그것을 12 개 다른 매개 변수 값을 생각

:

Mat kernel = Imgproc.getGaborKernel(new Size(25, 25), sigma, theta, lambda, gamma, psi, CvType.CV_64F); 
Scalar sum = Core.sumElems(kernel); //kerner normalization 
Core.divide(kernel, sum, kernel); 
Imgproc.filter2D(floatSource, dest, CvType.CV_64F, kernel); 

가 그럼 난 해밍 (12)를 계산 이 함수를 사용하는 거리 :

dist_ham = Core.norm(it1.next(), it2.next(), Core.NORM_HAMMING); 

그리고 평균을 구하십시오.

그리고 ... 작동하지 않습니다. Hamming distanse는 동일한 홍채 또는 2 가지 홍채의 2 가지 다른 이미지를 비교할 때 비슷합니다. 어떻게 알고리즘을 개선 할 수 있습니까? 어쩌면 좋은 결과를 얻기 위해 openCV mathers에서 구현 된 일부를 사용해야합니까? 나에게 어떤 알고리즘을 사용할지 상관 없다. 단지 좋은 결과를 원한다. 그리고 나는 조금 초심자 다.

일부 샘플 사진 : 사람 일 명을 img1 : 사람이 일 명을 img1에 대한 enter image description here 정규화 조리개 : enter image description here

사람 하나 IMG2 : 사람 하나 IMG2에 대한 enter image description here 정상화 조리개 : 이것에 대한 enter image description here

해밍 거리 예를 들어 약 29000입니다 (그리고 이것은 내가 얻은 가장 낮은 거리입니다. 같은 사람 홍채의 경우 대부분 30000 ~ 31000입니다) 다른 사람의 해밍 거리는 약 31000입니다 (depe 테스트 한 이미지의 nds)

+0

이 질문은 꽤 방대하고 하나 이상의 접근 및 해결책이 있다고 생각합니다! 하지만 그 전에는 더 많은 정보가 필요합니다. 처음에는 어떤 단계에 있습니까? 비교하기 전에 수행하는 전처리 단계는 무엇입니까? 사용중인 Unwrapping 기술은 무엇입니까? –

+0

동공 크기를 표준화 했습니까? 두 홍채의 방향이 같은 경우 블록 일치 작업을 수행합니까? 샘플 이미지가 있습니까? – Micka

+0

@BalajiR 내가 말했듯이, 나는 나의 눈 이미지를 준비하고 데카르트 시스템에서 홍채 그림을 얻는다. 예 : 그림 : [링크] (http://postimg.org/image/6z6ct341f/)이 지역은 허프 (Hough) 써클 변환으로 얻습니다. – Araneo

답변

0

Daugman의 논문 등에서 알고리즘/수학을 구현하여이 작업을 성공적으로 마쳤습니다. 실제로 시그널과 람다와 같은 매개 변수의 의미있는 조합을 찾기 위해 gabor 커널을 시각화하는 것이 좋습니다. 나는 OpenCV의 GetGaborKernel을 사용하지 않았지만 손으로 ​​제작 한 것을 사용했다.

관련 문제