![]() |
Модераторы: Snowy, Alexeis, MetalFan |
![]() ![]() ![]() |
|
welt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 21.5.2005 Где: UnderGround Репутация: нет Всего: нет |
Вобщем такая задача: Есть две картинки: большая и маленькая.
Маленькая -это кусок картинки прямоугольного размера, вырезанный из большой каринки. Нужно, найти, с какого места (координаты) малая картинка вырезана из большой. Для этого надо сравать в цикле попиксельно две картинки: вырезать из большой прямоугольнуюобласть и сравнивать с маленькой. Сравнивать по яркости пикселей. и так в цикле передвигаться по большой, вырезать из нее область и сравнивать. Пр сравнении двух одинаковых по рамеру областец я складываю разность яркостей всех пикселей этих областей. Если эта яркость равна нулю, то картинка найдена. Вроде написал, но очень медленно работает. Будет считать часов 5 или больше. Может есть способ оптимизировать? или вообще другой способ. Код ниже...
Это сообщение отредактировал(а) welt - 19.5.2009, 23:23 |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 1 Всего: 58 |
Посмотрите это: http://www.swissdelphicenter.ch/torry/showcode.php?id=1635
|
|||
|
||||
welt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 21.5.2005 Где: UnderGround Репутация: нет Всего: нет |
Keeper89
Видел я этот код. Он в сети повсюду. Но что-то неполучается его грамотно применить. Я выделил линию, а потом к ней доступ по элементам x,y и опять тоже самое - долго, долго считает...... |
|||
|
||||
AntonN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: 7 Всего: 18 |
долго потому что Canvas.Pixels[], можно переделать на bitmap.scanline, раз в десять быстрее будет
![]() |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 1 Всего: 58 |
Посмотрите следующие ссылки по теме Image retrieval:
http://en.wikipedia.org/wiki/Image_retrieval http://en.pudn.com/downloads107/ebook/detail442443_en.html Вот то, о чем говорил AntonN: http://www.delphisources.ru/pages/sources/...e-pictures.html |
|||
|
||||
Crw |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 25.2.2008 Репутация: нет Всего: 4 |
1. Зачем вообще вырезать маленькую картинку если можно сразу сравнивать на большой?
2. Можно для начала сравнивать только верхний ряд пикселей - если не совпал, то смысла продолжать сравнивание нету и переносим начало координат дальше. |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 1 Всего: 58 |
||||
|
||||
Crw |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 25.2.2008 Репутация: нет Всего: 4 |
Ну это понятно, просто по коду:
bPicture - оригинальное изображение mPicture - искомое изображение CMP_Picture - сюда копируется изображение (CopyRect) из bPicture для сравнения с mPicture. Такой подход вообще никуда не годиться. На больших изображений количество таких отрисовок может быть несколько тысяч. А окончание кода это что-то. Вообще совершенно ничего не понятно.
Зачем ищется Lmin если оно нигде не используется? В этом коде k всегда будет равно p (которое вначале равно k). Это такой трюк чтобы усложнить понимание алгоритма? ![]() П.С. Только не говорите что это рабочий алгоритм.. ![]() Это сообщение отредактировал(а) Crw - 20.5.2009, 19:32 |
|||
|
||||
welt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 21.5.2005 Где: UnderGround Репутация: нет Всего: нет |
Crw
Надо было написать как-то так
А потом уже по номеру k вырезать картинку. Что-то я ссылки почитал на статьи, но не смог переделать через scanline |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Звук, графика и видео" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |