Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Media";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.046 c
8-1094655749
Stein
2004-09-08 19:02
2004.12.12
Работа с TImage


8-1095138488
resha
2004-09-14 09:08
2004.12.12
Обработка звука!!!


4-1098844875
ROMshtain
2004-10-27 06:41
2004.12.12
Как поменять caption чужого окна?


14-1100856519
dr Tr0jan
2004-11-19 12:28
2004.12.12
Игрушка на Pascal, Delphi


4-1098955855
Che
2004-10-28 13:30
2004.12.12
Проблемы с FrameRect





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский