Я пытаюсь удалить фон из набора гистопатологических изображений для обучения патчей в CNN, но у меня возникло много проблем с моими предыдущими методами. После просмотра некоторой литературы я наткнулся на метод, который почти наверняка может решить мою проблему, но авторы не предоставили никакого кода, только краткое описание в своей статье. Я пытаюсь реализовать это сам, но я не настолько опытен в этой области и хотел бы помочь с его реализацией.
Алгоритм: https://imgur.com/a/3h80VMH
Мои первые мысли окак это сделать в коде ниже.
level = 3
dx = int(wsi.properties['openslide.level[' + str(level) + '].width'])
dy = int(wsi.properties['openslide.level[' + str(level) + '].height'])
img = np.asarray(wsi.read_region((0,0), level, (dx, dy)))
hsv_img = cv2.convert(img, cv2.COLOR_RGB2HSV)
ret, otsu = cv2.threshold(hsv_img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
fin = cv2.bitwise_and(img, otsu)
Как и ожидалось, это не работает. Я буду честен и скажу, что у меня нет хорошего понимания маскировки в python, поэтому, если кто-нибудь сможет объяснить, что я делаю неправильно и как я могу это исправить, я буду признателен.
РЕДАКТИРОВАТЬ: Что-то вроде этой работы?
ret, otsuH = cv2.threshold(hsv_img[:,:,0], 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
ret, otsuS = cv2.threshold(hsv_img[:,:,1], 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
otsu = otsuH + otsuS
fin = cv2.bitwise_and(img, img, mask=otsu)
РЕДАКТИРОВАТЬ: Хорошо, это сработало. Спасибо за помощь.