Введение
Сетчатка глаза, как и любой другой объект, имеет свои признаки. Основными её признаками являются кровеносные сосуды, оптический диск и макулярная область (рис. 1).
Рис. 1. Строение сетчатки глаза
Как правило, при аутентификации сравнивают только кровеносные сосуды либо признаки, связанные с ними, поскольку их уникальность легко различима. Диск же может служить только в качестве дополнительного параметра для сопоставления, однако применяется это довольно редко. Макулярная область для целей аутентификации не используется совсем.
Сегментация кровеносных сосудов
Перед тем, как приступить к сегментации, для получения более точных результатов необходимо улучшить контрастность между фоном и сегментируемым объектом.
Рис. 2. Пример из базы данных DRIVE (серый канал — слева, зелёный канал — справа)
Помимо использования зелёного канала применяется контрастно-ограниченное адаптивное выравнивание гистограммы (contrast limited adaptive histogram equalization – clahe). Результат алгоритма представлен на рис. 3.
Рис. 3. Clahe (слева – исходное изображение, справа – изображение после применения алгоритма)
Удаление фона при помощи average фильтра
Для упрощения сегментации сосудов вначале удаляется фон. Это делается при помощи вычитания исходного изображения из сглаженного average фильтром изображения. Размеры окна фильтра выбираются равными максимальной толщине сосудов в пикселях.
Для удаления границ круга вычисляется его маска (рис. 4) при помощи порогового преобразования и морфологического открытия и вычитается из полученного на предыдущем шаге изображения. После чего ещё раз применяется clahe. Результат изображён на рис. 5.
Рис. 4. Маска сетчатки
Рис. 5. Удаление фона (слева — результат average фильтра, справа — после вычитания и clahe)
Далее применяется автоматическое пороговое преобразование методом Otsu, медианный фильтр и фильтр по длине. Результат алгоритма сегментации и эталон показаны на рис. 6.
Для удобства данный алгоритм сегментации и алгоритм удаления фона оба будут в дальнейшем называться background exclusion.
Рис. 6. Результат сегментации (слева – результат алгоритма, справа – эталон, размеченный вручную экспертом)
Фильтр Габора
Данный метод сегментации основан на применении серии фильтров Габора. Отличительной особенностью данного фильтра является то, что он способен выделять прямые линии определённого размера и под определённым углом.
Действительная часть этого фильтра выглядит следующим образом:
где
- , – координаты ядра в заранее заданных пределах;
- – период ядра в пикселях;
- – наклон ядра;
- – дисперсия Гауссиана;
- – смещение фазы ядра;
- – сжатие Гауссиана.
Таким образом, чтобы выделить сосуды, нужно применить фильтр Габора с различными углами наклона ядра и посчитать максимальный отклик каждого пикселя на серию фильтров.
Как видно на рис. 7, большая часть шумов исчезла, однако оптический диск, фон и макулярная область по-прежнему остались. Чтобы их исключить, перед серией фильтров Габора применяется алгоритм удаления фона с теми же параметрами, что и в предыдущем разделе. Результат представлен на рис. 8.
Рис. 7. Фильтр Габора (слева – исходное изображение после clahe, справа – результат применения серии габоровских фильтров)
Рис. 8. Удаление фона + фильтр Габора (слева – исходное изображение, полученное при помощи алгоритма background exclusion, справа – результат применения серии габоровских фильтров)
Следующим шагом алгоритма является пороговое преобразование.
Чтобы метод Otsu показывал более точные результаты сегментации, необходимо преобразовать все цвета, являющиеся фоном, в один цвет. Для этого рассмотрим гистограмму правого изображения рис. 8 (рис. 9):
Рис. 9. Гистограмма изображения, полученного при помощи серии фильтров Габора
Из графика видно, что пик количества пикселей приходится на серый фон. Поэтому пиксели, цвет которых находится справа от пика, можно перекрасить в другой цвет. Однако небольшой шум всё же будет присутствовать на сегментированном изображении. Чтобы его устранить, можно сместить границу порогового преобразования от пика влево.
Введём параметр чувствительности алгоритма от 0 до 100. Границей порогового преобразования будет ближайший цвет, количество пикселей которого не превосходит значение параметра чувствительности слева от пика. Найденное значение будет новым значением интенсивности пикселей, находящихся справа от границы. Результат представлен на рис. 10.
Рис. 10. Пороговое преобразование интенсивности изображения (слева – исходное изображение, полученное после перекрашивания пикселей в соответствии с параметром чувствительности, справа – результат метода Otsu)
В реализации фильтр Габора использовался со следующими параметрами:
- размер ядра – 15 x 15;
- – 4;
- – от 0 до 170 градусов с шагом 10;
- – 1;
- – 0;
- – 0.15.
Приведённые выше параметры подбирались для базы данных DRIVE.
Параметры эффективности алгоритма:
- 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)
ZlodeiBaal
28.05.2015 17:56+1А зачем?.. Просто сетчатка это один из самых плохих биометрических признаков. Очень неудобный в использовании, очень нестойкий к отклонениям (старость и болезни). Статистика тоже не сказать что супер. Очень дорогая аппаратура съёмки…
Курсовая работа?forcesh Автор
28.05.2015 18:48Я реализовал алгоритм, который находит смещение и вращение одного образца относительно другого при помощи метода фазовой корреляции. На базе данных VARIA точность получилась 100%. Как уже написал в другом комментарии, в планах написать продолжение статьи об этом.
При появлении болезней либо старения образцы в базе данных можно обновлять.
С дороговизной оборудованию полностью с вами согласен.
Дипломная работа.ZlodeiBaal
28.05.2015 20:36+3«При появлении болезней либо старения образцы в базе данных можно обновлять.»
Ну, во первых — это плохо. Ни один из других биометрических признаков не позволяет себе этого. При некоторых болезнях вам придётся раз в месяц обновлять. Во-вторых, проблема не в этом. Проблема в том, что в больном глазу можно увидеть не идеализированную картину, а нечто сумбурное и полностью противоречивое здоровым глазам. Что на этом фоне будет венами — непонятно. Я слышал, что большинство серьёзных алгоритмов уходило в отказ.
«На базе данных VARIA точность получилась 100%»
Значит база очень маленькая. Тестирование баз по радужке, например, имеет смысл когда у вас несколько сот человек в базе отснятых в разное время по десятке подходов за сессию. Это нижняя граница. По венам рук (статистика сетчатке примерно схожа с ними, минимальная база при оценке должна быть рукам по 100 хотя бы, подходов по 5 на каждую) И, кстати, да. На будущее почитайте про FAR, FRR, EER. Писать «100% точность» это обычно журналисты пишут, которые первый день что-то делают.
«С дороговизной оборудованию полностью с вами согласен.»
Ладно дороговизна. Вы хоть раз видели как снимается сетчатка? Сколько это тратит времени, и насколько это специализированный процесс?
«Дипломная работа.»
Просто технология на данный момент практически мертва и нигде не применима. Попробуйте чуть-чуть расширить взгляд и посмотреть что есть интересного из современных идей. Например распознавания по венам в углах белка. Или по тем же венам рук. Алгоритмы во многом будут пересекаться, не придётся что-то кардинально переделывать, зато работа будет актуально и на острие прогресса ^_^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
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
forcesh Автор
30.05.2015 17:51+1На всякий случай про фильтр по длине. Вычисляется количество белых связных пикселей в каждом сегменте и если размер какого-то сегмента меньше порогового значения, то этот сегмент отбрасывается.
leshabirukov
Вы решаете задачу аутентификации полностью, или ваш интерес ограничен описанной частью? Насколько ресурсоёмки описанные алгоритмы, можно ли отнести устройство к встраиваемым решениям, какова оценочная стоимость устройства?
forcesh Автор
Да, решается задача аутентификации. В планах написать продолжение статьи про сопоставление признаков. Background exclusion — 40 ms на 1 ядре, Background exclusion + Gabor — 830 ms на 2 ядрах (процессоре Pentium® Dual-CoreT4500 с частотой 2.30 GHz на базе данных DRIVE). Я занимался только разработкой алгоритма, поэтому не могу отвтетить на вопросы, касающиеся аппаратной части.