Пороговые методы сегментации. В данной работе разработан метод маркерного водораздела для сегментации изображения. Отображение результа с помощью цветного изображения

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

Введение

Сегментация изображений — огромный шаг для анализа изображений. Она разделяет изображение на составляющие части или объекты. Уровень детализации разделяемых областей зависит от решаемой задачи. К примеру, когда интересуемые объекты перестают сохранять целостность, разбиваются на более мелкие, составные части, процесс сегментации стоит прекратить. Алгоритмы сегментации изображений чаще всего базируются на разрыве и подобии значений на изображении. Подход разрывов яркости базируется на основе резких изменений значений интенсивности, подобие же — на разделение изображения на области, подобные согласно ряду заранее определенных критериев. Таким образом, выбор алгоритма сегментации изображения напрямую зависит от проблемы, которую необходимо решить. Обнаружение границ является частью сегментации изображений. Следовательно, эффективность решения многих задач обработки изображений и компьютерного зрения зависит от качества выделенных границ. Выделение их на изображении можно причислить к алгоритмам сегментации, которые базируются на разрывах яркости.

Процесс обнаружения точных разрывов яркости на изображении называется процессом выделение границ. Разрывы — это резкие изменения в группе пикселей, которые являются границами объектов. Классический алгоритм обнаружения границ задействует свертку изображения с помощью оператора, который основывается на чувствительности к большим перепадам яркости на изображении, а при проходе однородных участков возвращает нуль. Сейчас доступно огромное количество алгоритмов выделения контуров, но ни один из них не является универсальным. Каждый из существующих алгоритмов решает свой класс задач (т.е. качественно выделяет границы определенного типа). Для определения подходящего алгоритма выделения контуров необходимо учитывать такие параметры, как ориентация и структура контура, а также наличие и тип шума на изображении. Геометрия оператора устанавливает характерное направление, в котором он наиболее чувствителен к границам. Существующие операторы предназначены для поиска вертикальных, горизонтальных или диагональных границ. Выделение границ объектов — сложная задача в случае сильно зашумленного изображения, так как оператор чувствителен к перепадам яркости, и, следовательно, шум также будет считать некоторым объектом на изображении. Есть алгоритмы, позволяющие в значительной мере избавиться от шума, но в свою очередь, они в значительной мере повреждают границы изображения, искажая их. А так как большинство обрабатываемых изображений содержат в себе шум, шумоподавляющие алгоритмы пользуются большой популярностью, но это сказывается на качестве выделенных контуров.

Также при обнаружении контуров объектов существуют такие проблемы, как нахождение ложных контуров, расположение контуров, пропуск истинных контуров, помехи в виде шума, высокие затраты времени на вычисление и др. Следовательно, цель заключается в том, чтобы исследовать и сравнить множество обработанных изображений и проанализировать качество работы алгоритмов в различных условиях.

В данной статье предпринята попытка сделать обзор наиболее популярных алгоритмов выделения контуров для сегментации, а также реализация их в программной среде MATLAB. Второй раздел вводит фундаментальные определения, которые используются в литературе. Третий — предоставляет теоретический и математический и объясняет различные компьютерные подходы к выделению контуров. Раздел четыре предоставляет сравнительный анализ различных алгоритмов, сопровождая его изображениями. Пятый раздел содержит обзор полученных результатов и заключение.

Сегментация изображений

Сегментация изображения — это процесс разделения цифрового изображения на множество областей или наборов пикселей. Фактически, это разделение на различные объекты, которые имеют одинаковую текстуру или цвет. Результатом сегментации является набор областей, покрывающих вместе все изображение, и набор контуров, извлеченных из изображения. Все пиксели из одной области подобны по некоторым характеристикам, таким как цвет, текстура или интенсивность. Смежные области отличаются друг от друга этими же характеристиками. Различные подходы нахождения границ между областями базируются на неоднородностях уровней интенсивности яркости. Таки образом выбор метода сегментации изображения зависит от проблемы, которую необходимо решить.

Методы, основанные на областях, базируются на непрерывности. Данные алгоритмы делят все изображение на подобласти в зависимости от некоторых правил, к примеру, все пиксели данной группы должны иметь определенное значение серого цвета. Эти алгоритмы полагаются на общие шаблоны интенсивности значений в кластерах соседних пикселей.

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

Методы сегментации, основанные на обнаружении областей, находят непосредственно резкие изменения значений интенсивности. Такие методы называются граничными методами. Обнаружение границ — фундаментальная проблема при анализе изображений. Техники выделения границ обычно используются для нахождения неоднородностей на полутоновом изображении. Обнаружение разрывов на полутоном изображении — наиболее важный подход при выделении границ.

Алгоритмы выделение границ

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

Обнаружение границ — фундаментальный инструмент для сегментации изображения. Такие алгоритмы преобразуют входное изображение в изображение с контурами объектов, преимущественно в серых тонах. В обработке изображений, особенно в системах компьютерного зрения, с помощью выделения контура рассматривают важные изменения уровня яркости на изображении, физические и геометрические параметры объекта на сцене. Это фундаментальный процесс, который обрисовывает в общих чертах объекты, получая тем самым некоторые знания об изображении. Обнаружение границ является самым популярным подходом для обнаружения значительных неоднородностей.

Граница является местным изменением яркости на изображении. Они, как правило, проходят по краю между двумя областями. С помощью границ можно получить базовые знания об изображении. Функции их получения используются передовыми алгоритмами компьютерного зрения и таких областях, как медицинская обработка изображений, биометрия и тому подобные. Обнаружение границ — активная область исследований, так как он облегчает высокоуровневый анализ изображений. На полутоновых изображениях существует три вида разрывов: точка, линия и граница. Для обнаружения всех трех видов неоднородностей могут быть использованы пространственные маски.

В технической литературе приведено и описано большое количество алгоритмов выделения контуров и границ. В данной работе рассмотрены наиболее популярные методы. К ним относятся: оператор Робертса, Собеля, Превитта, Кирша, Робинсона, алгоритм Канни и LoG-алгоритм.

Оператор Робертса

Оператор выделения границ Робертса введен Лоуренсом Робертсом в 1964 году. Он выполняет простые и быстрые вычисления двумерного пространственного измерения на изображении. Этот метод подчеркивает области высокой пространственной частоты, которые зачастую соответствуют краям. На вход оператора подается полутоновое изображение. Значение пикселей выходного изображения в каждой точке предполагает некую величину пространственного градиента входного изображения в этой же точке.

Оператор Собеля

Оператор Собеля введен Собелем в 1970 году. Данный метод обнаружения границ использует приближение к производной. Это позволяет обнаруживать край в тех местах, где градиент самый высокий. Данный способ обнаруживает количество градиентов на изображении, тем самым выделяя области с высокой пространственной частотой, которые соответствуют границам. В целом это привело к нахождению предполагаемой абсолютной величине градиента в каждой точке входного изображения. Данный оператор состоит из двух матриц, размером 3×3. Вторая матрица отличается от первой только тем, что повернута на 90 градусов. Это очень похоже на оператор Робертса.

Обнаружение границ данным методом вычислительно гораздо проще, чем методом Собеля, но приводит к большей зашумленности результирующего изображения.

Оператор Превитта

Обнаружение границ данным оператором предложено Превиттом в 1970 году. Правильным направлением в данном алгоритме была оценка величины и ориентация границы. Даже при том, что выделение границ является весьма трудоемкой задачей, такой подход дает весьма неплохие результаты. Данный алгоритм базируется на использовании масок размером 3 на 3, которые учитывают 8 возможных направлений, но прямые направления дают наилучшие результаты. Все маски свертки рассчитаны.

