Jump to content
Compvision.ru

Recommended Posts

Занимаюсь сравнением объектов методом контурного анализа. Получил 2 периодических последовательности данных, искомый объект и эталон (128 значений последовательности). Последовательность не зависит от местоположения, угла поворота и масштаба. Они отличаются только выбором начальной точки. Если делать сравнение методом перебора, нужно сравнить 128х128 значений. У меня ~3000 контуров в изображении и 200 эталонов. Может кто то знает более быстрый способ совмещения начальных точек или сравнения. График последовательностей на 36 точек представлен ниже, точки периодически повторяются:

5a7c0803d2e3e_.PNG.2ddea83a5bcbe0920dda8587c9226331.PNG

Share this post


Link to post
Share on other sites

Share this post


Link to post
Share on other sites
Мне предложили делать сравнение сигналов с эталонами не методом перебора, а с помощью дескрипторов Фурье. Дескрипторы сигналов я вычисляю быстро применяя табличные коэффициенты. Дескрипторы эталонов вычисляю заранее. 
Сколько необходимо дескрипторов и как их сравнивать на подобие?

Share this post


Link to post
Share on other sites

Посмотрите здесь: 

Количество дескрипторов, задает насколько детально описывается фигура. Подрезание количества коэффициентов дает сглаживание контуров. 

 

Еще тут посмотрите: https://www.codeproject.com/Articles/196168/Contour-Analysis-for-Image-Recognition-in-C

 

 

Share this post


Link to post
Share on other sites
1 час назад, Smorodov сказал:

Посмотрите здесь: 

Количество дескрипторов, задает насколько детально описывается фигура. Подрезание количества коэффициентов дает сглаживание контуров. 

 

Еще тут посмотрите: https://www.codeproject.com/Articles/196168/Contour-Analysis-for-Image-Recognition-in-C

 

 

Спасибо, за ответ. Ссылку я уже видел ранее. Именно она вдохновила меня на распознавание шрифтов, но другим способом. В данной ссылке автор Pavel Torgashov применяет 30 элементарных векторов. Я считаю, что даже для шрифта это недостаточно и применяю 128.

У меня всегда любой контур описывается 128 элементарными векторами (ЭВ). Соответственно эталоны так же описаны, как 128 ЭВ. В данном случае максимальное число дескрипторов Фурье может быть 128. Я хочу выбрать 8. Это 6,25%, достаточно ли это распознавания шрифта? Так же не понятно, как сравнивать дескрипторы, какую брать погрешность?

 

Share this post


Link to post
Share on other sites

Ну  размерность векторов это обычно предмет для экспериментального подбора.

Вообще еще один метод есть, вычисляются собственные векторы и числа, и оставляют количество векторов, сумма собственных чисел которых равна, скажем 95% от всей суммы чисел.  Смотрите PCA анализ.

Share this post


Link to post
Share on other sites

Дескрипторы можно сравнивать 2 способами: 

1) находим погрешность каждого из дескрипторов, погрешности складываем и сравниваем с порогом. Возможно погрешности возводим в  квадрат и суммируем.

2) сравниваем с порогом каждую погрешность и если один из дескрипторов превышает порог, то сравнения нет.

Какой из двух способов верный?

Share this post


Link to post
Share on other sites

Это называется метрики, их не две, а намного больше самые популярные:

1) Евклидова метрика.

2) чем то напоминает дистанцию Хемминга, но там тоже сумма считается. https://ru.wikipedia.org/wiki/Расстояние_Хэмминга 

3)   https://ru.wikipedia.org/wiki/Расстояние_Махаланобиса 

4)  https://ru.wikipedia.org/wiki/Расстояние_городских_кварталов 

Опять же надо подбирать экспериментально.

 

Share this post


Link to post
Share on other sites

Закончил программу контурного анализа. Перепробовал множество вариантов. Применял дескрипторы Фурье - получил не очень хороший результат. Оказалось, что примитивные методы работают значительно лучше. Результат меня порадовал. Удалось получить быстрое распознавание любых замкнутых контуров. В качестве базы данных загружаются изображения в виде силуэта эталонных символов. Программа создает базу данных. Один силуэт это 512 байт в базе данных. Силуэты могут быть любые шрифты (Если буква "В", то без двух белых отверстий), предметы, дорожные знаки, силуэты самолетов и т.д. 

Тренировался на шрифте. Распознает любой шрифт повернутый до углов 45 градусов при условии совпадения начальных точек. Проблему начальной точки решил за счет того что в базу данных загружаю 2 символа один повернут влево на 20, другой вправо на 20 градусов. Теоретически возможно распознавание под любым углом, но при этом будет увеличиваться время обработки. Пример базы цифр ниже:

BazaDanK1.jpg.aa3a42587a8f22089589b1e5bbcfe147.jpg

Есть определенные проблемы. Я проверяю на похожесть, а не на абсолютное сравнение. Поэтому если я проверяю, какая это цифра, а на проверяемом изображении "каракатица", то программа все равно показывает какую нибудь цифру. Я не знаю, как решить данную проблему. Но зато распознает символы повернутые ,искаженные, с большой изометрией и немного смещенной начальной точкой. 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×