Как стать автором
Обновить

Комментарии 35

Спасибо, очень интересно. Единственный вопрос, который постоянно возникает после прочтения статей подобного рода — а что ж подом дальше делать с этими контурами? Ну капча понятно, а еще как? Как хранить? Как сравнивать?
например автомобильные номера так распознают. что дальше делать с контуром? штраф выписывать, например.
Это частный случай распознавания текста, как в случае с капчей.
конечно! но Вы спросили что потом с ними делать…
К примеру, отделить объекты друг от друга. Номер (частное) — это разделение цифр на номерном знаке. В медицине — разделение опухолей и т.п. Только в медицине одними контурами не обойдешься — если в распознавании номеров все проще, то на медицинских изображениях слишком много лишнего бывает.
Контуры можно использовать для улучшения изображения. Например получив лапласиан и сложив с исходным изображением получите более четкие границы. Если тема интересна можете почитать Гонсалеса — у него все доступно и интересно описано.
Хранят обычно в виде изображений, особого смысла тут что-то меня лично я не вижу. Контуры можно использовать следующим образом (пример синтетический, но все же) — если нам важна форма и, например, положение на сцене, то мы можен провести преобразования из статьи (это поможет отсечь ненужную нам информацию), после чего извлечь локальные особенности (SIFT, SURF, MSER — их полно и на любой вкус) и скормить результат классификатору (часто используют метод опорных векторов SVM). Выводы классификатора о принадлежности контура к чему либо уже можно свободно использовать в конкретной задаче.
Потом контура утончаются, соединяются порванные куски по мере возможности. Затем все это дело «векторизуется» — трассируется. Потом можно составить по контуру цепной код и сравнивать уже их на множестве комплексных чисел — в этом блоге есть подобная хорошая статья.
это хороший вопрос, спасибо. По сути эти методы были введены в медицину для нахождения изъянов и опухолей и других дефектов изображение УЗИ, снимков и т.д. Хранить форматы разные от jpg => bmp. Сравнивать это уже скорее специфическая задача и сугубо для конкретной задачи.
Так в последствии обработка производится людьми?
Тут уже дело за кучей возможных решений и это уже отдельная СППР: ИИ или нейронных сетей, экспертных систем и т.д… по сути это лишь малая часть хобби, для полной обработки фото нужна фильтрация, бинаризация, нахождения краев, нахождения площади (кол-ва пикселей) и т.д.
>Алгоритм выделения границ или иначе обнаружения границ работают после того, как качество изображения улучшено перечисленными выше методами.

Все-таки спрошу, а где «выше» перечислены методы улучшения изображений? (i.e. «из какой книжки/презентации/статьи/etc паста?», похоже)
В данном случае, имеется в виду, что это последний этап и какие методы улучшения качества решать вам, хоть фильтрация, хоть увеличения/уменьшения контрастности, яркости и т.д., нахождения границ- это последний этап.
Смущает слово «выше» в первом абзаце.
Можно было еще описать Канни. Наверное один из самых используемых все таки.
Недавно я на прозьбу одного хабражителя подготовил подборку статей, ссылок и материалов на данную тему. Думаю будет интересно Вам для общего ознакомления и исспользования в собственых разработках.

Результаты быстрого исследования по теме расспознавания объектов по шаблону и по контуру
Спасибо, гляну при наличии времени.
не плохих
— одно из самых страшных слов в интернете =)
Раньше на хабр дипломные работы выкладывали, а теперь уже просто рефераты стали? Хотя это даже на реферат не тянет.

Когда ждать обзора «методы сложения и вычитания целых чисел»?
Будете смеяться, нечто подобное не так давно добавлял в свой дипломный проект в качестве воды :-)
Правда у меня ещё это дело было в исторической хронологии. Всё описанное здесь жуткий баян, а то что не описанно:
• J. F. Canny. A computational approach to edge detection. IEEE Trans. Pattern Analysis and Machine Intelligence, pages 679-698, 1986.
• J. Canny. A variational approach to edge detection. In AAAI-83, 1983.
Как видите тоже баян, но до сих пор мало кто умеет его правильно готовить, все тупо делают несколько проходов, и плюс блюр.
Хотя можно всё смешать в один флакон, например заполнив матрицу по Гаусу, а центральный её элемент сделать (- сумма всех остальных элементов), ну и делитель подобрать что бы при расчёте с ограниченной точностью не упереться в пороги.
Получается дёшево, в плане процессорного времени, и сердито тк в отличии от прочих методов, не «оконтуривает» границы а подсвечивает их, будь они хоть толщиной в один пиксель! И в плане вращения полная симметрия без садомазохизма :-)
Откровенно говоря не понимаю вашей позиции. Интернет дает уникальную взможность эффективно обмениваться опытом и решать совместо задачи. Люди должны генерировать контент, даже обязаны. Да, эта статья не открывает Америк и не выводит что-то сопоставимое с E=mc^2. Но она она хорошо оформлена, доходчиво объясняет полезный материал, что дает возможность предположить достаточный уровень подготовки автора и его отвественный подход. Это, на мой взгляд, дает шанс читателям заинтересоваться темой и начать работать в этой крайне интересной и важной области науки вообще и IT в частности. Что плохого в том, чтобы лишний раз напомнить такие фундаментальные вещи?
«Генерация контента» не должна быть самоцелью.

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

