Я использую набор данных MIAS для маммографии рака молочной железы. Данные доступны здесь: http://peipa.essex.ac.uk/pix/mias/медицинская сегментация изображения с cv2
, например, изображение выглядит следующим образом:
import cv2
import numpy as np
img = cv2.imread("mdb168.pgm",0)
import matplotlib.pyplot as plt
plt.imshow(img, cmap="gray")
Я хочу, чтобы удалить все артефакты и ненужные части изображения.
Чтобы сделать это, я первый бинаризации изображения
ret,thresh1 = cv2.threshold(img,0,255,cv2.THRESH_BINARY)
plt.imshow(thresh1, cmap="gray")
использование открытие
kernel = np.ones((20,20),np.uint8)
opening = cv2.morphologyEx(thresh1, cv2.MORPH_OPEN, kernel)
plt.imshow(opening, cmap="gray")
затем эрозии
kernel = np.ones((120,120),np.uint8)
erosion = cv2.erode(opening,kernel,iterations = 1)
plt.imshow(erosion, cmap="gray")
затем слейте эту маску с оригинальным изображением
merged = cv2.bitwise_and(img, img , mask=erosion)
plt.imshow(merged, cmap="gray")
Я сейчас пытаюсь удалить грудные мышцы в верхней левой части экрана. В этой публикации: https://www.ncbi.nlm.nih.gov/pubmed/26742491 они используют один и тот же набор данных и делают это с помощью «посевной области». Однако кода нет, и я не смог найти его в opencv.
Я мог бы добиться аналогичного результата, повторив развод/эрозию и т. Д., Но я ищу более обобщаемое решение. Кроме того, некоторые из этих изображений не показывают мышцы, и это также должно быть обнаружено.
К сожалению, в opencv отсутствует алгоритм расширения региона, но вы можете создать его. Просто инициализируйте начальную точку, верхний и нижний порог и должны работать, итерации по изображению. [Это] (http://stackoverflow.com/questions/14416511/seeded-region-growing-with-opencv) –