Введение


Сетчатка глаза, как и любой другой объект, имеет свои признаки. Основными её признаками являются кровеносные сосуды, оптический диск и макулярная область (рис. 1).

image
Рис. 1. Строение сетчатки глаза

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

Сегментация кровеносных сосудов


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

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

image
Рис. 2. Пример из базы данных DRIVE (серый канал — слева, зелёный канал — справа)

Помимо использования зелёного канала применяется контрастно-ограниченное адаптивное выравнивание гистограммы (contrast limited adaptive histogram equalization – clahe). Результат алгоритма представлен на рис. 3.

image
Рис. 3. Clahe (слева – исходное изображение, справа – изображение после применения алгоритма)

Удаление фона при помощи average фильтра


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

Для удаления границ круга вычисляется его маска (рис. 4) при помощи порогового преобразования и морфологического открытия и вычитается из полученного на предыдущем шаге изображения. После чего ещё раз применяется clahe. Результат изображён на рис. 5.

image
Рис. 4. Маска сетчатки

image
Рис. 5. Удаление фона (слева — результат average фильтра, справа — после вычитания и clahe)

Далее применяется автоматическое пороговое преобразование методом Otsu, медианный фильтр и фильтр по длине. Результат алгоритма сегментации и эталон показаны на рис. 6.

Для удобства данный алгоритм сегментации и алгоритм удаления фона оба будут в дальнейшем называться background exclusion.

image
Рис. 6. Результат сегментации (слева – результат алгоритма, справа – эталон, размеченный вручную экспертом)

Фильтр Габора


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

image
где
  • image
  • image
  • image, image – координаты ядра в заранее заданных пределах;
  • image – период ядра в пикселях;
  • image – наклон ядра;
  • image – дисперсия Гауссиана;
  • image – смещение фазы ядра;
  • image – сжатие Гауссиана.

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

Как видно на рис. 7, большая часть шумов исчезла, однако оптический диск, фон и макулярная область по-прежнему остались. Чтобы их исключить, перед серией фильтров Габора применяется алгоритм удаления фона с теми же параметрами, что и в предыдущем разделе. Результат представлен на рис. 8.

image
Рис. 7. Фильтр Габора (слева – исходное изображение после clahe, справа – результат применения серии габоровских фильтров)

image
Рис. 8. Удаление фона + фильтр Габора (слева – исходное изображение, полученное при помощи алгоритма background exclusion, справа – результат применения серии габоровских фильтров)

Следующим шагом алгоритма является пороговое преобразование.
Чтобы метод Otsu показывал более точные результаты сегментации, необходимо преобразовать все цвета, являющиеся фоном, в один цвет. Для этого рассмотрим гистограмму правого изображения рис. 8 (рис. 9):

image
Рис. 9. Гистограмма изображения, полученного при помощи серии фильтров Габора

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

Введём параметр чувствительности алгоритма от 0 до 100. Границей порогового преобразования будет ближайший цвет, количество пикселей которого не превосходит значение параметра чувствительности слева от пика. Найденное значение будет новым значением интенсивности пикселей, находящихся справа от границы. Результат представлен на рис. 10.

image
Рис. 10. Пороговое преобразование интенсивности изображения (слева – исходное изображение, полученное после перекрашивания пикселей в соответствии с параметром чувствительности, справа – результат метода Otsu)

В реализации фильтр Габора использовался со следующими параметрами:
  • размер ядра – 15 x 15;
  • image – 4;
  • image – от 0 до 170 градусов с шагом 10;
  • image – 1;
  • image – 0;
  • image – 0.15.

Приведённые выше параметры подбирались для базы данных DRIVE.

Тестирование алгоритмов сегментации
Алгоритм тестировался на двух базах данных: DRIVE и STARE. Первая база состоит из 40 изображений, полученных при помощи камеры Canon CR5 в 24-битном цветовом пространстве и c разрешением 565 x 584. Вторая база данных состоит из 20 изображений, полученных при помощи камеры TopCon TRV-50 в 24-битном цветовом пространстве и c разрешением 700 x 605. Обе базы данных предоставляют размеченные вручную экспертами эталоны сегментации сосудов.

