![]() |
|
![]() ![]() ![]() |
|
CynicRus |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 248 Регистрация: 31.5.2012 Репутация: нет Всего: 5 |
Приветствую уважаемых форумчан. Дано: одномерный массив байт, в котором содержится информация об изображении в формате
Где - x,y - координаты выбраной точки, Color - цвет, Tolerance - величина описывающая предельно допустимое отклонение от Color, AreaSize - размер поля поиска пиксела. Причём, первой в списке всегда находится главная точка. Остальные точки списка, содержат в себе информацию, об отклонении от главной точки в 2 мерном массиве. Например 0: x,y(0,0), 1:(-7,15) и т.д. Список этих структур определяется заранее, и содержит в себе приметы, по которым нужно найти на изображении изображение соответствующее данному шаблону. Вот собственно и вся задача, и вопрос к ней: как осуществить подобный поиск наиболее быстрым способом? И главное - где почитать о таких алгоритмах? На данный момент алгоритм поиска выглядит так: одномерный массив конвертируем в двумерный, по ширине и высоте изображения, затем перебирая в двойном цикле по пикселю - ищем соответствие цвета цвету главной точки, если нашли - проходимся по списку структур и смотрим соответствия по смещению. Если всё соответствует, то возвращаем x,y найденной точки и едем дальше. Однако это несколько затратно и медленно. Спасибо за внимание. |
||||
|
|||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
CynicRus,
Из вашего вопроса не понятно ровным словом ничего. - Доктор, когда я делаю вот так, у меня очень болит! Доктор: - Не делайте так. Судя по всему это некоторое распознавание изображений. Да это операция не быстрая. Так вот для ускорения применяют отсечения. 1) Вначале самое простое это пользователь задаёт регион интереса. Т.е поиск идёт только в этом регионе. 2) Затем применяют фильтрацию что-бы удалить лишние с изображения. К примеру отделить фон от объект. Объекты с другим цветом и тп. 3) Затем ищут особенности на изображении, которые легко и быстро найти: границы, углы, линии, круги, примитивы Хаара. Выбираются наиболее сильные или значимые, а остальные отбрасывают. 4) Затем уже сравнение с использованием наиболее назначаемых пикселей. Если пиксель не того цвета, то сразу выходим к другому уровню алгоритма. Не обязательно всё это должно присутствовать. Собственно на 3-4 уровнях отбраковка идет по порогу и идёт переход к другим координатам. Есть ещё методика отбраковки по каскадам, когда при переходе к другой координате не все пороги проверяется а возврат идет к предыдущему порогу. Это сообщение отредактировал(а) Pavia - 17.4.2015, 21:14 |
|||
|
||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Про регион интереса, в принципе это и так понятно что два цикла по меньшей области а не по всему изображению.
http://robocraft.ru/blog/computervision/289.html Про каскады и примитивы Хаара можно прочитать тут: http://www.wisdom.weizmann.ac.il/~vision/c...Viola-Jones.pdf Немного про наиболее значимые точки, хотя статья по большей части популистическая нежели научная http://arxiv.org/ftp/arxiv/papers/1306/1306.2599.pdf Это сообщение отредактировал(а) Pavia - 17.4.2015, 21:47 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |