Распознавание радужной оболочки: центр радужной оболочки и центр зрачка не совпадают, интерполяция не работает
Я работаю над проектом по признанию радужной оболочки как дипломный проект.
План такой:
1- Получить изображение радужной оболочки (База данных CASIA) 2- Определить радужную оболочку (частично выполнено) 3- Обрезать область радужной оболочки (выполнено) 4- Интерполировать изображение (застряло) 5- Применить фильтр Габора (выполнено) 6- Применить canny (сделано) 7- Рассчитать расстояние Хемминга (сделано)
import numpy
import cv2
import numpy as np
import os
import math
import scipy
import os
directory = os.listdir("C:/Users/ROOT\Documents/CASIA_IrisDatabase/005/1")
numero_file = len(directory)
print (numero_file)
for file in directory:
print(file)
#file_iride = raw_input("File(riportare anche estensione): ")
for file in directory:
path = "C:/Users/ROOT\Documents/CASIA_IrisDatabase/005/1/%s" % (file)
image_iride = cv2.imread(path)
output = image_iride.copy()
image_test = cv2.imread(path)
image_test = cv2.Canny(image_test, 25, 50, apertureSize=5)
cv2.imshow("Image test", image_test)
image_test = cv2.GaussianBlur(image_test, (7, 7), 3)
#cerchi = cv2.HoughCircles(image_test, cv2.HOUGH_GRADIENT,50, 100.0, 30, 100,100,70)
#cerchi = cv2.HoughCircles(image_test, cv2.HOUGH_GRADIENT, 2, 400, 50, 100, 100, 100)
cerchi = cv2.HoughCircles(image_test, cv2.HOUGH_GRADIENT, 1.3, 800)
if cerchi is not None:
cerchi = np.round(cerchi[0, :]).astype("int")
for (x, y, raggio) in cerchi:
cv2.circle(output, (x, y), 108, (255, 0, 0), 4)
cv2.imshow("Image test", np.hstack([image_iride, output]))
print (raggio)
cv2.waitKey()
x1 = x - 108
x2 = x + 108
y1 = y - 108
y2 = y + 108
#img2 = image_iride[y:y2,x1:x2]
#cv2.imshow("Image test", img2)
#cv2.waitKey()
img2 = image_iride[y1:y2,x1:x2]
cv2.imshow("Image test", img2)
cv2.waitKey()
img2 = cv2.linearPolar(img2, (108, 108), 108, cv2.WARP_FILL_OUTLIERS )
cv2.imshow("Image test", img2)
cv2.waitKey()
Но когда я делаю линейное преобразование, изображение выглядит так, а не плоская линия. Смотри сюда
Как я могу сделать для прямой левой линии?
Любая помощь будет оценена.