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

Вниз

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

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

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

Наверх





Память: 0.49 MB
Время: 0.081 c
2-1204384744
филл
2008-03-01 18:19
2008.03.30
TForm.Show


2-1204472475
Alex
2008-03-02 18:41
2008.03.30
Совсем лёгкий вопрос


15-1203233243
smartleds
2008-02-17 10:27
2008.03.30
Народ , может кто помнит как в Делфи в степень возвести.


15-1203418335
БарЛог
2008-02-19 13:52
2008.03.30
Использование переменных окружения в Java


15-1202392451
Dmitry S
2008-02-07 16:54
2008.03.30
Обещанный пример





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский