Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Поиск изображения по образцу |

03.09.2009, 18:18
|
|
Новичок
Регистрация: 07.07.2009
Сообщений: 26
Провел на форуме: 178716
Репутация:
0
|
|
Поиск изображения по образцу
Помогите пожалуйста составить алгоритм поиска изображения в изображении. Есть изображение (картинка) и есть образец другого изображения, который может присутствовать на исходном изображении. Каким образом можно найти этот образец на изображении? Придумал пока только такой вариант, что из образца возьму одну строчку шириной в 1 пиксель и буду попиксельно читать исходное изображение в поисках этой строчки. А как найти прямоугольник?
|
|
|

03.09.2009, 19:09
|
|
Постоянный
Регистрация: 08.04.2007
Сообщений: 853
Провел на форуме: 5812656
Репутация:
1540
|
|
нейросети, детка
|
|
|

03.09.2009, 21:32
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме: 2823587
Репутация:
106
|
|
Для чего тебе такой алгоритм? Если для распознания капчи то тебе в сторону скелетизации изображения копать надо...
|
|
|

03.09.2009, 21:53
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме: 2823587
Репутация:
106
|
|
Можно попробовать представить секцию в Image в файле bmp в виде матрицы и искомое изображение тоже. Далее блоками сравнивать и сдвигать.
|
|
|

04.09.2009, 04:30
|
|
Участник форума
Регистрация: 29.11.2007
Сообщений: 116
Провел на форуме: 283596
Репутация:
88
|
|
На PHP что-то подобное есть
http://habrahabr.ru/blogs/php/55926/
А вообще нейросети конечно нужно, если что посложнее.
Вот кусок на делфи, с какой-то проги, там по базе с фотками сравнивается картинка которую ты подсовываешь:
Код:
Procedure CompareBitmap(Const BitmapA, BitmapB: TBitmap;
VAR Total, Sim, Diff: Integer);
// Total:total des pixel, Sim:Pixels similaires, Diff:Pixels dirrfents
Type
TRGBTripleArray = ARRAY[WORD] OF TRGBTriple;
pRGBTripleArray = ^TRGBTripleArray;
Var
i : INTEGER;
j : INTEGER;
RowA: pRGBTripleArray;
RowB: pRGBTripleArray;
begin
Assert( (BitmapA.width = BitmapB.width) AND
(BitmapA.height = BitmapB.height), 'Different sizes');
BitmapA.PixelFormat := pf24bit;
BitmapB.PixelFormat := pf24bit;
Total := BitmapA.width * BitmapA.height;
SIM := 0;
Diff := 0;
For j := 0 to BitmapA.Height-1 do
begin
RowA := BitmapA.Scanline[j];
RowB := BitmapB.Scanline[j];
// pour i do 0 jusqu' la largeur de BitmapA alors
For i := 0 to BitmapA.Width-1 DO
begin
If RowA[i] = RowB[i] Then
inc(Sim)
else inc(Diff)
End
End
end;
Последний раз редактировалось AKYLA; 04.09.2009 в 06:46..
|
|
|

05.09.2009, 13:12
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
совет - копай в сторону OpenCV
|
|
|

05.09.2009, 15:25
|
|
Banned
Регистрация: 04.09.2009
Сообщений: 1
Провел на форуме: 288
Репутация:
-5
|
|
it's temptetion
|
|
|

06.09.2009, 00:20
|
|
Новичок
Регистрация: 07.07.2009
Сообщений: 26
Провел на форуме: 178716
Репутация:
0
|
|
Придумал такой алгоритм, берется первая строчка пикселов изображения, которое ищем, построчно в исходном изображении ищем ету строчку, как только нашли, вырезаем из исходного изображения прямоугольник с размерами искомого изображения и левым верхним углом начинающимся в начале найденной пиксельной строки, ну и затем сравниваем два етих прямоугольника.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|