Впрочем каюсь, я просмотрел что это из песочницы. Человеку инвайт был нужен, вот он и написал чего знал. Так что ценность статьи вполне очевидна в данном случае :)
Спасибо, ваша позиция ясна. Согласен, для состоявшегося автора Хабры сильно не хватает новизны. Будем надеятся, что все еще впереди. )
Нефига, это чистый копипаст без малейшего намёка на осмысление!
Вот например цитата «Алгоритм оператора Прюитта подобен алгоритму оператору Собеля, за исключением использования другой матрицы»
Начнём с того что оператор не Прюитта, а Прюитт, ибо автор вообще то женщина, ну да оставим это для grammar nazi.
Но вот что у Прюитт восемь свёрток, а у Собеля произведение двух, автор не заметил, и почему именно так, а не иначе не понял, хотя именно из-за этого принципиального различия подход Прюитт до сих пор имеет место в медицинской технике…

И вообще, многие «алгоритмы» и «операторы» вовсе таковыми не являютя, в частности Канни и Прюитт обозначили именно подходы к решению задач о выделении краёв, а конкретные матрицы в учебниках даны просто для примера, это не операторы как у Робертса или Собеля или Шарра, они были давно и представляют исключительно исторический, академический интерес.

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

Короче, руская педивикия, не лучший источник статей о для копипаста, вы мало того что напоролись на перевод, притом давольно-таки кривой, но и исходный материалл был не фонтан.
Есть нормальные современные книги по машинному зрению, есть сайты, есть OpenCV наконец, где горадо более адекватная информация по теме!

Здесь же автор продемострировал некоторые навыки копирайтера, но не как не свою компетенцию в элементарных задачах обработки изображений!
Дипломные работы это очень хорошо, особенно если там мало воды.
Лично мне эта статья оказалось полезной. Во всяком случае нашел ее через гугл.
Маски, порог бинаризации, сглаживающие фильтры — У. Прэтт «Цифровая обработка изображений», помню часто гонял эту книжку в студенчестве. Все, что Вы описали здорово, +1.
Меня более бы интерсова иные вопросы, если сможете дать ответ, буду очень рад.
1. Как выбрать оптимально порог бинаризации? (в работе, что я привел выше, он вроде советуется около 80% от суммарной яркости изображения)
2. После бинаризации остается шум в виде незначащих элементов. Как его свести к минимуму?
3. В полученных изображениях в контурах имеются разрывы зачастую. Какие бы вы посоветовали алгоритмы поиска связанных контуров? Пожалуй это самый меня интересующий вопрос :)
1) На счет порога это хороший вопрос, вот на счет 80% от суммы яркости, могу сказать, что все скорее на глаз делается и все зависит от сферы деятельности. Как появится время хочу выложить 2-ю свою идею на счет некого коэффициента бинаризации в операторе Собеля. Была идея по средней яркости, по среднему после преобразования по Собелю.
2) Шум отсеивается за счет бинаризации, хотя если брать Канни то он его создает, потом убирает такой же критерий.
3) Вот на счет разрывов это самый коварный вопрос, продолжать линию — можно выйти и попасть не понятно куда, поэтому нужно или модернизировать или создать новый метод. Честно пока не готов ответить.
По 2 и 3 — а что Вам мешает применить эффекты dilation и erosion? Первое, условно, делает линии жирными (поможет с разрывами), второе линии сделает тоньше, но попутно уберет мелкие точки (шумы). За деталями рекомендую обратиться к свободно распространяемой «библии» компьютерного зрения Ричарда Зелиски, нужная тема где-то в районе 125-130 страниц. ) szeliski.org/Book/
У раздела «Дифференциальное выделение границ» замечательное содержание :)

Если вспомнили Собеля, грех не вспомнить оператор Лапласа. Если уж расписали обе матрицы для оператора Собеля, стоить добавить формулу для вычисления направления границы — «a = arctg(A*Gx / A*Gy)».

Из как уже заметили, метод Канни(Canny) — де-факто основной метод распознавания границ на изображении на сегодня, но о нем ни слова.
Вообще как-то слабо, учитывая что различные методы нахождения границ есть в OpenCV, при этом они неплохо работают. Но каждая статья по обработке изображений на хабре — это безусловно плюс. Тут уже и так неплохая подборка.
Конкретно по этой статье хочется одно замечание: тут рассмотрены методы исходя из того, что граница практически единичная. Это несправидливо, если в кадре крупные объекты. Для них фильтр должен иметь достаточно длинную базу.
Уже которая статья о том, как заменить одну картинку другой. Но не видел ни одной толковой о том, как, скажем, векторизовать границы, как бороться с разрывами границ там, где они рваться не должны и подобное. Вот что было бы интересно.
Это скорее будут вопросы диссертации, но сейчас скорее этими вопросами буду заниматься, нужно было отчасти и узнать куда дальше двигаться, поэтому после прочтения ряда вопросов от вас, есть куда дальше копать. Спасибо
Как бороться с разрывами границ мне тоже очень интересно. Не нашли ли вы за это время чего-нибудь по теме?
Извините а вы не могли бы выложить исходный код?
в личку напишите, решим, что вам нужно.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации