Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2009, 18:11   #1
Gonzo
Форумчанин
 
Аватар для Gonzo
 
Регистрация: 07.03.2009
Сообщений: 123
Сообщение Выделение области на изображении, работа с образами

Есть автомобиль с камерой, есть впередиидущий автомомбиль (объект). Есть кадры движущегося объекта (автомобиля), сделанные через промежутки времени. Необходимо:
- выделить область номерного знака;
- определить примерное расстояние от машины с камерой до объекта (или точнее, проверить достачно ли расстояние, чтобы избежать столкновения), по размеру знака;
- определить линии разметки;
- фиксировать пересечение линий разметки машиной с камерой.

Главная трудность, что машина с камерой так же подвижна, как и объект! Все найденные мной методы, основываются на том принципе, что камера неподвижна (соотв. можно отбросить фон при подготовке) и не учитывают движение машины с камерой. Как быть с определением дистанции?

Буду благодарен за любую помощь или ссылки на литературу.
Не говорите что мне делать, и я не скажу куда Вам идти.
Пишу программы на заказ на Delphi и Pascal
Форум разработчиков Pascal и Delphi
Gonzo вне форума Ответить с цитированием
Старый 03.11.2009, 19:46   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

по первому...

по второму - более надежный метод - эхолокация, ультразвуковая, инфракрасная

по 3-4 - скорее понадобиться вторая отдельная камера, или первая должна быть широкоугольной
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 03.11.2009, 21:42   #3
Gonzo
Форумчанин
 
Аватар для Gonzo
 
Регистрация: 07.03.2009
Сообщений: 123
По умолчанию

Сконцентрировался сейчас на поиске знака.
Нашел интересную тему здесь
Разбираюсь с Канни и Хоком
Не говорите что мне делать, и я не скажу куда Вам идти.
Пишу программы на заказ на Delphi и Pascal
Форум разработчиков Pascal и Delphi
Gonzo вне форума Ответить с цитированием
Старый 03.11.2009, 22:22   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

ясно.