Параметры эффективности алгоритма:
  • P – количество пикселей, соответствующих сосудам;
  • N – количество пикселей, соответствующих фону;
  • TP – количество пикселей, являющихся частью сосуда и определённых как пиксель сосуда;
  • TN – количество пикселей, не являющихся частью сосуда и определённых как фон;
  • FP – количество пикселей, не являющихся частью сосуда и определённых как пиксель сосуда;
  • FN – количество пикселей, являющихся частью сосуда и определённых как фон;
  • Sensitivity= TP/(TP+FN);
  • Specificity= TN/(TN+FP);
  • Accuracy= (TP+TN)/(P+N).


Эффективность различных алгоритмов сегментации кровеносных сосудов на базе данных DRIVE
Метод сегментации Accuracy Sensitivity Specificity
Human observer 0.9473 0.7761 0.9725
Staal et al. 0.9442 0.7345 0.9773
Niemeijer et al. 0.9416 0.7145 0.9801
Zana and Klein 0.9377 0.6971 0.9769
Jiang and Mojon 0.9212 0.6399 0.9625
Vlachos and Dermatas 0.9285 0.7468 0.9551
Wang et al. 0.9461 N/A N/A
Martinez-Perez et al. 0.9181 0.6389 0.9496
Szpak and Tapamo 0.9299 N/A N/A
Chaudhuri et al. 0.8773 0.3357 0.9794
Soares et al. 0.9466 N/A N/A
Akram and Khan 0.9469 N/A N/A
Mendonca and Campilho 0.9463 0.7315 N/A
Marin et al. 0.9452 0.7067 0.9801
Ricci and Perfetti 0.9595 N/A N/A
Xiao et al. 0.9529 0.7513 0.9792
Yin et al. 0.9267 0.6522 0.9710
Chakraborti et al. 0.9370 0.7205 0.9579
Background exclusion 0.9501 0.7183 0.9722
Background exclusion + Gabor 0.9580 0.7174 0.9809

Эффективность различных алгоритмов сегментации кровеносных сосудов на базе данных STARE
Метод сегментации Accuracy Sensitivity Specificity
Human observer 0.9354 0.8949 N/A
Hoover 0.9275 0.6751 0.9567
Staal et al. 0.9516 0.6970 N/A
Jiang and Mojon 0.9009 N/A N/A
Marin et al. 0.9526 0.6944 0.9819
Ricci and Perfetti 0.9584 N/A N/A
Soares et al. 0.9480 N/A N/A
Akram and Khan 0.9502 N/A N/A
Wang et al. 0.9521 N/A N/A
Mendonca and Campilho 0.9479 0.7123 N/A
Xiao et al. 0.9476 0.7147 0.9735
Yin et al. 0.9412 0.7248 0.9666
Chakraborti et al. 0.9379 0.6786 0.9586
Background exclusion 0.9562 0.7379 0.9742
Background exclusion + Gabor 0.9381 0.7918 0.9502


Список использованных источников и литературы
  • Marwan D. Saleh, C. Eswaran, and Ahmed Mueen. An Automated Blood Vessel Segmentation Algorithm Using Histogram Equalization and Automatic Threshold Selection // Journal of Digital Imaging, Vol 24, No 4 (August), 2011, pp 564-572
  • P. C. Siddalingaswamy, K. Gopalakrishna Prabhu. Automatic detection of multiple oriented blood vessels in retinal images // J. Biomedical Science and Engineering, 2010, 3, pp 101-107
  • www.isi.uu.nl/Research/Databases/DRIVE
  • www.ces.clemson.edu/~ahoover/stare

Комментарии (9)


  1. leshabirukov
    28.05.2015 17:10
    +1

    Вы решаете задачу аутентификации полностью, или ваш интерес ограничен описанной частью? Насколько ресурсоёмки описанные алгоритмы, можно ли отнести устройство к встраиваемым решениям, какова оценочная стоимость устройства?


    1. forcesh Автор
      28.05.2015 18:41
      +2

      Да, решается задача аутентификации. В планах написать продолжение статьи про сопоставление признаков. Background exclusion — 40 ms на 1 ядре, Background exclusion + Gabor — 830 ms на 2 ядрах (процессоре Pentium® Dual-CoreT4500 с частотой 2.30 GHz на базе данных DRIVE). Я занимался только разработкой алгоритма, поэтому не могу отвтетить на вопросы, касающиеся аппаратной части.


  1. Tutufa
    28.05.2015 17:26
    +1

    Было бы круто добавить код для выполнения описанных преобразований.


  1. ZlodeiBaal
    28.05.2015 17:56
    +1

    А зачем?.. Просто сетчатка это один из самых плохих биометрических признаков. Очень неудобный в использовании, очень нестойкий к отклонениям (старость и болезни). Статистика тоже не сказать что супер. Очень дорогая аппаратура съёмки…

    Курсовая работа?


    1. forcesh Автор
      28.05.2015 18:48

      Я реализовал алгоритм, который находит смещение и вращение одного образца относительно другого при помощи метода фазовой корреляции. На базе данных VARIA точность получилась 100%. Как уже написал в другом комментарии, в планах написать продолжение статьи об этом.
      При появлении болезней либо старения образцы в базе данных можно обновлять.
      С дороговизной оборудованию полностью с вами согласен.
      Дипломная работа.


      1. ZlodeiBaal
        28.05.2015 20:36
        +3

        «При появлении болезней либо старения образцы в базе данных можно обновлять.»
        Ну, во первых — это плохо. Ни один из других биометрических признаков не позволяет себе этого. При некоторых болезнях вам придётся раз в месяц обновлять. Во-вторых, проблема не в этом. Проблема в том, что в больном глазу можно увидеть не идеализированную картину, а нечто сумбурное и полностью противоречивое здоровым глазам. Что на этом фоне будет венами — непонятно. Я слышал, что большинство серьёзных алгоритмов уходило в отказ.

        «На базе данных VARIA точность получилась 100%»
        Значит база очень маленькая. Тестирование баз по радужке, например, имеет смысл когда у вас несколько сот человек в базе отснятых в разное время по десятке подходов за сессию. Это нижняя граница. По венам рук (статистика сетчатке примерно схожа с ними, минимальная база при оценке должна быть рукам по 100 хотя бы, подходов по 5 на каждую) И, кстати, да. На будущее почитайте про FAR, FRR, EER. Писать «100% точность» это обычно журналисты пишут, которые первый день что-то делают.

        «С дороговизной оборудованию полностью с вами согласен.»
        Ладно дороговизна. Вы хоть раз видели как снимается сетчатка? Сколько это тратит времени, и насколько это специализированный процесс?

        «Дипломная работа.»
        Просто технология на данный момент практически мертва и нигде не применима. Попробуйте чуть-чуть расширить взгляд и посмотреть что есть интересного из современных идей. Например распознавания по венам в углах белка. Или по тем же венам рук. Алгоритмы во многом будут пересекаться, не придётся что-то кардинально переделывать, зато работа будет актуально и на острие прогресса ^_^


        1. goodok
          29.05.2015 15:52
          +1

          В этой TED-пятиминутке рассказывается о стартапчике, который нацелился радикально снизить стоимость сканирования сетчатки. Примерно с с 2:50 показано, как на 3D принтере печатают оптичесукю насадку на смартфон и демонстрируют процесс и результат сканирования.
          www.ted.com/talks/andrew_bastawrous_get_your_next_eye_exam_on_a_smartphone?language=en


  1. goodok
    29.05.2015 15:50
    +1

    Неплохая разминка к соревнованию diabetic-retinopathy-detection, которое закончится через 2 месяца https://www.kaggle.com/c/diabetic-retinopathy-detection
    Там 50 тысяч примеров изображений в training set.

    По крайней мере на форуме сегментация кровеносных сосудов на сетчатке обсуждается как подзадача выделения признаков, которые можно потом скармливать нейронной сети. Вон ЛеКун уже дошёл до того, чтобы применять deeplearning прямо на буквах и иероглифах arxiv.org/abs/1502.01710

    Параметры фильтров Габора могуть быть параметрами ядер первого слоя нейронной сети. www.icsi.berkeley.edu/pubs/speech/robustCNN14.pdf


  1. forcesh Автор
    30.05.2015 17:51
    +1

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