Программирование - это просто
Advertisement
Главная arrow Искусственный интеллект arrow Искусственный интеллект arrow Компьютерное зрение (платный раздел). arrow Компьютерное зрение. Урок 20. Адекватный алгоритм выделения контура
26.04.2018 г.
Главное меню
Главная
Системный подход
Интернет магазин
Биржевые роботы
Программные продукты
Математика и информатика
1С:Предприятие
C#, Delphi, VB, F#, Web и пр.
Искусственный интеллект
Услуги
Ча. Во. (FAQ)
Платный раздел
Наука для чайников
Разное
Размышления
Карта сайта
Друзья сайта
Excel-это не сложно
Все о финансах
Компьютерное зрение. Урок 20. Адекватный алгоритм выделения контура Печать E-mail
Автор megabax   
24.10.2016 г.
New Page 1

Компьютерное зрение. Урок 20. Адекватный алгоритм выделения контура

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

В платном разделе статья находится здесь.


На прошлом уроке мы исследовали алгоритм Кэнни из библиотеки OpenCV. Также я обещал продолжись тему о создании алгоритма выделения контура, которым мы занимались на уроке 16, Урок 17 и Уроке 18. Итак, повторим основные шаги процедуры выделения краев на изображении:

1. Сглаживаем изображение, например, фильтром Гаусса или медианной фильтрацией.

2. Получаем контурный препарат (карту градиента изображения). Для этого либо вычисляем градиент непосредственно, либо используем фильтр Собеля, Робертса или им подобные.

3. Находим точки начала построения контура и строим от них контур до точек конца построения контура.

Пункты 1 и 2 мы выполнили, а вот третий только наполовину: начальные точки успешно нашли, но вот при попытке провести от них точку до конечной точки (выделенных вторым порогом) мы часто промахивались.  Как это исправить? ...

...

...

... В качестве тестового примера возьмем вот такую фигуру (размазанный эллипс):

Компьютерное зрение. Урок 20. Алгоритм выделения контура

...

...

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

Как исправить? Идея заключается в том, чтобы ...

...

...

... Теперь тестирование:

        private void btnContour_Click(object sender, EventArgs e)

        {

            HSVFrame res = frame.gradient();

            res = res.get_edge(0.1,0.001);

            res.create_picture();

            pbImage.Image = res.picture;

        }

Получаем не очень то и хороший край:

Компьютерное зрение. Урок 20. Алгоритм выделения контура

К счастью, это можно отрегулировать порогами, если поставить 0.2 и 0..001 то получиться почти идеально: ...

...

...

И вот результат его работы:

Компьютерное зрение. Урок 20. Алгоритм выделения контура

 

 

Последнее обновление ( 24.10.2016 г. )
 
« След.   Пред. »
 
© 2018 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги
Мы принимаем
Банковские карты
Оплатите покупку в интернет-магазине банковскими картами VISA и Mastercard любого банка.
узнать больше
Электронный кошелек
Моментальная оплата покупок с помощью вашего электронного кошелька RBK Money.
узнать больше
Банковский платеж
Оплатите покупку в любом российском банке. Срок зачисления средств на счет - 3-5 рабочих дней.
узнать больше
Денежные переводы
Оплата покупок через крупнейшие системы денежных переводов CONTACT и Unistream.
узнать больше
Почтовые переводы
Оплатите покупку в любом отделении Почты России. Срок зачисления платежа - 3-4 рабочих дня.
узнать больше
Платежные терминалы
Оплата покупок в терминалах крупнейших платежных систем в любом городе России - быстро и без комиссии.
узнать больше