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

Компьютерное зрение. Урок 35. Matching pursuit. Продолжение - 2.

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

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


Продолжаем эксперименты с Matching pursuit. На прошлом уроке мы разлагали в разреженное представление вектор цвета каждого пикселя картинки. Теперь наш словарь будет состоять из векторов, образованных компонентами яркости определенного кусочка изображения, размером 2W+1 на 2W+1. Составлять словарь по прежнему будем щелкая мышкой по нужному место картинки, но теперь при добавлении сделаем еще небольшое превью. Для этого разместим на форме еще один PuctureBox*:

Компьютерное зрение. Урок 35. Matching pursuit. Продолжение - 2.

при предпросмотре у нас сразу миникартинка будет отображена в черно белом цвете, только компонент V:

        private void pbImage_MouseDoubleClick(object sender, MouseEventArgs e)

        {

            if (e.X > frame.width-W || e.X < W || e.Y > frame.height-W || e.Y < W) return;

 

            HSVFrame zoom = new HSVFrame(size, size);

            for (int dx = -W; dx <= W; dx++)

            {

                for (int dy = -W; dy <= W; dy++)

                {

                    zoom.matrix[dx+W,dy+W]=new FramePoint(0,0,frame.matrix[e.X + dx, e.Y + dy].V);

                }

            }

            zoom.create_picture();

            pbZoom.Image = zoom.picture;

            X = e.X;

            Y = e.Y;

        }

По кнопочке "Добавить" эта миникартника будет преобразована в вектор и добавлена в словарь:...

...

...

...Теперь начнем эксперимент. Размер матрице выберем 9 на 9 (заметьте, что это число должно быть нечетное), в нашем случае это 4 ∙ 2 +1. Итак, поехали, добавим шпиль башни:

 Компьютерное зрение. Урок 35. Matching pursuit. Продолжение - 2.

Затем просто небо:

Компьютерное зрение. Урок 35. Matching pursuit. Продолжение - 2.

Угол:

Компьютерное зрение. Урок 35. Matching pursuit. Продолжение - 2.

Вершина дерева:

Компьютерное зрение. Урок 35. Matching pursuit. Продолжение - 2.

Еще один угол:

Компьютерное зрение. Урок 35. Matching pursuit. Продолжение - 2.

Вот все эти места (счет их номеров в таком же порядке с нуля):

Компьютерное зрение. Урок 35. Matching pursuit. Продолжение - 2.

Теперь смотрим результаты.

Реакция на шпиль башни:

Компьютерное зрение. Урок 35. Matching pursuit. Продолжение - 2.

На небо:

Компьютерное зрение. Урок 35. Matching pursuit. Продолжение - 2.

На угол:

Компьютерное зрение. Урок 35. Matching pursuit. Продолжение - 2.

На вершину дерева:

Компьютерное зрение. Урок 35. Matching pursuit. Продолжение - 2.

И, наконец, на другой угол:

Компьютерное зрение. Урок 35. Matching pursuit. Продолжение - 2.

Как видим, где то метод работает хорошо, а где-то много ложных срабатываний. Почему так, будем скоро будет понятно, а пока еще немного теории о Matching pursuit. Поговорим о его достоинствах и недостатках. Собственно, достоинств та и нет, за исключением простоты реализации. А вот что касается недостатков:

  • Метод не самый оптимальный, потому что мы одни и те же вектора используем несколько раз. Это плохо, но нам приходиться использовать из-за "жадности" метода.

  • Существуют некоторые случаи, когда вектор можно оптимально разложить по двум вектора, но мы не можем этого сделать методом Matching pursuit даже за бесконечное число итераций (в чем мы наглядно убедились в наших экспериментах, отмените ограничение на количество итераций и программа "зависнет", а ограничение, как вы увидели, привело к тому, что метод стал работать довольно криво) .  Примером может случить вот эта иллюстрация:

Компьютерное зрение. Урок 35. Matching pursuit. Продолжение - 2.

  • Существует проблема, что невязка r не обязательно лежит в подпространстве, ортогональном к подпространству, образованному выбранным вектором.

Для решения данных проблем существует немного модифицированный метод Matching pursuit, о котором мы поговорим на следующем уроке.

 


Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями  программного продукта "Microsoft Visual Studio 2010", авторское право на который принадлежит "Microsoft". 

 

Последнее обновление ( 16.05.2018 г. )
 
Пред. »
 
© 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 рабочих дня.
узнать больше
Платежные терминалы
Оплата покупок в терминалах крупнейших платежных систем в любом городе России - быстро и без комиссии.
узнать больше