Оператор Кирша

Обнаружение границ этим методом было введено Киршем в 1971 году. Алгоритм основан на использовании всего одной маски, которую вращают по восьми главным направлениям: север, северо-запад, запад, юго-запад, юг, юго-восток, восток и северо-восток. Маски имеют следующий вид:

Величина границы определена как максимальное значение, найденное с помощью маски. Определенное маской направление выдает максимальную величину. Например, маска k 0 соответствует вертикальной границе, а маска k 5 — диагональной. Можно также заметить, что последние четыре маски фактически такие же, как и первые, они являются зеркальным отражением относительно центральной оси матрицы.

Оператор Робинсона

Метод Робинсона, введенное в 1977, подобен методу Кирша, но является более простым в реализации в силу использования коэффициентов 0, 1 и 2. Маски данного оператора симметричны относительно центральной оси, заполненной нулями. Достаточно получить результат от обработки первых четырех масок, остальные же можно получить, инвертируя первые.

Максимальное значение, полученное после применения всех четырех масок к пикселю и его окружению считается величиной градиента, а угол градиента можно аппроксимировать как угол линий нулей в маске, которые дают максимальный отклик.

Выделение контура методом Marr-Hildreth

Marr-Hildreth (1980) метод — метод обнаружения границ в цифровых изображениях, который обнаруживает непрерывные кривые везде, где заметны быстрые и резкие изменения яркости группы пикселей. Это довольно простой метод, работает он с помощью свертки изображения с LoG-функцией или как быстрая аппроксимация с DoG. Нули в обработанном результате соответствуют контурам. Алгоритм граничного детектора состоит из следующих шагов:

  • размытие изображение методом Гаусса;
  • применение оператора Лапласса к размытому изображению (часто первые два шага объединены в один);
  • производим цикл вычислений и в полученном результате смотрим на смену знака. Если знак изменился с отрицательного на положительный и значение изменения значения более, чем некоторый заданный порог, то определить эту точку, как границу;
  • Для получения лучших результатов шаг с использованием оператора Лапласса можно выполнить через гистерезис так, как это реализовано в алгоритме Канни.

Выделение контура методом LoG

Алгоритм выделения контуров Лаплассиан Гауссиана был предложен в 1982 году. Данный алгоритм является второй производной, определенной как:

Он осуществляется в два шага. На первом шаге он сглаживает изображение, а затем вычисляет функцию Лапласса, что приводит к образованию двойных контуров. Определение контуров сводится к нахождению нулей на пересечении двойных границ. Компьютерная реализация функции Лапласса обычно осуществляется через следующую маску:

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

Детектор границ Канни

Детектор границ Канни является одной из самых популярных алгоритмов обнаружения контуров. Впервые он был предложен Джоном Канни в магистерской диссертации в 1983 году, и до сих пор является лучше многих алгоритмов, разработанных позднее. Важным шагом в данном алгоритме является устранение шума на контурах, который в значительной мере может повлиять на результат, при этом необходимо максимально сохранить границы. Для этого необходим тщательный подбор порогового значения при обработке данным методом.

Алгоритм:

  • размытие исходного изображения f(r, c) с помощью функции Гаусса f^(r, c). f^(r, c)=f(r,c)*G(r,c,6);
  • выполнить поиск градиента. Границы намечаются там, где градиент принимает максимальное значение;
  • подавление не-максимумов. Только локальные максимумы отмечаются как границы;
  • итоговые границы определяются путем подавления всех краев, не связанных с определенными границами.

В отличии от операторов Робертса и Собеля, алгоритм Канни не очень восприимчив к шуму на изображении.

Экспериментальные результаты

В данном разделе представлены результаты работы описанных ранее алгоритмов обнаружения границ объектов на изображении.

Все описанные алгоритмы были реализованы в программной среде MATLAB R2009a и протестированы на фотографии университета. Цель эксперимента заключается в получении обработанного изображения с идеально выделенными контурами. Оригинальное изображение и результаты его обработки представлены на рисунке 1.

Рисунок 1 — Оригинальное изображение и результат работы различных алгоритмов выдеоения контуров


При анализе полученных результатов были выявлены следующие закономерности: операторы Робертса, Собеля и Превитта дают очень различные результаты. Marr-Hildreth, LoG и Канни практически одинаково обнаружили контуры объекта, Кирш и Робинсон дали такой же результат. Но наблюдая полученные результаты можно сделать вывод, что алгоритм Канни справляется на порядок лучше других.

Выводы

Обработка изображений — быстро развивающаяся область в дисциплине компьютерного зрения. Ее рост основывается на высоких достижениях в цифровой обработке изображений, развитию компьютерных процессоров и устройств хранения информации.

В данной статье была предпринята попытка изучить на практике методы выделения контуров объектов, основанных на разрывах яркости полутонового изображения. Исследование относительной производительности каждого из приведенных в данной статье методов осуществлялся с помощью программного средства MATLAB. Анализ результатов обработки изображения показал, что такие методы, как Marr-Hildreth, LoG и Канни дают практически одинаковые результаты. Но все же при обработке данного тестового изображения наилучшие результаты можно наблюдать после работы алгоритма Канни, хотя при других условиях лучшим может оказаться другой метод.

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

Список использованной литературы

1. Canny J.F. (1983) Finding edges and lines in images, Master"s thesis, MIT. AI Lab. TR-720.
2. Canny J.F. (1986) A computational approach to edge detection , IEEE Transaction on Pattern Analysis and Machine Intelligence, 8. — P. 679-714.
3. Courtney P, Thacker N.A. (2001) Performance Characterization in Computer Vision: The Role of Statistics in Testing and Design , Chapter in: Imaging and Vision Systems: Theory, Assessment and Applications , Jacques Blanc-Talon and Dan Popescu (Eds.), NOVA Science Books.
4. Hanzi Wang (2004) Robust Statistics for Computer Vision: Model Fitting, Image Segmentation and Visual Motion Analysis, Ph.D thesis, Monash University, Australia.
5. Huber P.J. (1981) Robust Statistics, Wiley New York.
6. Kirsch R. (1971) Computer determination of the constituent structure of biological images , Computers and Biomedical Research, 4. — P. 315–328.
7. Lakshmi S, Sankaranarayanan V. (2010) A Study of edge detection techniques for segmentation computing approaches , Computer Aided Soft Computing Techniques for Imaging and Biomedical Applications. — P. 35-41.
8. Lee K., Meer P. (1998) Robust Adaptive Segmentation of Range Images , IEEE Trans. Pattern Analysis and Machine Intelligence, 20(2). — P. 200-205.
9. Marr D, Hildreth E. (1980) Theory of edge detection , Proc. Royal Society of London, B, 207. — P. 187–217.
10. Marr D. (1982) Vision, Freeman Publishers.
11. Marr P., Doron Mintz. (1991) Robust Regression for Computer Vision: A Review , International Journal of Computer Vision, 6(1). — P. 59-70.
12. Orlando J. Tobias, Rui Seara (2002) Image Segmentation by Histogram Thresholding Using Fuzzy Sets , IEEE Transactions on Image Processing, Vol.11, No.12. — P. 1457-1465.
13. Punam Thakare (2011) A Study of Image Segmentation and Edge Detection Techniques , International Journal on Computer Science and Engineering, Vol 3, No.2. — P. 899-904.
14. Rafael C., Gonzalez, Richard E. Woods, Steven L. Eddins (2004) Digital Image Processing Using MATLAB, Pearson Education Ptd. Ltd, Singapore.
15. Ramadevi Y. (2010) Segmentation and object recognition using edge detection techniques , International Journal of Computer Science and Information Technology, Vol 2, No.6. — P. 153-161.
16. Roberts L. (1965) Machine Perception of 3-D Solids , Optical and Electro-optical Information Processing, MIT Press.
17. Robinson G. (1977) Edge detection by compass gradient masks , Computer graphics and image processing, 6. — P. 492-501.
18. Rousseeuw P. J., Leroy A. (1987) Robust Regression and outlier detection, John Wiley & Sons, New York.
19. Senthilkumaran N., Rajesh R. (2009) Edge Detection Techniques for Image Segmentation — A Survey of Soft Computing Approaches , International Journal of Recent Trends in Engineering, Vol. 1, No. 2. — P. 250-254.
20. Sowmya B., Sheelarani B. (2009) Colour Image Segmentation Using Soft Computing Techniques , International Journal of Soft Computing Applications, Issue 4. — P. 69-80.
21. Umesh Sehgal (2011) Edge detection techniques in digital image processing using Fuzzy Logic , International Journal of Research in IT and Management, Vol.1, Issue 3. — P. 61-66.
22. Yu, X, Bui, T.D. & et al. (1994) Robust Estimation for Range Image Segmentation and Reconstruction , IEEE trans. Pattern Analysis and Machine Intelligence, 16 (5). — P. 530-538.

