Сравнение изображений логотипов - PullRequest
0 голосов
/ 21 марта 2012

Я делаю проект для Android, где мне нужно определить логотип (логотип может быть разного контраста, оттенка или насыщенности), для этого я использую сравнение гистограмм OpenCV-2.3.1 для Android.

Следующие шаги выполняются следующим образом:

1) Рассчитайте значение истории сохраненного изображения

private List<Integer> histSize;
   private List<Float> ranges;


  histSize.add(50);
    histSize.add(60);
    histSize.add(10);

    ranges.add(0f);
    ranges.add(256f);

    ranges.add(0f);
    ranges.add(180f);

    ranges.add(0f);
    ranges.add(256f);

    channels.add(0);
    channels.add(1);
    channels.add(2);


hsv_base1=new Mat();
Imgproc.cvtColor(image1,hsv_base1, Imgproc.COLOR_BGR2HSV);
hsv_base.add(hsv_base1);
Imgproc.calcHist(hsv_base, channels,new Mat(), hist_base, histSize, ranges,false);

2) Затем я обрезаю захваченное изображение каждый кадр.Размер обрезанного изображения в точности совпадает с размером сохраненного изображения и вычислением значения гистограммы с использованием того же метода, что и выше.

3) Сравнение сохраненного значения истории обоих изображений

double base_test2 = Imgproc.compareHist(hist_base1,hist_baseCamera1,Imgproc.CV_COMP_CHISQR);

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

Так что теперь я планирую использовать некоторые другие методы сравнения гистограмм.Мой логотип состоит из круга.

Мой вопрос: есть ли какой-либо метод, позволяющий найти захваченное изображение, состоящее из круга точно такого же размера, как у круга сохраненного логотипа.

Или любой другой метод, который я должен использовать, или я могу играть с сохраненным значением каналов, диапазонов, histSize?

Я использовал сопоставление с шаблоном раньше, это очень медленно и довольно сложно для изображенийтого же размера

Буду признателен за любую информацию.

1 Ответ

0 голосов
/ 21 марта 2012

Конечно, есть и другие методы. На самом деле, сравнение гистограмм является очень расплывчатым выбором метода, как вы уже обнаружили. (Множество изображений может иметь ту же гистограмму, что и на рисунке ниже)

A roughly created de- and re construction of a greylevel picture

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

Если вы сделали сегментацию, вы сможете портировать свое изображение и выполнить анализ BLOB (Большой двоичный объект), необходимый алгоритм зависит от вашего интереса, методы и описание которых можно найти по адресу документация OpenCV .

Я предполагаю, что функция matchShapes() может хорошо вам помочь. Но вам понадобится понимание обработки изображений, которое немного превосходит использование гистограмм.

Вам, конечно, придется найти оболочки для версии OpenCV для Android.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...