...скину вам распознавание через нейронные сети (для 3 из них нужен компонент -NeuralBase, остальные два сами по себе работают)
Вложения
Тип файла: zip нейронные сети и распознавание.zip (32.1 Кб, 240 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 03.11.2009, 22:32   #5
Gonzo
Форумчанин
 
Аватар для Gonzo
 
Регистрация: 07.03.2009
Сообщений: 123
По умолчанию

Raxp,cпасибо! Cейчас буду смотреть.
Про выделение области знака: вероятно придется проходить по всему изображению построчно начиная с последней. Отбросить фон не получится.

Втал вопрос!
Основная проблема: определение объекта (машина и т.п.), а конкретней: определение минимального прямоугольника, описывающего объект. Бьюсь над этим второй день - безрезультатно. Статические методы не работают. Может кто-то работал с выделением границ с ипользованием гистограмм?
Не говорите что мне делать, и я не скажу куда Вам идти.
Пишу программы на заказ на Delphi и Pascal
Форум разработчиков Pascal и Delphi

Последний раз редактировалось Stilet; 16.11.2009 в 11:29.
Gonzo вне форума Ответить с цитированием
Старый 10.11.2009, 10:04   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Общая теория - Компьютерная обработка и распознавание изображений и + возможно это уже видели

Цитата:
определение минимального прямоугольника, описывающего объект
есть такая научная работа Елизарова (2006 года), приложу тут (думаю пригодится кто столкнется еще)...
Вложения
Тип файла: pdf алгоритм распознавания автономеров.pdf (910.5 Кб, 206 просмотров)
Тип файла: pdf Gr18.551.S00.pdf (372.8 Кб, 150 просмотров)
Тип файла: pdf student.pdf (1.69 Мб, 154 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 10.11.2009 в 10:33.
raxp вне форума Ответить с цитированием
Старый 11.11.2009, 19:41   #7
Gonzo
Форумчанин
 
Аватар для Gonzo
 
Регистрация: 07.03.2009
Сообщений: 123
Печаль

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

С появлением объекта в кадре вроде разобрался:
1. Разбиваем изображение на 4 части
2. Строим цветовую гистограмму по принципу куба, т.е. цветовое RGB-пространство рассматривается как трехмерный куб, каждая ось которого соответствует одному из трех основных цветов (красному, зеленому или синему), деления на осях пронумерованы от 0 до 255. Для построения цветовой гистограммы каждая сторона делится на n (n=4) равных интервалов, соответственно RGB-куб делится на N (N=64) прямоугольных параллелепипедов. Vi – множество цветов, все компоненты которых попадают в определенные интервалы. Гистограмма изображения отражает распределение точек RGB-пространства, соответствующих цветам пикселов изображения, по параллелепипедам.
3. Рассчитываются расстояния между гистограммами четвертей данного кадра и предыдущего, итоговым результатом считается корень из суммы квадратов расстояний.
Каждый однородно окрашенный объект проецируется в нелинейное цветовое пространство (в моём случае RGB-куб) как точечный кластер или кластер в форме отрезка кривой с преимущественной ориентацией вдоль оси яркости. Это подтверждается экспериментальным исследованием изображений, полученных с реальных камер.
Необходимо находить в цветовом пространстве кластеры типа криволинейных отрезков:
1. разбиение цветового пространства на слои семейством плоскостей, нормальных к главной диагонали цветового пространства;
2. послойная кластеризация с помощью алгоритма поиска водоразделов;
3. сборка кластеров;
4. обратное проецирование на плоскость изображения с целью получения карты сегментации.
Нужно использовать разбиение изображения на небольшие, плотно покрывающие изображение, прямоугольные области, каждая из которых сегментируется независимо. При этом при сегментации текущей области анализируется цветовое распределение, взятое по большей области. При этом объект, далёкий от текущей области, уже не зашумляет её локальное цветовое распределение, а близкие объекты вносят существенный вклад, даже если их вклад по площади в сегментируемую область мал. Для устранения границ между «областями внимания» используется процедура слияния областей с помощью ГСО. Функция для меры несходства определенна.
C реализацией этого проблемы

Как бы описать нечто подобное:
Код:
type Pixel=record
x,y: integer;
end;

var KUB: array[0..255,0..255,0..255] of Pixel;
,а потом нарисовать в OpenGL для наглядности?
Вложения
Тип файла: rar Цветовая гистограмма.rar (2.8 Кб, 77 просмотров)
Не говорите что мне делать, и я не скажу куда Вам идти.
Пишу программы на заказ на Delphi и Pascal
Форум разработчиков Pascal и Delphi

Последний раз редактировалось Stilet; 16.11.2009 в 11:31.
Gonzo вне форума Ответить с цитированием
Старый 16.11.2009, 10:21   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
а потом нарисовать в OpenGL для наглядности?
извиняюсь, ваш пост потонул в потоке других...
...как я понял из описания цветовой гистограммы в 3d, то вам нужно просто иметь на входе динамическую запись вида:
Код:
type tpol= record
 x, y, z: glfloat;
end;

tmas = record
 R: Tpol;
 G: Tpol;
 B: Tpol;
end;

var data: array of tmas;
дальше инициировать opengl и перебирая все точки 3 массивов, вывести их по осям x, y, z... при этом задавая цвет точки соответственно red, green, blue
Код:
const nred    = 1;
        ngreen = 2;
        nblue   = 3;
... 
 glNewList(nred, GL_Compile);
 glpointsize(1.3);
 glEnable(GL_POINT_SMOOTH);
 glColor3f(1.0, 0.0, 0.0); // цвет отметок R G B т.е - 1 0 0, 0 1 0, 0 0 1
 
 //glLoadName((1500*500) + kodo_cnt); //если нужно определить потом параметры
 glBegin(GL_POINTS);
   glVertex3f(data.r.x, data.r.y, data.r.z);
 glEnd;
не забудьте задать размеры массивов.
...
заготовку opengl проекта можете взять тут
по управлению тут
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 16.11.2009 в 10:40.
raxp вне форума Ответить с цитированием
Старый 14.12.2009, 04:36   #9
Gonzo
Форумчанин
 
Аватар для Gonzo
 
Регистрация: 07.03.2009
Сообщений: 123
По умолчанию

raxp, спасибо за помощь с OpenGL (и не только).
После длительного перерыва возвращаюсь к этой задаче. В результате некоторых размышлений подход к решению данной задачи значительно изменился. Пробую реализовать метод выделения объектов на основе оптического потока. Вот вкратце что предполагается сделать:
Есть два кадра, первый снят во время t0 (далее предыдущий кадр), а второй во время t (далее текущий кадр). Кадры разбиваются на блоки пикселов и для каждого блока пикселов текущего кадра находится вектор движения (определяет смещение блока пикселов по x и y, относительно предыдущего кадра, основываясь на том, что интенсивность каждого пиксела постоянна). После этого производится обход блоков и сравнение их векторов движения, при этом блоки с похожими (по направлению, длине и т.п.) векторами движения объеденяются. Все эти действия направленны на сегментацию изображений, т.е. на выделение объектов отличных от статичного фона.
Проблема следующая: необходимо подобрать (как вариант усовершенствовать/разработать) быстрый алгоритм нахождения векторов движения (для начала можно предположить, что у нас нет проблем с освещеностью, что текстура объектов хорошо выраженна). Главными требованиями для этого алгоритма будут: небольшая вычислительная сложность (соотв. время вычислений), и минимальное кол-во ложных векторов движения, не соотв. реальному движению нестатичных объектов. В идеале это кол-во должно приближаться к количеству, как при методе полного перебора (где-то ~35% от общего количества). В сущности проблема в выборе алгоритма. Однако можно подумать в направлении предварительной обработки изображений для сужения зоны поиска и/или последующего исключения ложных векторов вижения, чтобы снизить риск рассегментации и потери объекта. В общем проблема такая. Может кто что посоветует?
Не говорите что мне делать, и я не скажу куда Вам идти.
Пишу программы на заказ на Delphi и Pascal
Форум разработчиков Pascal и Delphi
Gonzo вне форума Ответить с цитированием
Старый 14.12.2009, 09:10   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

эм.. почитал про оптический поток.... после всего у меня сложилось общее впечатление, что векторизация напоминает работу нейронных сетей.... о, вы кстати смотрели их? как они в данном случае, ведь прикладное их применение в распознавании цифр...
по-поводу алгоритма поиска векторов движения, поищу.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
(Pascal) Выделение произвольной области на экране bobby2008 Помощь студентам 1 29.05.2009 21:33
выделение области seregaAV110 Мультимедиа в Delphi 3 27.11.2008 21:33
выделение произвольной области на изображении seregaAV110 Помощь студентам 2 16.11.2008 11:46
Координаты курсора на изображении Ciberal Мультимедиа в Delphi 2 28.10.2008 19:33
Изображения на изображении :) nikleb JavaScript, Ajax 6 24.11.2007 01:34