Сегментация методом управляемого водораздела

Довольно часто при анализе изображений возникает задача разделения пикселей изображений на группы по некоторым признакам. Такой процесс разбиения на группы называется сегментацией. Наиболее известными являются два вида сегментации - сегментация по яркости для бинарных изображений и сегментация по цветовым координатам для цветных изображений. Методы сегментации можно рассматривать как формализацию понятия выделяемости объекта из фона или понятий связанных с градиентом яркости. Алгоритмы сегментации характеризуются некоторыми параметрами надежности и достоверности обработки. Они зависят от того, насколько полно учитываются дополнительные характеристики распределения яркости в областях объектов или фона, количество перепадов яркости, форма объектов и др.

Существует много изображений, которые содержат исследуемый объект достаточно однородной яркости на фоне другой яркости. В качестве примера можно привести рукописный текст, ряд медицинских изображений и т.д. Если яркости точек объекта резко отличаются от яркостей точек фона, то решение задачи установления порога является несложной задачей. На практике это не так просто, поскольку исследуемое изображение подвергается воздействию шума и на нем допускается некоторый разброс значений яркости. Известно несколько аналитических подходов к пороговому ограничению по яркости. Один из методов состоит в установлении порога на таком уровне, при котором общая сумма элементов с подпороговой яркостью согласована с априорными вероятностями этих значений яркости.

Аналогичные подходы можно применить для обработки цветных и спектрозональных изображений. Существует также такой вид сегментации как контурная сегментация. Довольно часто анализ изображений включает такие операции, как получение внешнего контура изображений объектов и запись координат точек этого контура. Известно три основных подхода к представлению границ объекта: аппроксимация кривых, прослеживание контуров и связывание точек перепадов. Для полноты анализа следует отметит, что есть также текстурная сегментация и сегментация формы.

Наиболее простым видом сегментации является пороговая сегментация. Она нашла очень широкое применение в робототехнике. Это объясняется тем, что в этой сфере изображения исследуемых объектов, в своем большинстве, имеют достаточно однородную структуру и резко выделяются их фона. Но кроме этого, для достоверной обработки нужно знать, что изображение состоит из одного объекта и фона, яркости которых находятся в строго известных диапазонах и не пересекаются между собой.

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

В данной работе рассмотрим относительно новый подход к решению задачи сегментации изображений - метод водораздела. Коротко объясним название этого метода и в чем его суть.

Предлагается рассматривать изображение как некоторую карту местности, где значения яркостей представляют собой значения высот относительно некоторого уровня. Если эту местность заполнять водой, тогда образуются бассейны. При дальнейшем заполнении водой, эти бассейны объединяются. Места объединения этих бассейнов отмечаются как линии водораздела.

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

Метод маркерного водораздела является одним из наиболее эффективных методов сегментации изображений. При реализации этого метода выполняются следующие основные процедуры:

    Вычисляется функция сегментации. Она касается изображений, где объекты размещены в темных областях и являются трудно различимыми.

    Вычисление маркеров переднего плана изображений. Они вычисляются на основании анализа связности пикселей каждого объекта.

    Вычисление фоновых маркеров. Они представляют собой пиксели, которые не являются частями объектов.

    Модификация функции сегментации на основании значений расположения маркеров фона и маркеров переднего плана.

    Вычисления на основании модифицированной функции сегментации.

В данном примере среди функций пакета Image Processing Toolbox наиболее часто используются функции fspecial, imfilter, watershed, label2rgb, imopen, imclose, imreconstruct, imcomplement, imregionalmax, bwareaopen, graythresh и imimposemin.

  • Шаг 1: Считывание цветного изображения и преобразование его в полутоновое.
  • Шаг 2: Использование значения градиента в качестве функции сегментации.
  • Шаг 3: Маркировка объектов переднего плана.
  • Шаг 4: Вычисление маркеров фона.
  • Шаг 6: Визуализация результата обработки.

Шаг 1: Считывание цветного изображения и преобразование его в полутоновое.

Считаем данные из файла pears.png rgb=imread("pears.png"); и представим их в виде полутонового изображения. I=rgb2gray(rgb); imshow(I) text(732,501,"…",... "FontSize",7,"HorizontalAlignment","right")

Шаг 2: Использование значения градиента в качестве функции сегментации.

Для вычисления значения градиента используется оператор Собеля, функция imfilter и другие вычисления. Градиент имеет большие значения на границах объектов и небольшие (в большинстве случаев) вне границ объектов.

Hy=fspecial("sobel"); hx=hy"; Iy=imfilter(double(I), hy, "replicate"); Ix=imfilter(double(I), hx, "replicate"); gradmag=sqrt(Ix.^2+Iy.^2); figure, imshow(gradmag,), title("значение градиента")

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

L=watershed(gradmag); Lrgb=label2rgb(L); figure, imshow(Lrgb), title("Lrgb")

Однако, без проведения еще дополнительных вычислений, такая сегментация будет поверхностной.

Шаг 3: Маркировка объектов переднего плана.

Для маркировки объектов переднего плана могут использоваться различные процедуры. В этом примере будут использованы морфологические технологии, которые называются "раскрытие через восстановление" и "закрытие через восстановление". Эти операции позволяют анализировать внутреннюю область объектов изображения с помощью функции imregionalmax.

Как было сказано выше, при проведении маркировки объектов переднего плана используются также морфологические операции. Рассмотрим некоторые из них и сравним. Сначала реализуем операцию раскрытия с использованием функции imopen.

Se=strel("disk", 20); Io=imopen(I, se); figure, imshow(Io), title("Io")

Ie=imerode(I, se); Iobr=imreconstruct(Ie, I); figure, imshow(Iobr), title("Iobr")

Последующие морфологические операции раскрытия и закрытия приведут к перемещению темных пятен и формированию маркеров. Проанализируем операции морфологического закрытия. Для этого сначала используем функцию imclose:

Ioc=imclose(Io, se); figure, imshow(Ioc), title("Ioc")

Iobrd=imdilate(Iobr, se); Iobrcbr=imreconstruct(imcomplement(Iobrd), imcomplement(Iobr)); Iobrcbr=imcomplement(Iobrcbr); figure, imshow(Iobrcbr), title("Iobrcbr")

Сравнительный визуальный анализ Iobrcbr и Ioc показывает, что представленная реконструкция на основе морфологических операций открытия и закрытия является более эффективной в сравнении с стандартными операциями открытия и закрытия. Вычислим локальные максимумы Iobrcbr и получим маркеры переднего плана.

Fgm=imregionalmax(Iobrcbr); figure, imshow(fgm), title("fgm")

Наложим маркеры переднего плана на исходное изображение.

I2=I; I2(fgm)=255; figure, imshow(I2), title("fgm, наложенное на исходное изображение")

Отметим, что при этом некоторые скрытые или закрытые объекты изображения не являются маркированными. Это свойство влияет на формирование результата и многие такие объекты изображения не будут обработаны с точки зрения сегментации. Таким образом, маркеры переднего плана отображают границы только большинства объектов. Представленные таким образом границы подвергаются дальнейшей обработке. В частности, это могут быть морфологические операции.

Se2=strel(ones(5, 5)); fgm2=imclose(fgm, se2); fgm3=imerode(fgm2, se2);

В результате проведения такой операции пропадают отдельные изолированные пиксели изображения. Также можно использовать функцию bwareaopen, которая позволяет удалять заданное число пикселей.

Fgm4=bwareaopen(fgm3, 20); I3=I; I3(fgm4)=255; figure, imshow(I3) title("fgm4, наложенное на исходное изображение")

Шаг 4: Вычисление маркеров фона.

Теперь проведем операцию маркирования фона. На изображении Iobrcbr темные пиксели относятся к фону. Таким образом, можно применить операцию пороговой обработки изображения.

Bw=im2bw(Iobrcbr, graythresh(Iobrcbr)); figure, imshow(bw), title("bw")

Пиксели фона являются темными, однако нельзя просто провести морфологические операции над маркерами фона и получить границы объектов, которые мы сегментируем. Мы хотим "утоньшить" фон таким образом, чтобы получить достоверный скелет изображения или, так называемый, передний план полутонового изображения. Это вычисляется с применением подхода по водоразделу и на основе измерения расстояний (до линий водораздела).

D=bwdist(bw); DL=watershed(D); bgm=DL==0; figure, imshow(bgm), title("bgm")

Шаг 5: Вычисление по методу маркерного водораздела на основании модифицированной функции сегментации.

Функция imimposemin может применяться для точного определения локальных минимумов изображения. На основании этого функция imimposemin также может корректировать значения градиентов на изображении и таким образом уточнять расположение маркеров переднего плана и фона.

Gradmag2=imimposemin(gradmag, bgm | fgm4);

И наконец, выполняется операция сегментации на основе водораздела.

L=watershed(gradmag2);

Шаг 6: Визуализация результата обработки.

Отобразим на исходном изображении наложенные маркеры переднего плана, маркеры фона и границы сегментированных объектов.

I4=I; I4(imdilate(L==0, ones(3, 3))|bgm|fgm4)=255; figure, imshow(I4) title("Маркеры и границы объектов, наложенные на исходное изображение")

В результате такого отображения можно визуально анализировать месторасположение маркеров переднего плана и фона.

Представляет интерес также отображение результатов обработки с помощью цветного изображения. Матрица, которая генерируется функциями watershed и bwlabel, может быть конвертирована в truecolor-изображение посредством функции label2rgb.

Lrgb=label2rgb(L, "jet", "w", "shuffle"); figure, imshow(Lrgb) title("Lrgb")

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

Figure, imshow(I), hold on himage=imshow(Lrgb); set(himage, "AlphaData", 0.3); title("Lrgb, наложенное на исходное изображение в полупрозрачном режиме")

1

Рассматриваются математические методы сегментации изображений стандарта Dicom. Разрабатываются математические методы сегментации изображений стандарта Dicom для задач распознавания медицинских изображений. Диагностика заболеваний зависит от квалификации исследователя и требует от него визуально проводить сегментацию, а математические методы по обработке растровых изображений являются инструментом для данной диагностики. Обработка полученных аппаратным обеспечением медицинских изображений без предварительной обработки графических данных в большинстве случаев дает неверные результаты. Выполнялись процедуры выделения контуров объектов методом Canny и дополнительными алгоритмами обработки растровых изображений. Результаты исследований позволяют вычислить необходимые для дальнейшего лечения пациента морфометрические, геометрические и гистограммные свойства образований в организме человека и обеспечить эффективное медицинское лечение. Разработанные принципы компьютерного автоматизированного анализа медицинских изображений эффективно используются для оперативных задач медицинской диагностики специализированного онкологического учреждения, так и в учебных целях.

распознавание образов

сегментация объектов интереса

медицинские изображения

1. Власов А.В., Цапко И.В. Модификация алгоритма Канни применительно к обработке рентгенографических изображений // Вестник науки Сибири. – 2013. – № 4(10). – С. 120–127.

2. Гонзалес Р., Вудс Р. Цифровая обработка изображений. – М.: Техносфера, 2006. – С. 1072.

3. Кулябичев Ю.П., Пивторацкая С.В. Структурный подход к выбору признаков в системах распознавания образов // Естественные и технические науки. – 2011. – № 4. – С. 420–423.

4. Никитин О.Р., Пасечник А.С. Оконтуривание и сегментация в задачах автоматизированной диагностики патологий // Методы и устройства передачи и обработки информации. – 2009. – № 11. – С. 300–309.

5. Canny J. A Computational approach to edge detection // IEEE Transactions on pattern analysis and machine intelligence. – 1986. – № 6. – P.679–698.

6. DICOM – Mode of access: http://iachel.ru/ zob23tai-staihroe/ DICOM

7. Doronicheva A.V., Sokolov A.A., Savin S.Z. Using Sobel operator for automatic edge detection in medical images // Journal of Mathematics and System Science. – 2014. – Vol. 4, № 4 – P. 257–260.

8. Jähne B., Scharr H., Körkel S. Principles of filter design // Handbook of Computer Vision and Applications. Academic Press. – 1999. – 584 p.

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

При проведении диагностики изображений стандарта DICOM определяется патологическая область, при подтверждении ее патологического характера решается задача классификации: отнесение к какому-либо из известных видов или выявление нового класса. Очевидная сложность - дефекты получаемого изображения, обусловленные как физическими ограничениями оборудования, так и допустимыми пределами нагрузки на организм человека. В результате именно на программные средства ложится задача дополнительной обработки изображений с целью повысить их диагностическую ценность для врача, представить в более удобном виде, выделить главное из больших объемов получаемых данных.

Цель исследования . Разрабатываются математические методы сегментации изображений стандарта Dicom для задач распознавания медицинских изображений. Диагностика заболеваний зависит от квалификации исследователя и требует от него визуально проводить сегментацию, а математические методы по обработке растровых изображений являются инструментом для данной диагностики. Обработка полученных аппаратным обеспечением медицинских изображений без предварительной обработки графических данных в большинстве случаев дает неверные результаты. Это связано с тем, что изначально изображения получены неудовлетворительного качества.

Материал и методы исследования

В качестве материала исследований используются компьютерные томограммы пациентов специализированного клинического учреждения. Прежде чем анализировать реальные графические данные, необходимо изображение подготовить или произвести предобработку. Этот этап решает задачу улучшения визуального качества медицинских изображений. Полезно разделить весь процесс обработки изображений на две большие категории: методы, в которых как входными данными, так и выходными являются изображения; методы, где входные данные - изображения, а в результате работы выходными данными выступают признаки и атрибуты, выявленные на базе входных данных. Этот алгоритм не предполагает, что к изображению используется каждый из вышеприведенных процессов. Регистрация данных - первый из процессов, отраженный на рис. 1.

Рис. 1. Основные стадии цифровой обработки графических данных

Регистрация может быть достаточно простой, как в примере, когда исходное изображение является цифровым. Обычно этап регистрации изображения предполагает предварительную обработку данных, к примеру, увеличение масштаба изображения. Улучшение изображения входит в число наиболее простых и впечатляющих направлений предварительной обработки. Как правило, за методами улучшения информативности изображений определена задача поиска плохо различимых пикселей или увеличения контрастности на исходном изображении . Одним из часто используемых методов улучшения информативности изображений является усиление контраста изображения, так как усиливаются границы объекта интереса. Нужно учесть, что улучшение качества изображения - это в определенной степени субъективная задача в обработке изображений. Восстановление изображений - это задача также относится к повышению визуального качества данных. Методы восстановления изображений опираются на математические и вероятностные модели деформации графических данных. Обработку изображений как этап следует отделять от понятия обработки изображения как всего процесса изменений изображения и получения некоторых данных. Сегментация или процесс выделения объектов интереса делит изображение на составляющие объекты или части. Автоматизированное выделение объектов интереса является в определенной степени сложной задачей цифровой обработки изображений. Слишком детализированная сегментация делает процесс обработки изображения затруднительным, если необходимо выделить объекты интереса. Но некорректная или недостаточно детализированная сегментация в большинстве задач приводит к ошибкам на заключительном этапе обработки изображений. Представление и описание графических данных, как правило, следуют за этапом выделения объектов интереса на изображении, на выходе которого в большинстве случаев имеются необработанные пиксели, образующие границы области или формируют все пиксели областей. При таких вариантах требуется преобразование данных в вид, доступный для компьютерного анализа. Распознавание образов является процессом, который определяет к какому-либо объекту идентификатор (например, «лучевая кость») на основании его описаний . Определим взаимосвязь базы знаний с модулями обработки изображений. База знаний (то есть информация о проблемной области) некоторым образом зашифрована внутри самой системы обработки изображений. Это знание может быть достаточно простым, как, например, детальное указание объектов изображения, где должна находиться зона интереса. Такое знание дает возможность ограничения области поиска. База знаний управляет работой каждого модуля обработки и их взаимодействием, что отражено на рис. 1 стрелками, направленными в две стороны между модулями и базой знаний. Сохранение и печать результатов часто также требует использования специальных методов обработки изображений. Недостаток этих этапов обработки изображения в системе обработки медицинских изображений заключается в том, то, что ошибки, созданные на первых этапах обработки, к примеру при вводе или выделения объектов интереса на изображении, могут привести к невозможности корректной классификации. Обработка данных производится строго последовательно, и в большинстве случаев отсутствует возможность возвращения на предыдущие этапы обработки, даже если ранее были получены некорректные результаты . Методы на этапе предварительной обработки достаточно разнообразны - выделение объектов интереса, их масштабирование, цветовая коррекция, корректировка пространственного разрешения, изменение контрастности и т.п. Одно из приоритетных действий на этапе предварительной обработки изображения - это корректировка контрастности и яркости. При использовании соответствующих масок возможно объединить два этапа (фильтрация и предварительная обработка) для увеличения скорости анализа данных. Заключительный результат анализа изображений в большинстве случаев определен уровнем качества сегментации, а степень детализации объектов интереса зависит от конкретной поставленной задачи . По этой причине не разработан отдельный метод или алгоритм, подходящий для решения всех задач выделения объектов интереса. Оконтуривание областей предназначено для выделения на изображениях объектов с заданными свойствами. Данные объекты, как правило, соответствуют объектам или их частям, которые маркируют диагносты. Итогом оконтуривания является бинарное или иерархическое (мультифазное) изображение, где каждый уровень изображения соответствует определенному классу выделенных объектов. Сегментация - это сложный этап в обработке и анализе медицинских данных биологических тканей, поскольку необходимо оконтуривать области, которые соответствуют разным объектам или структурам на гистологических уровнях: клеткам, органоидам, артефактам и т.д. Это объясняется высокой вариабельностью их параметров, низким уровнем контрастности анализируемых изображений и сложной геометрической взаимосвязью объектов. В большинстве случаях для получения максимально эффективного результата необходимо последовательно использовать разные методы сегментации объектов интереса на изображении. К примеру, для определения границ объекта интереса применяется метод морфологического градиента, после которого для областей, которые подходят незначительным перепадам характеристик яркости, проводится пороговая сегментация . Для обработки изображений, у которых несвязанные однородные участки различны по средней яркости, был выбран метод сегментации Canny, исследования проводятся на клиническом примере. При распознавании реальных клинических изображений моделирование плохо применимо. Большое значение имеет практический опыт и экспертные заключения об итоге анализа изображений. Для тестового изображения выбран снимок компьютерной томографии, где в явном виде присутствует объект интереса, представленный на рис. 2.

Рис. 2. Снимок компьютерной томографии с объектом интереса

Для реализации сегментирования используем метод Canny . Такой подход устойчив к шуму и демонстрирует в большинстве случаев лучшие результаты по отношению к другим методам. Метод Canny включает в себя четыре этапа:

1) предобработка - размытие изображения (производим уменьшение дисперсии аддитивного шума);

2) проведение дифференцирования размытого изображения и последующее вычисление значений градиента по направлениям x и y;

3) реализация не максимального подавления на изображении;

4) пороговая обработка изображения .

На первом этапе алгоритма Canny происходит сглаживание изображения с помощью маски фильтром Гаусса. Уравнение распределения Гаусса в N измерениях имеет вид

или в частном случае для двух измерений

(2)

где r - это радиус размытия, r 2 = u 2 + v 2 ; σ - стандартное отклонение распределения Гаусса.

Если используем 2 измерения, то эта формула задает поверхность концентрических окружностей, имеющих распределение Гаусса от центральной точки. Пиксели с распределением, отличным от нуля, используются для задания матрицы свертки, применяемого к исходному изображению. Значение каждого пикселя становится средневзвешенным для окрестности. Начальное значение пикселя принимает максимальный вес (имеет максимальное Гауссово значение), а соседние пиксели принимают минимальные веса, в зависимости от расстояния до них . Теоретически распределение в каждой точке изображения должно быть ненулевым, что следует расчету весовых коэффициентов для каждого пикселя изображения. Но практически при расчёте дискретного приближения функции Гаусса не учитываются пиксели на расстоянии > 3σ, поскольку оно достаточно мало. Таким образом, программе, обрабатывающей изображение, необходимо рассчитать матрицу ×, чтобы дать гарантию достаточной точности приближения распределения Гаусса .

Результаты исследования и их обсуждение

Результат работы фильтра Гаусса при данных равных 5 для размера маски гаусса и 1,9 значении параметра σ - стандартного отклонения распределения Гаусса, представлен на рис. 3. Следующим шагом осуществляется поиск градиента области интереса при помощи свертки сглаженного изображения с производной от функции Гаусса в вертикальном и горизонтальном направлениях вектора.

Применим оператор Собеля для решения данной задачи . Процесс базируется на простом перемещении маски фильтра от пикселя к пикселю изображения. В каждом пикселе (x, y) отклик фильтра вычисляется с предварительно определённых связей. В результате происходит первоначальное выделение краев. Следующим шагом происходит сравнение каждого пикселя с его соседями вдоль направления градиента и вычисляется локальный максимум. Информация о направлении градиента необходима для того, чтобы удалять пиксели рядом с границей, не разрывая саму границу вблизи локальных максимумов градиента, которое значит, что пикселями границ определяются точки, в которых достигается локальный максимум градиента в направлении вектора градиента. Такой подход позволяет существенно снизить обнаружение ложных краев и обеспечивает толщину границы объекта в один пиксель, что эмпирически подтверждается программной реализацией алгоритма сегментирования среза брюшной полости на снимке компьютерной томографии, представленного ниже на рис. 4.

Следующий шаг - использование порога, для определения нахождения границы в каждом заданном пикселе изображения. Чем меньше порог, тем больше границ будет находиться в объекте интереса, но тем более результат будет восприимчив к шуму, и оконтуривать лишние данные изображения. Высокий порог может проигнорировать слабые края области или получит границу несколькими областями. Оконтуривание границ применяет два порога фильтрации: если значение пикселя выше верхней границы - он принимает максимальное значение (граница считается достоверной), если ниже - пиксель подавляется, точки со значением, попадающим в диапазон между порогов, принимают фиксированное среднее значение. Пиксель присоединяется к группе, если он соприкасается с ней по одному из восьми направлений. Среди достоинств метода Canny можно считать то, что при обработке изображения осуществляется адаптация к особенностям сегментирования. Это достигается через ввод двухуровневого порога отсечения избыточных данных. Определяются два уровня порога, верхний - p high и нижний - p low , где p high > p low . Значения пикселей выше значения p high обозначаются как соответствующие границе (рис. 5).

Рис. 3. Применение фильтра Гаусса на компьютерной томограмме с объектом интереса

Рис. 4. Подавления не-максимумов на сегментируемом изображении

Рис. 5. Применение алгоритма сегментации Canny c разными значениями уровней порога

Практика показывает, что имеется некоторый интервал на шкале уровней порога чувствительности, при котором значение площади объекта интереса фактически неизменимое, но при этом существует определенный пороговый уровень, после которого отмечается «срыв» метода оконтуривания и итог выделения областей интереса становится неопределенным . Этот недостаток алгоритма, который можно компенсировать объединением алгоритма Canny с преобразованием Хафа для поиска окружностей. Сочетание алгоритмов позволяет максимально четко выделять объекты исследования, а также устранять разрывы в контурах .

Выводы

Таким образом, решена задача формулирования типовых характеристик патологических объектов на медицинских изображениях, что даст возможность в дальнейшем проводить оперативный анализ данных по конкретным патологиям. Важными параметрами для определения оценки качества сегментации являются вероятности ложной тревоги и пропуска - отказа. Эти параметры определяют применение автоматизации метода анализа. Сегментация при решении задачи классификации и распознавания объектов на изображениях является одной из первостепенных. Достаточно хорошо исследованы и применяются методы оконтуривания, базирующиея на сегментировании границ областей - Sobel, Canny, Prewit, Laplassian. Такой подход определен тем, что концентрация внимания человека при анализе изображений фокусируется зачастую на границах между более или менее однородными по яркости зонами. Исходя из этого, контуры часто выполняют задачу основы определения различных характеристик для интерпретирования изображений и объектов на них. Основная задача алгоритмов сегментирования зон интересов - это построение бинарного изображения, которое содержит замкнутые структурные области данных на изображении. Относительно к медицинским изображениям данными областями выступают границы органов, вены, МКЦ, а также опухоли. Разработанные принципы компьютерного автоматизированного анализа медицинских изображений эффективно используются как для оперативных задач медицинской диагностики специализированного онкологического учреждения, так и в учебных целях.

Исследовано при поддержке программы «Дальний Восток», грант № 15-I-4-014o.

Рецензенты:

Косых Н.Э., д.м.н., профессор, главный научный сотрудник, ФГБУН «Вычислительный центр» ДВО РАН, г. Хабаровск;

Левкова Е.А., д.м.н., профессор, ГОУ ВПО «Дальневосточный государственный университет путей сообщения», г. Хабаровск.

Библиографическая ссылка

Дороничева А.В., Савин С.З. МЕТОД СЕГМЕНТАЦИИ МЕДИЦИНСКИХ ИЗОБРАЖЕНИЙ // Фундаментальные исследования. – 2015. – № 5-2. – С. 294-298;
URL: http://fundamental-research.ru/ru/article/view?id=38210 (дата обращения: 06.04.2019). Предлагаем вашему вниманию журналы, издающиеся в издательстве «Академия Естествознания»

Сегментация изображений

Сегментация устанавливает характерные подмножества пикселов или разбиение изображения на связные области, каждая из которых в некотором смысле “однородна”. Процессы сегментации и выделения признаков можно рассматривать как присваивание пикселам меток, определяющих специальные классы, к которым эти пикселы принадлежат. Таким образом, на выходе процесса сегментации находится символьное изображение, в котором значениями пиксела являются метки, а не уровни яркости.

Классификация моделей изображений

Для сегментации изображений используют ту или иную модель, обеспечивающую более или менее адекватное описание реальных изображений. Выделяют два основных класса моделей изображений: статистические и пространственные. Статистические модели описывают совокупность точечных элементов изображения или его области. Пространственные модели описывают декомпозицию изображения на составные части или области.

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

В моделях первого порядка не учитывается, что изображение состоит из каких-либо согласованных частей (элементов текстуры, объектов и т. д.). Взаимное расположение элементов в пространстве учитывают модели совокупностей точечных элементов изображения более высокого порядка. Одной из моделей является матрица смежности значений яркости, элементы которой представляют собой частоты пар значений яркости при выбранном смещении. Величина смещения на практике выбирается достаточно малой, т. к. при большом смещении значения яркости становятся независимыми друг от друга.

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

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

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

Сегментация изображений методами пороговой обработки

Наиболее простым и широко распространенным методом сегментации изображений является пороговая обработка. В ряде стандартных методов выделения частей изображения по порогу величины порогов определяются непосредственно по гистограммам изображения (статистическая модель изображения первого порядка). Исторически первым методом этой группы методов является метод мод. Метод вытекает из предположения, что изображение содержит известное число однородных по яркости классов точек. Кроме того, считается, что граничные участки между замкнутыми областями занимают сравнительно небольшую площадь изображения. Поэтому на гистограмме им должны соответствовать межмодовые впадины, в пределах которых устанавливаются пороги сегментации.

Однако реальные изображения плохо удовлетворяют выдвинутым предположениям. Как правило, границы между областями размыты и модальная структура гистограммы выражена недостаточно. Кроме того, даже когда гистограмма имеет различимые моды, ее впадины могут быть настолько широкими и плоскими, что оказывается трудно локализовать дно впадины.

Если реальное изображение не удовлетворяет условиям метода мод, применяются следующие четыре подхода. Во-первых, улучшение гистограммы, в том числе, на основе локальных свойств изображения с использованием градиентной информации, статистик второго порядка, анализа кривизны интегральной функции распределения. Во-вторых, аппроксимация гистограммы смесью нормальных распределений и применение статистических методов для оптимального разделения этой смеси. Недостатком этого подхода является большая вычислительная сложность, кроме того, зачастую гауссоиды плохо аппроксимируют реальные моды. В-третьих, введение эмпирической меры качества сегментированного изображения и максимизация соответствующей критериальной функции - дискриминантный подход, энтропийный подход, моментный подход и др. В-четвертых, переход к использованию иных статистик для выбора порога, в частности, выбор порога непосредственно по локальным признакам. Использование локальных признаков позволяет сегментировать сложные реальные изображения более качественно.

Гистограммный анализ обеспечивает удовлетворительное качество сегментации тех изображений, которые состоят из однородных по яркости областей. Однако, при выделении малоразмерных объектов на сложном фоне, точки объектов не дают заметных пиков на гистограмме яркости. Поэтому применяется обработка с переменным порогом: для небольших фрагментов изображения осуществляется построение гистограмм, которые проверяются на бимодальность, а найденные локальные пороги интерполируются на оставшуюся часть изображения.

