나는 these 종류의 이미지를 식별 및 인증 목적으로 고유 한 코드로 처리하는 홍채 인식 알고리즘을 연구 중입니다.원형 허깅 변환 개선
지능적으로 임계 값을 필터링 한 다음 이미지에서 가장자리를 찾는 다음 단계는 분명히 동공과 홍채에 원을 맞추는 것입니다. 나는 원형 허프 트랜스 폼 (Hough Transform)을 사용하는 기술을 둘러 보았습니다. 여기 내 구현을위한 코드입니다. 비밀스러운 변수 이름을 유감스럽게 생각합니다.
print "Populating Accumulator..."
# Loop over image rows
for x in range(w):
# Loop over image columns
for y in range(h):
# Only process black pixels
if inp[x,y] == 0:
# px,py = 0 means pupil, otherwise pupil center
if px == 0:
ra = r_min
rb = r_max
else:
rr = sqrt((px-x)*(px-x)+(py-y)*(py-y))
ra = int(rr-3)
rb = int(rr+3)
# a is the width of the image, b is the height
for _a in range(a):
for _b in range(b):
for _r in range(rb-ra):
s1 = x - (_a + a_min)
s2 = y - (_b + b_min)
r1 = _r + ra
if (s1 * s1 + s2 * s2 == r1 * r1):
new = acc[_a][_b][_r]
if new >= maxVotes:
maxVotes = new
print "Done"
# Average all circles with the most votes
for _a in range(a):
for _b in range(b):
for _r in range(r):
if acc[_a][_b][_r] >= maxVotes-1:
total_a += _a + a_min
total_b += _b + b_min
total_r += _r + r_min
amount += 1
top_a = total_a/amount
top_b = total_b/amount
top_r = total_r/amount
print top_a,top_b,top_r
이것은 파이썬으로 작성되었으며 Python 이미징 라이브러리를 사용하여 이미지 처리를 수행합니다. 보시다시피, 이것은 원을 찾는 매우 순진한 무차별 방식입니다. 작동하지만 몇 분이 걸립니다. 기본적인 아이디어는 검정색 픽셀 (thresholding 및 edge-detection에서)이있을 때마다 rmin에서 rmax까지 원을 그려서 이미지의 위치가 "투표"된 횟수의 누적 기 축척을 작성하는 것입니다. x, y 및 r 중 가장 많은 표를 얻은 것이 관심 분야입니다. 저는 홍채와 눈동자가 r 루프의 복잡성을 줄이기 위해 같은 중심 (변수 ra와 rb)을 사용한다는 사실을 사용하려고했지만, 동공 탐지에는 시간이 오래 걸려 문제가되지 않습니다.
분명히 내 구현은 매우 순진합니다. 3 차원 매개 변수 공간 (x, y 및 r)을 사용합니다. 불행하게도 허용되는 것보다 느리게 실행됩니다. 어떤 종류의 개선을 할 수 있습니까? 이것을 2 차원 매개 변수 공간으로 축소 할 수있는 방법이 있습니까? 인식하지 못하는 픽셀에 액세스하고 설정하는보다 효율적인 방법이 있습니까?
내가 알지 못하는이 알고리즘의 전반적인 런타임을 개선하기위한 다른 기술이 있습니까? 동공이나 홍채의 최대 반지름을 근사하는 방법 같은가?
참고 : OpenCV를 사용해 보았지만 일관되게 정확한 매개 변수를 조정할 수 없었습니다.
기타 필요한 정보가 있으면 알려주십시오.
참고 : 다시 한 번 내 자신의 코드를 잘못 해석했습니다. 이것은 기술적으로 5 차원이지만 3 차원 x, y, r 루프는 검정색 픽셀에서만 작동합니다.
R 루프를 제거하거나 단순화하면 문제가 현저히 줄어 듭니다. 문제는 루프를 단순화하는 방법을 모른다는 것입니다. 나는 홍채의 중심을 동공의 중심에 가깝도록 제한함으로써 홍채 탐지를 단순화하려고 시도했으나 그것이 학생을 찾는 데 도움이되지는 못한다. 학생의 범위와 위치를 추정 할 수있는 방법이 있다면 (예를 들어 말한 것처럼) 문제의 일부를 해결할 수 있지만 위치, 위치 및 크기가 너무 다양해서 내가 어떻게해야할지 모르겠다. 그. –
아마 카메라가있는 곳의 크기와 렌즈의 종류에 제한이 있습니까? 학생이 단지 3-4 픽셀면 당신은 아마 그것을 찾지 못할 것이고 이미지 높이의 반 이상은 될 수 없습니다. –