#python-3.x #opencv
#python-3.x #opencv
Вопрос:
Итак, у меня есть изображения радужки, которые я превратил в декартовы изображения, включая область зрачка. Теперь проблема в том, что мне нужно удалить область зрачка с изображения. (область / размер зрачка различны для каждого изображения)
Я попытался замаскировать область зрачка, установив порог и найдя контур зрачка. Но результаты не очень хорошие, потому что некоторые изображения имеют отражение света, а некоторые имеют аналогичное пороговое значение с областью радужной оболочки.
# 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 amp; 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
Комментарии:
1. Не могли бы вы добавить одно из проблемных изображений?
2. @J.D. Я обновил сообщение