Ряд алгоритмов, основанных на дискриминантом анализе, предложен в работах Осту. Пусть G ={0,1,...,L }- возможные значения яркости изображения. Порог разделяет распределение значений яркости изображения на два класса C 0={0,1,...,t } и C 1={t +1,t +2,...,L }, t ÎG . Оптимальный порог t * определяется как

где - дисперсия распределения значений яркости изображения в целом, w0 - вероятность принадлежности наугад взятой точки к фону, https://pandia.ru/text/80/299/images/image004_46.gif" width="21" height="24">- средний уровень яркости фона (класса C 0).

Если площади объекта и фона резко отличаются друг от друга, гистограмма критериальной функции может быть мультимодальной. Поэтому необходимо определять все локальные пики, что серьезно снижает конкурентоспособность метода.

Энтропийный критерий для выбора оптимального порога. Пользуясь введенными ранее определениями, гистограмму значений яркости можно рассматривать как L -символьный источник информации с энтропией

,

где pi – вероятность яркости со значением i .

Энтропия источника складывается из энтропии объекта H 0 и энтропии фона H 1, а оптимальный порог должен давать максимальное значение этой суммы:

, (2)

при этом .

Поскольку каждое из слагаемых H 0 и H 1 характеризует равномерность распределения яркостей на соответствующих интервалах и резко уменьшается при попадании в данный интервал "чужого" фрагмента гистограммы максимум энтропийного критерия будет соответствовать наилучшему варианту сегментации. Недостатком этого метода является то, что критериальная функция может иметь несколько близких по значению максимумов.

В отличие от дискриминантного подхода в методе сохранения моментов вводятся все моменты изображения до (2k +1) порядка включительно:

.

Оптимальным считается порог, обеспечивающий равенство соответствующих моментов сегментированного и исходного изображений. Однако если k >3, то возникают трудности, связанные с отсутствием аналитического решения задачи.

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

Метод максимума среднего контраста. В основу метода положено простое эвристическое определение оптимального порога: оптимальным для сегментации изображений считается порог, выделяющий больше высококонтрастных и меньше низкоконтрастных перепадов яркости, чем любой другой порог. Количественным выражением критерия является средний контраст всех перепадов яркости, выделяемых данным порогом. Порог, соответствующий максимальному среднему контрасту, является оптимальным. Если две смежные точки Х 1=(х 1,y 1) и X 2=(x 2,y 2) имеют значения яркости f (Х 1) и f (X 2) (без потери общности f (X 1)£f (X 2)), то количество перепадов, выделяемых порогом t , равно:

где

Полный контраст, соответствующий порогу t , равен:

где DIV_ADBLOCK169">

. (3)

На основе предложенных Хараликом матриц смежности значений яркости рассмотрен следующий метод сегментации. Для изображения строятся матрицы совместного появления уровней яркостей пар смежных точек в горизонтальном P 1,0 и вертикальном P 1,90 направлениях, а также суммарная матрица переходов, размером (L +1)´(L +1):

P vh = P 1,0 + P 1,90.

Произвольный порог t разбивает точки изображения на два класса С 0 и С 1, а матрицу переходов - на 4 блока.

Сегментация изображений с U-Net на практике

Введение

В этом блог посте мы посмотрим как Unet работает, как реализовать его, и какие данные нужны для его обучения. Для этого мы будем рассматривать:

  1. как источник для вдохновения.
  2. Pytorch как инструмент для реализации нашей задумки.
  3. Kaggle соревнования как место где мы можем опробовать наши гипотезы на реальных данных.

Мы не будем следовать на 100% за статьей, но мы постараемся реализовать ее суть, адаптировать под наши нужды.

Презентация проблемы

В этой задаче нам дано изображение машины и его бинарная маска(локализующая положение машины на изображении). Мы хотим создать модель, которая будет будет способна отделять изображение машины от фона с попиксельной точностью более 99%.

Для понимания того что мы хотим, gif изображение ниже:

Изображение слева - это исходное изображение, справа - маска, которая будет применяться на изображение. Мы будем использовать Unet нейронную сеть, которая будет учиться автоматически создавать маску.

  1. Подавая в нейронную сеть изображения автомобилей.
  2. Используя функцию потерь, сравнивая вывод нейронной сети с соответствующими масками и возвращающую ошибку для сети, чтобы узнать в каких местах сеть ошибается.

Структура кода

Код был максимально упрощен для понимания как это работает. Основной код находится в этом файле main.py , разберем его построчно.

Код

Мы будем итеративно проходить через код в main.py и через статью. Не волнуйтесь о деталях, спрятанных в других файлах проекта: нужные мы продемонстрируем по мере необходимости.

Давайте начнем с начала :

def main (): # Hyperparameters input_img_resize = (572 , 572 ) # The resize size of the input images of the neural net output_img_resize = (388 , 388 ) # The resize size of the output images of the neural net batch_size = 3 epochs = 50 threshold = 0. 5 validation_size = 0. 2 sample_size = None # -- Optional parameters threads = cpu_count() use_cuda = torch.cuda.is_available() script_dir = os.path.dirname(os.path.abspath(__file__ )) # Training callbacks tb_viz_cb = TensorboardVisualizerCallback(os.path.join(script_dir,"../logs/tb_viz" )) tb_logs_cb = TensorboardLoggerCallback(os.path.join(script_dir,"../logs/tb_logs" )) model_saver_cb = ModelSaverCallback(os.path.join(script_dir,"../output/models/model_" + helpers.get_model_timestamp()), verbose= True )

В первом разделе вы определяете свои гиперпараметры, их можете настроить по своему усмотрению, например в зависимости от вашей памяти GPU. Optimal parametes определяют некоторые полезные параметры и callbacks . TensorboardVisualizerCallback - это класс, который будет сохранять предсказания в tensorboard в каждую эпоху тренировочного процесса, TensorboardLoggerCallback сохранит значения функций потерь и попиксельную «точность» в tensorboard . И наконец ModelSaverCallback сохранит вашу модель после завершения обучения.

# Download the datasets ds_fetcher = DatasetFetcher () ds_fetcher. download_dataset()

Этот раздел автоматически загружает и извлекает набор данных из Kaggle. Обратите внимание, что для успешной работы этого участка кода вам необходимо иметь учетную запись Kaggle с логином и паролем, которые должны быть помещены в переменные окружения KAGGLE_USER и KAGGLE_PASSWD перед запуском скрипта. Также требуется принять правила конкурса, перед загрузкой данных. Это можно сделать на вкладке загрузки данных конкурса

# Get the path to the files for the neural net X_train, y_train, X_valid, y_valid = ds_fetcher.get_train_files(sample_size= sample_size, validation_size= validation_size) full_x_test = ds_fetcher.get_test_files(sample_size) # Testing callbacks pred_saver_cb = PredictionsSaverCallback(os.path.join (script_dir,"../output/submit.csv.gz" ), origin_img_size, threshold)

Эта строка определяет callback функцию для теста (или предсказания). Она будет сохранять предсказания в файле gzip каждый раз, когда будет произведена новая партия предсказания. Таким образом, предсказания не будут сохранятся в памяти, так как они очень большие по размеру.

После окончания процесса предсказания вы можете отправить полученный файл submit.csv.gz из выходной папки в Kaggle.

# -- Define our neural net architecture # The original paper has 1 input channel, in our case we have 3 (RGB ) net = unet_origin. UNetOriginal ((3 , *img_resize)) classifier = nn. classifier. CarvanaClassifier (net, epochs) optimizer = optim. SGD (net. parameters() , lr= 0.01 , momentum= 0.99 ) train_ds = TrainImageDataset (X_train , y_train, input_img_resize, output_img_resize, X_transform = aug. augment_img) train_loader = DataLoader (train_ds, batch_size, sampler= RandomSampler (train_ds), num_workers= threads, pin_memory= use_cuda) valid_ds = TrainImageDataset (X_valid , y_valid, input_img_resize, output_img_resize, threshold= threshold) valid_loader = DataLoader (valid_ds, batch_size, sampler= SequentialSampler (valid_ds), num_workers= threads, pin_memory= use_cuda)

