Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как найти нужный участок в битмапе [D7, Win2k, WinXP]


BMP ©   (2004-09-04 22:24:00) 

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


Graff   (2004-09-18 22:37:00) [1]

Все это конечно хорошо. Но если надо найти на битмапе изображение, которое не совпадает по масштабу с тем которое наложено. Возникает вопрос как действовать тогда? Для этого надо раскладывать в спектр. С помощью БПФ (Быстрое преобразование Фурье). Более подробную информацию можно найти в справочнике по ВМ.


Рыба   (2004-09-07 19:51:00) [2]

Точнее вот эту статью
http://www.delphimaster.ru/articles/pixels/index.html


Рыба   (2004-09-07 19:49:00) [3]

>BMP

Почитай http://www.delphimaster.ru/articles3.html
Можно сделать очень быстрый поиск, только подумай чуток.


Рыба   (2004-09-07 19:28:00) [4]

>Multy  (07.09.04 14:35) [15]
>Текст это тоже массив

Ну и что? Как передать ByteArray в качестве текста для Pos?


Multy   (2004-09-07 14:35:00) [5]

Текст это тоже массив


Рыба   (2004-09-07 13:09:00) [6]

> BMP  (06.09.04 23:41) [13]

А Pos разве не для текста?


BMP   (2004-09-06 23:41:00) [7]

Зачем к стате писать собственный алгоритм поиска строки в подстроке?
функция System.Pos как раз одну из вариаций и реализует. Тем более, что она написана на асме, так что быстрее сделать всяко не получится.


Анонимщик   (2004-09-06 11:51:00) [8]

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


Alpon   (2004-09-06 10:05:00) [9]

а зачем такое понадобилось делать?


BMP   (2004-09-05 22:54:00) [10]

А какой из алгоритмов самый эффективный по скорости?
Того же Боуэра-Мура несколь способов реализвции нащёл.


Ермак   (2004-09-05 11:53:00) [11]

Получи доступ к памяти битмапа (как, не помню, вопрос  мастерам-компонентникам). А затем возьми первую строчку искомого рисунка и ищи ее по алгоритмам поиска подстроки в строке (Боуэра-Мура, например, да и простой сойдет). Если она нашлась, то проверяем те строчки, которые лежат под ней. Повторяем так для каждой картинки. Этот алгоритм будет работать ОЧЕНЬ БЫСТРО, в отличие от предложенных.


Profi   (2004-09-05 02:43:00) [12]

BMP   (05.09.04 2:38) [7]
Не за что!


BMP   (2004-09-05 02:38:00) [13]

Спасибо Profi за ответ, а то я что то совсем затормозил, конечно же Pixels :-), слишком давно не занимался графикой...


Profi   (2004-09-05 02:20:00) [14]

Profi ©   (05.09.04 2:17) [5]
Упс! Первые четыре строки должны быть:
for j:=0 to BigBmp.height-SmollBmp.height do begin
for i:=0 to bigbmp.width-smollbmp.width do begin
for j1:=0 to smollbmp.height do begin
for i1:=0 to smollbmp.width do begin


Profi   (2004-09-05 02:17:00) [15]

BMP   (05.09.04 1:42) [2]
Примерно так
aga:=true;
for j:=0 to BigBmp.width-SmollBmp.width do begin
for i:=0 to bigbmp.height-smollbmp.height do begin
for j1:=0 to smollbmp.width do begin
for i1:=0 to smollbmp.height do begin
if smollbmp.canvas.pixel[i1,j1]<>bigbmp.canvas.pixel[i+i1,j+j1] then begin
aga:=false;
break;
end;
end;
if not aga then break;
end;
end;
end;
if aga then showmassege('Маленькое изображение присутствует в большом!');


Gero   (2004-09-05 02:02:00) [16]


> А нельзя ли по конкретнее какими функциями пользоватся

TCanvas. Правда, это не функция, но все же.


BMP   (2004-09-05 01:43:00) [17]

Т.е. как получить пикскль из битмапа?

Сорри за ламерский вопрос.


BMP   (2004-09-05 01:42:00) [18]

Это и так понятно.
А нельзя ли по конкретнее какими функциями пользоватся, если можно, с примерами, а то забыл всё.


Profi   (2004-09-04 22:31:00) [19]

BMP   (04.09.04 22:24)
Проверяй попиксельно!


Наверх

Титульная страница Поиск, карта сайта Написать письмо