2011-11-07 27 views
5

Tôi đang làm việc trên thuật toán nhận dạng iris xử lý these loại hình ảnh thành mã duy nhất cho mục đích nhận dạng và xác thực.Cải tiến biến đổi thông tư

Sau khi lọc, thông minh thresholding, sau đó tìm các cạnh trong hình ảnh, bước tiếp theo rõ ràng là để phù hợp với vòng tròn cho học sinh và mống mắt. Tôi đã nhìn xung quanh các kỹ thuật để sử dụng là chuyển đổi Hough tròn. Đây là mã cho việc triển khai của tôi. Xin lỗi về các tên biến bí ẩn.

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 

Điều này được viết bằng python và sử dụng Thư viện hình ảnh Python để xử lý hình ảnh. Như bạn có thể thấy, đây là một phương pháp bạo lực rất ngây thơ của việc tìm kiếm các vòng tròn. Nó hoạt động, nhưng phải mất vài phút. Ý tưởng cơ bản là vẽ các vòng tròn từ rmin đến rmax bất cứ nơi nào có một pixel đen (từ đập và phát hiện cạnh), việc xây dựng một mảng tích lũy số lần vị trí trên hình ảnh được "bình chọn". Cho dù x, y và r có nhiều phiếu bầu nhất là vòng tròn quan tâm. Tôi đã cố gắng sử dụng thực tế là mống mắt và học sinh có cùng một trung tâm (các biến số và rb) để giảm một số độ phức tạp của vòng lặp r, nhưng phát hiện học sinh mất quá lâu đến mức không quan trọng.

Bây giờ, rõ ràng việc triển khai của tôi rất ngây thơ. Nó sử dụng một không gian tham số ba chiều (x, y, và r), mà không may làm cho nó chạy chậm hơn là chấp nhận được. Tôi có thể thực hiện những cải tiến nào? Có cách nào để giảm điều này thành không gian tham số hai chiều không? Có cách nào hiệu quả hơn để truy cập và thiết lập pixel mà tôi không biết?

Lưu ý phụ, có bất kỳ kỹ thuật nào khác để cải thiện thời gian chạy tổng thể của thuật toán này mà tôi không biết? Chẳng hạn như các phương pháp để ước tính bán kính tối đa của học sinh hoặc mống mắt?

Lưu ý: Tôi cũng đã cố gắng sử dụng OpenCV cho điều này, nhưng tôi không thể điều chỉnh các thông số đủ chính xác.

Hãy cho tôi biết nếu có bất kỳ thông tin nào khác mà bạn cần.

LƯU Ý: Một lần nữa tôi hiểu sai mã của riêng mình. Về mặt kỹ thuật là 5 chiều, nhưng vòng lặp 3 chiều x, y, r chỉ hoạt động trên các pixel đen.

Trả lời

1

Giả sử bạn muốn vị trí của các vòng tròn chứ không phải là một biện pháp của R.

Nếu bạn có một ước tính phong nha của các phạm vi có thể của R sau đó một kỹ thuật phổ biến là để chạy các thuật toán cho một đoán đầu tiên của cố định R, điều chỉnh nó và thử lại.

+0

Tôi biết rằng bằng cách loại bỏ hoặc đơn giản hóa vòng lặp R, vấn đề sẽ giảm đáng kể. Vấn đề là tôi không biết cách đơn giản hóa vòng lặp. Tôi đã cố gắng đơn giản hóa việc phát hiện mống mắt bằng cách hạn chế trung tâm của nó ở gần trung tâm của học sinh, nhưng điều đó không giúp tôi tìm ra học trò. Nếu có một số cách để ước tính giới hạn và vị trí của học trò (như bạn đã nói), điều đó sẽ giải quyết được một số vấn đề, nhưng vị trí, vị trí và kích thước có thể thay đổi nhiều đến mức tôi không biết mình sẽ làm như thế nào cái đó. –

+0

Có lẽ có giới hạn về kích thước chỉ từ vị trí của máy ảnh và loại ống kính? Nếu học sinh chỉ 3-4 pixel thì bạn có thể sẽ không tìm thấy nó và nó không thể cao hơn một nửa chiều cao của ảnh –

Các vấn đề liên quan