Компьютерное зрение для расчета соотношения цифр (пальцев) - PullRequest
6 голосов
/ 15 июля 2011

Если кто-то сканирует свою правую руку, прижатую к стеклу сканера, результат будет выглядеть следующим образом:

freely licensed image from wikipedia

(без оранжевых и белых аннотаций).Как мы можем определить чье-то соотношение 2D: 4D по изображению их руки?

Ответы [ 2 ]

5 голосов
/ 16 июля 2011

Интересный вопрос. Я бы поступил так:

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

Полученный скелет руки может быть слегка отсоединен, и в этом случае использование функции морфологии OpenCV «ЗАКРЫТЬ» (не «открыть») может соединить его в один скелет. Затем проверка дефектов выпуклости полученной руки должна дать оценку.

5 голосов
/ 15 июля 2011

Вы уже пометили этот opencv, что замечательно - я настоятельно рекомендую взглянуть на openFrameworks и дополнение openCV, так как базовые примеры предоставят вам несколько отличных стартовых блоков для этого.

Общий подход к этому, который я выбрал бы, состоит в том, чтобы сначала отогнать изображение в светлых и темных областях, определить края кисти и пальцев, а затем упростить ваши данные, пока у вас не появятся линии, представляющие края и кончики пальцев.Наконец, возьмите нижний внутренний шов между 2-м и 3-м пальцами, останавливаясь на кончике 2-го, и внутренний шов 3-го и 4-го, останавливаясь на кончике 4-го, что должно дать вам соотношение 2D: 4D.

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

Хотя существует много подходов для обнаружения признаков, OpenCV обычно возвращает массивы обнаруженных «больших объектов».Я считаю, что с правильными порогами вы сможете надежно и просто найти смежные горизонтальные капли (или почти смежные, учитывая некоторое расстояние между соседними каплями) для внутренних швов каждого пальца.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...