print ("Training on {} samples and validating on {} samples " . format(len(train_loader. dataset), len(valid_loader. dataset))) # Train the classifier classifier. train(train_loader, valid_loader, epochs, callbacks= )

test_ds = TestImageDataset (full_x_test, img_resize) test_loader = DataLoader (test_ds, batch_size, sampler= SequentialSampler (test_ds), num_workers= threads, pin_memory= use_cuda) # Predict & save classifier. predict(test_loader, callbacks= ) pred_saver_cb. close_saver()

Наконец, мы делаем то же самое, что и выше, но для прогона предсказания. Мы вызываем наш pred_saver_cb.close_saver() , чтобы очистить и закрыть файл, который содержит предсказания.

Реализация архитектуры нейронной сети

Статья Unet представляет подход для сегментации медицинских изображений. Однако оказывается этот подход также можно использовать и для других задач сегментации. В том числе и для той, над которой мы сейчас будем работать.

Перед тем, как идти вперед, вы должны прочитать статью полностью хотя бы один раз. Не волнуйтесь, если вы не получили полного понимания математического аппарата, вы можете пропустить этот раздел, также как главу «Эксперименты». Наша цель заключается в получении общей картины.

Задача оригинальной статьи отличается от нашей, нам нужно будет адаптировать некоторые части соответственно нашим потребностям.

В то время, когда была написана работа, были пропущены 2 вещи, которые сейчас необходимы для ускорения сходимости нейронной сети:

  1. BatchNorm.
  2. Мощные GPU.

Первое был изобретено всего за 3 месяца до Unet , и вероятно слишком рано, чтобы авторы Unet добавили его в свою статью.

На сегодняшний день BatchNorm используется практически везде. Вы можете избавиться от него в коде, если хотите оценить статью на 100%, но вы можете не дожить до момента, когда сеть сойдется.

Что касается графических процессоров, в статье говорится:

To minimize the overhead and make maximum use of the GPU memory, we favor large input tiles over a large batch size and hence reduce the batch to a single image

Они использовали GPU с 6 ГБ RAM, но в настоящее время у GPU больше памяти, для размещения изображений в одном batch’e. Текущий batch равный трем, работает для графического процессора в GPU с 8 гб RAM. Если у вас нет такой видеокарты, попробуйте уменьшить batch до 2 или 1.

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

Теперь давайте начнем с самого начала, проектируя архитектуру нейронной сети:

Вот как выглядит Unet. Вы можете найти эквивалентную реализацию Pytorch в модуле nn.unet_origin.py.

Все классы в этом файле имеют как минимум 2 метода:

  • __init__() где мы будем инициализировать наши уровни нейронной сети;
  • forward() который является методом, называемым, когда нейронная сеть получает вход.

Давайте рассмотрим детали реализации:

  • ConvBnRelu - это блок, содержащий операции Conv2D, BatchNorm и Relu. Вместо того, чтобы набирать их 3 для каждого стека кодировщика (группа операций вниз) и стеков декодера (группа операций вверх), мы группируем их в этот объект и повторно используем его по мере необходимости.
  • StackEncoder инкапсулирует весь «стек» операций вниз, включая операции ConvBnRelu и MaxPool , как показано ниже:



Мы отслеживаем вывод последней операции ConvBnRelu в x_trace и возвращаем ее, потому что мы будем конкатенировать этот вывод с помощью стеков декодера.

  • StackDecoder - это то же самое, что и StackEncoder, но для операций декодирования, окруженных ниже красным:



Обратите внимание, что он учитывает операцию обрезки / конкатенации (окруженную оранжевым), передавая в down_tensor, который является не чем иным, как тензором x_trace, возвращаемым нашим StackEncoder .

  • UNetOriginal - это место, где происходит волшебство. Это наша нейронная сеть, которая будет собирать все маленькие кирпичики, представленные выше. Методы init и forward действительно сложны, они добавляют кучу StackEncoder , центральной части и под конец несколько StackDecoder . Затем мы получаем вывод StackDecoder , добавляем к нему свертку 1x1 в соответствии со статьей, но вместо того, чтобы определять два фильтра в качестве вывода, мы определяем только 1, который фактически будет нашим прогнозом маски в оттенках серого. Далее мы «сжимаем» наш вывод, чтобы удалить размер канала (всего 1, поэтому нам не нужно его хранить).

Если вы хотите понять больше деталей каждого блока, поместите контрольную точку отладки в метод forward каждого класса, чтобы подробно просмотреть объекты. Вы также можете распечатать форму ваших тензоров вывода между слоями, выполнив печать (x.size() ).

Тренировка нейронной сети

  1. Функция потерь

Теперь к реальному миру. Согласно статье:

The energy function is computed by a pixel-wise soft-max over the final feature map combined with the cross-entropy loss function.

Дело в том, что в нашем случае мы хотим использовать dice coefficient как функцию потерь вместо того, что они называют «энергетической функцией», так как это показатель, используемый в соревновании Kaggle , который определяется:

X является нашим предсказанием и Y - правильно размеченной маской на текущем объекте. |X| означает мощность множества X (количество элементов в этом множестве) и ∩ для пересечения между X и Y .

Код для dice coefficient можно найти в nn.losses.SoftDiceLoss .

class SoftDiceLoss (nn.Module): def __init__(self, weight= None, size_average= True): super (SoftDiceLoss, self).__init__() def forward(self, logits, targets): smooth = 1 num = targets.size (0 ) probs = F.sigmoid(logits) m1 = probs.view(num, - 1 ) m2 = targets.view(num, - 1 ) intersection = (m1 * m2) score = 2 . * (intersection.sum(1 ) + smooth) / (m1.sum(1 ) + m2.sum(1 ) + smooth) score = 1 - score.sum() / num return score

Причина, по которой пересечение реализуется как умножение, и мощность в виде sum() по axis 1 (сумма из трех каналов) заключается в том, что предсказания и цель являются one-hot encoded векторами.

Например, предположим, что предсказание на пикселе (0, 0) равно 0,567, а цель равна 1, получаем 0,567 * 1 = 0,567. Если цель равна 0, мы получаем 0 в этой позиции пикселя.

Мы также использовали плавный коэффициент 1 для обратного распространения. Если предсказание является жестким порогом, равным 0 и 1, трудно обратно распространять dice loss .

Затем мы сравним dice loss с кросс-энтропией, чтобы получить нашу функцию полной потери, которую вы можете найти в методе _criterion из nn.Classifier.CarvanaClassifier . Согласно оригинальной статье они также используют weight map в функции потери кросс-энтропии, чтобы придать некоторым пикселям большее ошибки во время тренировки. В нашем случае нам не нужна такая вещь, поэтому мы просто используем кросс-энтропию без какого-либо weight map.

2. Оптимизатор

Поскольку мы имеем дело не с биомедицинскими изображениями, мы будем использовать наши собственные augmentations . Код можно найти в img.augmentation.augment_img . Там мы выполняем случайное смещение, поворот, переворот и масштабирование.

Тренировка нейронной сети

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

Для этого вам нужно запустить Tensorboard в папке logs с помощью команды:

Tensorboard --logdir=./logs

Пример того, что вы сможете увидеть в Tensorboard после эпохи 1:




Top