Хобрук: Ваш путь к мастерству в программировании

сегментация медицинских изображений с помощью cv2

Я использую набор данных MIAS маммографических изображений рака молочной железы. Данные доступны здесь: http://peipa.essex.ac.uk/pix/mias/

например, изображение выглядит так:

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 нет алгоритма увеличения области, но вы можете его создать. Просто инициализируйте исходную точку, верхний и нижний порог, и они должны работать, перебирая изображение. Это 17.02.2017

Ответы:


1

Я бы использовал следующий подход:

  1. (необязательно) Я бы заменил отверстие и эрозию на открытие путем реконструкции ‹=> эрозии с последующим геодезическим расширением. Это сохранит первоначальную форму, и тогда вы сохраните большую рентабельность инвестиций.
  2. Фильтр свертки (по Гауссу или простому среднему) для сглаживания изображения.
  3. Большой белый цилиндр для обнаружения яркой зоны.
  4. Затем вы вычитаете результат цилиндра из исходного изображения.
17.02.2017
  • у вас есть пример метода цилиндра? Я прочитал docs.opencv.org/3.0-beta/ doc/py_tutorials/py_imgproc/ но я не понимаю, как это работает 18.02.2017
  • Вот оно: en.wikipedia.org/wiki/Top-hat_transform В вашем примере , это просто Image-Opening(Image), а вот иллюстрация aishack .in/static/img/tut/morphology-tophat.jpg 18.02.2017
  • Новые материалы

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..