Итак, у меня есть эти изображения радужной оболочки, которые я превратил в декартовы изображения, включая область зрачка. Теперь проблема в том, что мне нужно удалить область зрачка с изображения. (площадь / размер зрачка различны для каждого изображения)
Я пытался замаскировать область зрачка, установив порог и найдя контур зрачка. Но результаты не очень хорошие, потому что некоторые изображения имеют отражение света, а некоторые имеют аналогичное пороговое значение с площадью радужной оболочки.
# convert to binary image
ret, thresh = cv.threshold(image, 35, 255, cv.THRESH_BINARY)
# dilate image to reduce hole in pupil area
kern = np.ones((5,5), np.uint8)
dilated = cv.dilate(thresh, kern, iterations =1)
# detect contour of pupil area by looking for the biggest contour found
contours,_= cv.findContours(dilated, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
maxContour = 0
for contour in contours:
contourSize = cv.contourArea(contour)
if contourSize > maxContour:
maxContour = contourSize
maxContourData = contour
# create mask & mask pupil contour area
mask = np.zeros_like(image)
cv.fillPoly(mask, [maxContourData], 1)
masked_pupil = np.multiply(image, mask)
Я ожидаю, что только область зрачка замаскирована, но на некоторых изображениях я на самом деле получил область зрачка, частично замаскированную и связанную с областью радужной оболочки.
Вот результат изображения:
https://postimg.cc/FfGNWfbK
https://postimg.cc/fVcwdqJm