GithubHelp home page GithubHelp logo

ct-segmentation's Introduction

Использование программы сегментации изображения КТ лёгкого

На вход ожидается файл с изображением КТ обследования в формате Analyze 7.5

Результатом работы сегментатора будут два файла в том же формате. Один представляет собой маску для сегментации с суффиксом _mask, во втором файле _segm содержится сегментированное изображение лёгкого.

Запуск сегментации:

ct-segmentation.exe W0001.hdr

Результат сегментации:

W0001_mask.hdr
W0001_mask.img
W0001_segm.hdr
W0001_segm.img

На примере одного изображения

Слой №138 из серии W0001.

Оригинальное изображение

Область лёгкого отмечена нулями, фон - единицами. Маска изображения

Пикселам фона присваивается наименьшее значение из найденных на оригинальном изображении. Результат сегментации

Алгоритм сегментации

Вся серия сегментируется послойно. Для каждого слоя:

  • находится пороговое значение, отделяющее область, похожую на лёгкое, от области, не похожей на лёгкое;
  • слой сегментируется по найденному пороговому значению;
  • сегментированные участки удаляются либо сливаются с другими;
  • финальная маска применяется к исходному слою, и получается один слой сегментированного лёгкого.

Пороговое значение для сегментации

Определяется по гистограмме. Только гистограмма строится для редуцированного изображения: все значения нормализуются в диапазон [0, 255], а после в каждый карман гистограммы считается два последовательных уровня яркости.

Красной окружностью отмечена область расположения нужного нам порогового значения.
Гистограмма

Размываем гистограмму окном в три пиксела.
Гистограмма после размытия

Получается три явных пика. Самый первый и самый большой - фон, два следующих - лёгкое и кости.

Пороговое значение находится по критерию минимального среди восьми соседей (локальный минимум). Локальные минимумы могут встречаться между первым и вторым пиком гистограммы, а также после третьего. Чтобы исключить лишние значения, установлено минимально допустимое значение для порога. В текущей версии программы оно равно трём.

Сегментация и разметка областей

Размер слоя уменьшается в четыре раза (в два раза по каждой стороне). Дальше к нему последовательно применяются:

  • медианный фильтр,
  • сегментация по найденному порогу,
  • наращивание (дилатация, dilate),
  • эрозия (erode).

Результат сегментации

Из каждого угла изображение заливается (floodfill) фоновым цветом сегментации.

Разметку областей хорошо делает функция библиотеки CImg.

Разметка областей

После разметки внутренние области сливаются с внешними. Удаляются мелкие изолированные участки, а также участки с центроидами в экстремальных областях изображения.

Размер изображения возвращается к исходному, т.е. удваивается.

Изображения и сторонние библиотеки

Источник тестовых данных: ELCAP Public Lung Image Database

Оригинальные DICOM серии конвертировались в формат Analyze 7.5 с помощью программы MRIConvert v 2.0 rev. 235.

Библиотека обработки изображений: CImg v 1.5.6

ct-segmentation's People

Contributors

ihar avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

chankeh

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.