Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 05.03.2008, 19:53   #1
Hollander
Профессионал
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Адрес: Беларусь
Сообщений: 1,188
Репутация: 469

skype: taradeikoartem
По умолчанию Обработка изображения

Народ, помогите хотя бы советами. У меня задача такая, есть 10 рисунков высокого качества. На них изображен человек-баскетболист, который кидает мяч. Т.е. каждый снимок через определенный момент времени(~1/5 секунды). На нем есть семь кружков красного цвета, фон вокруг кружков - цвет человеческой кожи. Мот кто знает как мне найти координаты (x, y) этих кружков. Мышкой кликать не предлагать )
Hollander вне форума   Ответить с цитированием
Старый 05.03.2008, 21:02   #2
Dj_smart
Капсула от спама
Участник клуба
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Адрес: /www[.](.*)[.]ru/
Сообщений: 779
Репутация: 290

icq: 9804336
По умолчанию

Я так думаю, тебе нужно координаты центров?
Можно попробовать считать самую верхнюю и нижнюю точку(ту, что лежит на кругу, красного цвета). сложить координаты по y , поделить на 2. Так узнаем центр круга по y. Так же само и по x. потом следуущий круг.
Dj_smart вне форума   Ответить с цитированием
Старый 06.03.2008, 17:53   #3
Hollander
Профессионал
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Адрес: Беларусь
Сообщений: 1,188
Репутация: 469

skype: taradeikoartem
По умолчанию

Вопрос не в этом. У меня проблема как найти самую верхнюю и нижнюю точку на изображении
Hollander вне форума   Ответить с цитированием
Старый 06.03.2008, 21:43   #4
mutabor
Телепат с дипломом
Профессионал
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,931
Репутация: 1570

icq: 401708834
По умолчанию

В цикле перебрать всю матрицу изображения.
Первый раз нашли красную точку - отметили. Ищем дальше, находим в каждом новом ряду красные точки, как только будет ряд в к-ром красной точки не нашлось - отмечаем еще раз. Получили верхнюю и нижнюю точки красного круга, нахождением среднего арифметического находим горизонтальную ось. Аналогично находим точки по горизонтали и вертикальную ось.
Этот алгоритм найдет простые фигуры: круг, квадрат. Сложные фигуры нужно искать по другому.

p.s. Подумал над этим ещё, этот алгоритм что я привел выше не годится даже для кружков, так как они могут пересекаться

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

Последний раз редактировалось mutabor; 07.03.2008 в 02:24.
mutabor вне форума   Ответить с цитированием
Старый 07.03.2008, 15:18   #5
Hollander
Профессионал
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Адрес: Беларусь
Сообщений: 1,188
Репутация: 469

skype: taradeikoartem
По умолчанию

Как вам такая идея: поиск организовать по одной точке допустим локтю, юзер отмечает круги мышкой на 1 и 3 кадре. Примерно на каждом кадре точка будет сдвигаться одинаково и не более чем разница на 1 и 3 кадре, ну это выглядит так на практике. Далее на кадом кадре имея радиус возможного положения буду искать только в этом радиусе. Точки пересекаться не могут(ну только если баскетболист не калека -) ). Вроде должно работать, осталось придумать как эти самые точки находить? Можно как-то замутить это дело запомнив, то что юзер указывает, но тут проблема что может меняться освещение(типа появление тени от поднятой руки на локте и т.д.), т.е. возможно как-то играть с параметрами RGB надо будет. У кого нить есть еще идеи?
Hollander вне форума   Ответить с цитированием
Старый 07.03.2008, 23:09   #6
mutabor
Телепат с дипломом
Профессионал
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,931
Репутация: 1570

icq: 401708834
По умолчанию

Цитата:
Как вам такая идея: поиск организовать по одной точке допустим локтю, юзер отмечает круги мышкой на 1 и 3 кадре. Примерно на каждом кадре точка будет сдвигаться одинаково и не более чем разница на 1 и 3 кадре, ну это выглядит так на практике. Далее на кадом кадре имея радиус возможного положения буду искать только в этом радиусе.
Это имхо абсолютно ни к чему и ничего не упрощает. Найти семь кружков определенного цвета не сложно. К тому же вы говорили что кликать мышкой нежелательно.
Вот примерный алгоритм:
Код:

for i:=0 to Width-1 do
  begin
  for j:=0 to Height-1 do AnalizePixel(x,y,col);
  if Circles = 7 then Break;
  end;

procedure AnalizePixel(x,y,col: integer);
begin
if col = clRed then
  begin
  if (фигура найдена) then Exit;
  SearchFigure(x,y,col); //запускаем поиск границ фигуры
  //нужно предусмотреть механизм отметки что пиксель уже принадлежит 
  //найденной фигуре (булевый массив) и сохранение куда-то центров 
  //фигур (тоже массив нужен [0..6]), счетчик фигур - Circles
  end;
end;

Сама функция SearchFigure должна быть рекурсивной, я делал нечто подобное для поиска соседних кубиков одного цвета в игре. Переделать проблемы не составит, если будете делать таким макаром, то спрашивайте.
Также существует некий стандартный "алгоритм заливки с затравкой", можно его применить (конкретно по нему подсказать ничего не могу).
mutabor вне форума   Ответить с цитированием
Старый 10.03.2008, 15:21   #7
Hollander
Профессионал
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Адрес: Беларусь
Сообщений: 1,188
Репутация: 469

skype: taradeikoartem
По умолчанию

Спасибо, только сегодня увидел, что-нить попробую, естественно будут вопросы, задам

Последний раз редактировалось Hollander; 10.03.2008 в 15:35.
Hollander вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" ruelCrow Общие вопросы .NET 3 10.07.2008 23:29
Вращение изображения beginner JavaScript, Ajax 5 07.07.2008 23:44
масштабирование изображения Alex_Pro Общие вопросы .NET 0 25.05.2008 09:09
Трехмерные изображения anarchist Помощь студентам 7 25.10.2007 17:31
Изображения в БД alikon1 БД в Delphi 3 08.10.2007 13:13


06:59.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru