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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2010, 17:04   #1
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
Вопрос Поиск объекта на картинке

Всем привет! У меня возник вопрос по поводу поиска.
К примеру, есть картинки такого типа:
Min.JPG
На этих картинках могут быть объекты (как под цифрой "1"). Они могут быть повёрнуты на различный угол, как показано ниже (по большому счёту они могут быть повёрнуты в 4 положения). В общем, сам вопрос заключается в том, как найти эти объекты на картинках или их координаты?
Я пытался делать поиск различными способами, но у меня получалось искать только конкретные объекты на картинке с которой они были взяты. Пробовал изменить программку: Find_Image_Fast.rar, но ничего не вышло.
Может кто знает как можно найти эти объекты или может как сделать поиск по процентному соответствию? Буду рад любой информации.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 21.05.2010, 07:54   #2
Greek9000
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 151
По умолчанию

Судя по картинке, объекты довольно сильно отличаются от фона и имеют примерно одинаковые размеры, поэтому мне кажется, что поиск можно выполнить поочерёдным сканированием картинки прямоугольниками определённого размера. Поясню:
1. Выбираем размер сканируемого прямоугольника (напр. 50х50 пикселей)
2. Начиная с верхнего левого угла начинаем копировать части исходной картинки (по размерам совпадающие с выбранным прямоугольником) в буферное изображение.
3. Для этого буферного изображения считаем метрику. Для вашей катринки метрикой может быть кол-во пикселей с преобладающей синей составляющей цвета
4. Если значение метрики больше определённого, то запоминаем координаты текущего прямоугольника.
5. Сдвигаем сканирующий прямоугольник вправо на кол-во пикселей равное его ширине до тех пор пока не просканируем всю строку.
6. Затем возвращаем сканирующий прямоугольник в начало строки и смещаем его вниз на кол-во пикселей, равное его высоте. После чего повторяем сканирование строки описанным образом.
7. повторяем пп 2-6 пока не просканируем всю картинку.
В итоге получим некоторое кол-во прямоугольникв в которых (с большой долей вероятности, зависящей от выбранной метрики) располагаются искомые объекты. Очевидно, что эти прямоугольники не могут пересекаться. Тем не менее, они могут соприкасаться.
Обособленные прямоугольники содержат искомые объекты. Для соприкасающихся можно попробовать использовать алгоритм выделения границ (используя цветовое расстояние). По этим границам уже можно будет найти расположение объектов.
Мне кажется, что данная схема должна хорошо работать для случая на приведённых рисунках
Greek9000 вне форума Ответить с цитированием
Старый 21.05.2010, 10:04   #3
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

В наборе компонентов VisionLab есть демка по определению объектов, не знаю подойдёт она вам или нет... посмотрите
Вложения
Тип файла: zip VLHoughCirclesDemo.zip (310.2 Кб, 139 просмотров)
SERG1980 вне форума Ответить с цитированием
Старый 21.05.2010, 16:35   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Greek9000, спасибо! Попробую это всё реализовать.
SERG1980, спасибо за пример. Я пробовал загружать различные картинки и т.д. реакции никакой не было...
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск Handle'a объекта типа "Edit" в окне стороннего приложения TRIZER Win Api 6 12.07.2012 15:59
С помощью методов и свойств объекта осуществляется управление терминалом. Имя (идентификатор) объекта User>lia Общие вопросы Delphi 4 16.01.2009 16:37
Поиск предельно допустимых перемещений объекта вдоль заданного вектора с учетом положения других объектов stюdent Помощь студентам 1 23.12.2008 19:45
Как поменять одну из текстур объекта не меняя все остальные и без повторной загрузки объекта в GLScene DomKr@t Мультимедиа в Delphi 0 14.12.2008 01:52