Компьютерное зрение. Урок 23. Бинаризация
Автор megabax   
03.01.2017 г.
New Page 1

Компьютерное зрение. Урок 23. Бинаризация

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

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


На прошлом уроке мы рассмотрели некоторые способы представления контуров и один из них запрограммировали. Пора двигаться дальше. Но, прежде подведем небольшие итоги. Итак, мы изучили метод сопоставления шаблонов, в том числе по выделенному контуру. Когда можно использовать такой метод? Тогда, когда объекты фиксированы и модель преобразования не очень сложная, в частности:

  • Цифры на знаках и на конвертах.

  • Дорожные знаки.

  • Аэрофотосъёмка / Космическая съёмка

Стоит заметить, что методы не очень быстрые. Требуются специальные процедуры для ускорения, например, отбраковка ложных фрагментов по упрощённым критериям и т.д. Также я поднял тему инвариантности. На прошлом уроке мы как раз и попытались описать контур объекта способом, инвариантным к положению, повороту и масштабу. Иными словами, мы не моделируем изменчивость, мы описываем объект на картинке таким образом, чтобы нам не нужно было учитывать его изменчивость:

Компьютерное зрение. Урок 23. Бинаризация


Очень хорошо работают инвариантные описания объектов, когда мы пытаемся распознать что-то вроде этого:

Компьютерное зрение. Урок 23. Бинаризация

 

...А теперь немножко поэкспериментируем. Для начала попробуем распознать объекты вот на этой вот фотографии:

Компьютерное зрение. Урок 23. Бинаризация

Очевидно, здесь нужна негативная бинаризация, так как объекты гораздо темнее фона. Теперь вспомним про вспомогательный класс Binarization, который имеется в наших исходниках. В нем есть метод threahold_binarization (бинаризация по порогу):...

...

...

Тестируем:

        private void btnBinarization_Click(object sender, EventArgs e)

        {

            Segmentation segmentation = new Segmentation();

            segmentation.hsv_frame = hsv_frame;

            segmentation.binarization.source = segmentation.hsv_frame;

            segmentation.binarization.threahold_binarization(0.5, true); //0.68

            segmentation.binarization.result.create_picture();

            pbImage.Image = segmentation.binarization.result.picture;

        }

Сморим результат:

Компьютерное зрение. Урок 23. Бинаризация

...

...

Последнее обновление ( 03.01.2017 г. )