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

Вниз

Работа с изображениями...   Найти похожие ветки 

 
borodaj   (2007-04-21 11:06) [0]

Есть такая задача... Имеется эталон изображиния и тест(к примеру настоящий доллар - эталон, ну и фальшивый - тест). Подскажите, надо найти две опорные точки (к примеру самый яркий пиксель... и т.д.), на каждом из изображений, затем по этим точкам совместить два изображения, и получить процент "разности" этих изображений!


 
homm ©   (2007-04-21 22:08) [1]

В чем вопрос?
1) Как найти две опорные точки?
2) Как по этим точкам совместить два изображения?
3) Как получить процент "разности" этих изображений?

Или все 3 сразу? :)

—————————————————————————
Модераторы — позор!


 
borodaj   (2007-05-02 11:09) [2]

если честно, то все три сразу...


 
clickmaker ©   (2007-05-02 11:31) [3]


> к примеру самый яркий пиксель

задача сводится к нахождению максимума в некотором массиве

> по этим точкам совместить два изображения

x2,y2=x1,y1 где x,y - найденные выше точки

> получить процент "разности" этих изображений

ну самое простое - "тупой" пиксельный перебор.
Либо наложение двух картинок с растровой XOR - ненулевые (не черные) точки и будут как бы разностной картинкой


 
Чародей ©   (2007-05-02 11:40) [4]

интересно зачем все это. Самое сложное это совмещение т.к если при сканировании сместить купюру на небольшой угол изображения будут сильно отличаться + на банкнотах теперь присутствуют светоотражающие элементы и при каждом сканировании цвет может отличаться.
imho проще всего считать гистограмму по каналам с равнивать различия. но если чесно смысла в этом мало, так как результат заведомо очень приблизительный(при любом сравнении imho)


 
borodaj   (2007-05-02 11:52) [5]

нет, ну в принципе это показательная программа... мне она нужна лишь для диплома! и результат мне действительно нужен приблизительный.
А ненльзя ли поподробней про гистограмму, и если можно с примерчиком, просто с избражениями работал мало, если так можно сказать, а сроки поджимают!
заранее спасибо!


 
Чародей ©   (2007-05-02 13:25) [6]

если скорость значения не имеет то:
red:array [0..255]  of integer;
green:array [0..255]  of integer;
blue:array [0..255]  of integer;

for i:=0 to bitmap.height-1 do
 for j:=0 to bitmap.width-1 do
   begin
   inc(red[GetRValue(bitmap.canvas.pixel[j,i])]);
   inc(green[GetGValue(bitmap.canvas.pixel[j,i])]);
   inc(blue[GetBValue(bitmap.canvas.pixel[j,i])]);
   end;
код приблизительный(по памяти, Делфи под рукой нет)

делаешь это для обеих картинок и сравниваешь. Сравнивать можешь как угодно в процентном соотношении или в абсолютной разности, тебе решать


 
borodaj   (2007-05-02 16:08) [7]

спасибо... но если еще будут варианты, пишите!! :)


 
Rial ©   (2007-05-02 19:37) [8]

Пришла идея. С 3 поправками.
1. Изложу кратко только идею, кода много будет, писать его тебе придется :)
2. Ни о какой оптимизации тут пока нет и речи
3. Идея ориентирована на "размер диплома".

1.Нахождение опорных точек.
Они понадобятся потом. Трех штук волне хватит.
Яркость = R * 0.56 + G * 0.33 + B * 0.11
(один из алгоритмов по переводу из цветного изображения в черно- белое;
мб где то обибся немного в цифрах)
Теперь делаем массив  из точек. Массив из N*M элементов, значения - X, Y, I,
где X, Y - по началу - координаты точек, I - яркость.
Теперь пока не останется 3 точки делаем следующее. Находим ближайщие точки,
на прямой находим точку с средней яркостью.
Таким образом получим треугольник.

2. По треугольнику поворачиваем изображение. Чтобы сразнение вообще
было корректных.
Поворот простой - через Sin и Cos. Только лучше сделать поворот
пмоногпроходным, чтобы наиболее точно изменились цвета.
Т.е. по сути поворот лучше сделать для всех 3х каналов отдельно.

3. "Проксориваем" изображение (черно - белое) и находим сумму
разниц жлементов матрицы.


 
borodaj   (2007-05-02 19:39) [9]

во как!! огромное спасибо.. выручил не представляешь как!!!!!!


 
borodaj   (2007-05-02 19:44) [10]

я конечно понаглею... но немог бы ты на примере все показать? с этим сталкиваюсь второй раз! а время поджимает, блин! заранее спасибо!


 
Rial ©   (2007-05-02 19:44) [11]

Я тут подумал еще... камней подводных на самом деле много...
Но если что - спрашивай, что нибудь придумаем :)
Просто надеюсь, мысль я понятно изложил.


 
Rial ©   (2007-05-02 19:47) [12]

Нет, на примере не мог бы, извини.
Кода у меня нет никакого, это все только идея,
а задачка не на 15 минут, чтобы ее сейчас прешать.
Писанины уж много больно :)
Но результат это должно дать, теоритически, неплохой.


 
borodaj   (2007-05-02 19:48) [13]

может ссылочки полезные... это последнее, что написать осталось!


 
Rial ©   (2007-05-02 19:51) [14]

Не знаю, сори, это не ко мне.

Тут все работа с матрицами да и только.
Поищи ссылочки на эту тему. Математическую. ;)
Покопай в сторону сравнения изоражений.
Ты так не пугайся... начни, все само собой получится.

Начни с последнего. Возьми 2 изображения,
которые определенно не повернуты и начни их сравнивать.
Потом реализуй сглаженный поворот...


 
DVM ©   (2007-05-03 16:02) [15]

По-моему тут подойдет тот же алгоритм, что применяется для реализации детектора движения.



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

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

Наверх




Память: 0.5 MB
Время: 0.032 c
15-1203262710
xayam
2008-02-17 18:38
2008.03.30
Вопрос по javascript


2-1204186356
O.O
2008-02-28 11:12
2008.03.30
Ошибка после закрытия Excel


15-1203304507
Сёма
2008-02-18 06:15
2008.03.30
Что важного хранится в файлах *.ddp?


15-1203244125
avptt
2008-02-17 13:28
2008.03.30
подхватил троян


2-1204193124
Washington
2008-02-28 13:05
2008.03.30
Вопрос про директивы условной компиляции