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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2008, 18:53   #1
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию Обработка изображения

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

Я так думаю, тебе нужно координаты центров?
Можно попробовать считать самую верхнюю и нижнюю точку(ту, что лежит на кругу, красного цвета). сложить координаты по y , поделить на 2. Так узнаем центр круга по y. Так же само и по x. потом следуущий круг.
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 06.03.2008, 16:53   #3
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

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

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

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

Так что в любом случае нужен универсальный алгоритм, можно сделать его по типу заливки. Нашли первый пиксель красного цвета и от него производим заливку (в памяти) по ходу неё запоминаем крайние точки (для нахождения центра). Нужно предусмотреть чтобы далее в поиске точки принадлежащие уже найденной фигуре игнорировались.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 07.03.2008 в 01:24.
mutabor вне форума Ответить с цитированием
Старый 07.03.2008, 14:18   #5
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

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

Цитата:
Как вам такая идея: поиск организовать по одной точке допустим локтю, юзер отмечает круги мышкой на 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 должна быть рекурсивной, я делал нечто подобное для поиска соседних кубиков одного цвета в игре. Переделать проблемы не составит, если будете делать таким макаром, то спрашивайте.
Также существует некий стандартный "алгоритм заливки с затравкой", можно его применить (конкретно по нему подсказать ничего не могу).
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 10.03.2008, 14:21   #7
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

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

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение изображения из базы данных, Вместо изображения - "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