Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

Как найти нужный участок в битмапе   Найти похожие ветки 

 
BMP   (2004-09-04 22:24) [0]

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


 
Profi ©   (2004-09-04 22:31) [1]

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


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

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


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

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

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


 
Gero ©   (2004-09-05 02:02) [4]


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

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


 
Profi ©   (2004-09-05 02:17) [5]

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("Маленькое изображение присутствует в большом!");


 
Profi ©   (2004-09-05 02:20) [6]

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


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

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


 
Profi ©   (2004-09-05 02:43) [8]

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


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

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


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

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


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

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


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

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


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

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


 
Рыба ©   (2004-09-07 13:09) [14]

> BMP  (06.09.04 23:41) [13]

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


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

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


 
Рыба ©   (2004-09-07 19:28) [16]

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

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


 
Рыба ©   (2004-09-07 19:49) [17]

>BMP

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


 
Рыба ©   (2004-09-07 19:51) [18]

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.027 c
3-1100430358
M. Saratoff
2004-11-14 14:05
2004.12.12
Реализация операции пересечения


14-1101363932
NewDelpher
2004-11-25 09:25
2004.12.12
Вопрос ученым: Нужен ли диссертант научному руководителю?


1-1101370809
спринт
2004-11-25 11:20
2004.12.12
Стиль XP


3-1100598443
Explorer
2004-11-16 12:47
2004.12.12
Работа со справочниками


4-1098537987
Funt_IK
2004-10-23 17:26
2004.12.12
Запись на CD