![]() |
|
|
![]()
|
|
| buena_suerte |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 21.4.2007 Репутация: нет Всего: нет |
у меня дана задача такая: есть картинка загруженая, на ней вырезаем определенную область(кусочек), и потом производим сканирование новой картинки и сравниваем её с этим кусочком загруженым в память
тоесть, есть два рисунка одинаковых, сравниваемых,надо допустим сделать привязку к координатам,но как? и попиксельно сравнить эти отрезки между собой? помогите люди добрые,а с графической частью вообще не дружу может исходник с примером есть Это сообщение отредактировал(а) buena_suerte - 21.4.2007, 16:40 |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Сравнение изображений сложный процесс (если делать качественно), главное составить граммотный алгоритм. Вот элементарное опредение цвета в точке:
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Klin, а чем плохо, например, элементарно сравнить все пикселы первой картинки и второй (по цвету) ? Затем вычислить процент совпадений. Если алг плох, скажите, чем.
|
|||
|
||||
| buena_suerte |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 21.4.2007 Репутация: нет Всего: нет |
Klin,спасибо и за это
плизз,а можно чуть поподробней ваш алгоритм,если не трудно?)) |
|||
|
||||
| Klin |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Очень мудро, попробуйте сравнить две картинки одинакового размера, состоящие из двух равных прямоугольников. В первой картинке сверху будет черный, снизу белый. А во второй сверху белый, а с низу черный. И что это даст? Обратные изображения будут совподать на 100%. Вот вам и элементарное попиксельное сравнение.
Этот способ подойдет вам, если вам нужно определить закрашен ли квадрат (стоит ли галка в пунке) -------------------- Я человек - попробуйте обвинить меня за это. |
||||
|
|||||
| Grom |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 17.8.2006 Где: Москва Репутация: 1 Всего: 1 |
Klin,
так ведь сравнение попиксельное. т.е. пиксель с координатой x=1 y=1 должен быть равен пикселю с такими же координатами в другой картинке. по этому верх - них тут значения не имеет ведь --------------------
Хостинг, Vds, Dedicated serve, регистрация доменов (RU,com,net,org) - обращаться в icq. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Именно так. Мы сравниваем именно каждый конкретный пиксел с точно таким же пикселом на другой картинке. Если они по цвету совпадут, то ставим + в количество совпадений. При чем тут обратные изображения? Короче, я думаю, что вот это будет работать вполне неплохо (код не проверял, правда). Только сначала попробуйте, прежде чем делать выводы.
Функция вернет процент совпадения картинок. Есть только два минуса - картинки должны быть одинакового размера и только в формате *BMP. Это сообщение отредактировал(а) mr.Anderson - 22.4.2007, 12:39 |
|||
|
||||
| buena_suerte |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 21.4.2007 Репутация: нет Всего: нет |
mr.Anderson, заранее огромное вам человеческое спасибо,сейчас попробую)
ребята, а может вы знаете как лучше сделать привязку к координатом на картинке,чтобы точно сравнивать определенный фрагмент,загружаемой картинки и той что хранится в памяти? а в общем по идее у них размеры одинаковые, но чтоб по положению всё совпадало... |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
buena_suerte, я уже попробовал, функция возвращает процент совпадений картинок. Работает отлично.
Насчет вашего вопроса о привязке - просто нужно начинать сравнение пикселов не с нуля (как в моем примере), а с того места, с которого вам нужно. Ну и, соответственно, заканчивать нужно тоже в определенном месте. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Ну, помогло ли?
|
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Сорри, что-то я по ночам туго мыслить стал. -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| buena_suerte |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 21.4.2007 Репутация: нет Всего: нет |
да, очень вам благодарен))))))) а по поводу привязки, там еще имелось ввиду как лучше определить координаты той области,чтобы ввести их, ну да ладно спасибо |
|||
|
||||
| fish9370 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
предлагаю еще ввести уровень аппроксимации, т.е. ориентироваться на то что видит человеческий глаз.. если одна точка красная, а вторая немного краснее, то с помощью твоего алгоритма нельзя будет их считать одинаковыми.. хотя тут, конечно, все зависит от задачи.. проигнорируйте этот пост.. Добавлено через 2 минуты и 54 секунды
а по поводу привязки, думаю, никто не понял, что ты имеешь ввиду.. какая еще привязка? -------------------- undefined |
||||
|
|||||
| buena_suerte |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 21.4.2007 Репутация: нет Всего: нет |
ну мы загрузили допустим картинку в Image, и нам нужна не вся картина для сравнения,а определенный её фрагмент,так вот,нужно вычислить координаты этого фрагмента,чтобы с другой загружаемой картинкой можно было производить сравнение точно, в этом же месте...
воообще,в этой задаче по идее сравниваются купюры рублей, по значкам(цифрам) внизу на купюре(т.е. этот фрагмент с изображением цифры и нужно выделить и по нему сравнение производить),и прога должна определить номинал купюры сравнив загружаемую купюру с образцами в памяти... Это сообщение отредактировал(а) buena_suerte - 22.4.2007, 19:03 |
|||
|
||||
| fish9370 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
во-первых, тебе придется аппроксимировать значения точек, поскольку, картинки не будут абсолютно идентичными.. во-вторых, для определения положения и размера картинки, в функцию нужно передавать дополнительные параметры (смещение слева, смещение сверху, ширина и высота).. а дальше прибавляешь к координате смещение слева, смещение справа, повторяешь по горизантали столько раз, сколько у тебя ширина, и по вертикали скольк у тебя высота.. выглядить все должно примерно так:
P.S. тут попрежднему не реализована аппроксимация.. и такие одинаковые цвета как 0xFF0000 и 0xFE0000 будут считаться разными.. результат получишь отрицательный.. учти это.. -------------------- undefined |
||||
|
|||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |