![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с изображениями... [D7]
borodaj © (2007-04-21 11:06:00)Есть такая задача... Имеется эталон изображиния и тест(к примеру настоящий доллар - эталон, ну и фальшивый - тест). Подскажите, надо найти две опорные точки (к примеру самый яркий пиксель... и т.д.), на каждом из изображений, затем по этим точкам совместить два изображения, и получить процент "разности" этих изображений!
DVM (2007-05-03 16:02:00) [1]По-моему тут подойдет тот же алгоритм, что применяется для реализации детектора движения.
Rial (2007-05-02 19:51:00) [2]Не знаю, сори, это не ко мне.
Тут все работа с матрицами да и только.
Поищи ссылочки на эту тему. Математическую. ;)
Покопай в сторону сравнения изоражений.
Ты так не пугайся... начни, все само собой получится.
Начни с последнего. Возьми 2 изображения,
которые определенно не повернуты и начни их сравнивать.
Потом реализуй сглаженный поворот...
borodaj (2007-05-02 19:48:00) [3]может ссылочки полезные... это последнее, что написать осталось!
Rial (2007-05-02 19:47:00) [4]Нет, на примере не мог бы, извини.
Кода у меня нет никакого, это все только идея,
а задачка не на 15 минут, чтобы ее сейчас прешать.
Писанины уж много больно :)
Но результат это должно дать, теоритически, неплохой.
borodaj (2007-05-02 19:44:00) [5]я конечно понаглею... но немог бы ты на примере все показать? с этим сталкиваюсь второй раз! а время поджимает, блин! заранее спасибо!
Rial (2007-05-02 19:44:00) [6]Я тут подумал еще... камней подводных на самом деле много...
Но если что - спрашивай, что нибудь придумаем :)
Просто надеюсь, мысль я понятно изложил.
borodaj (2007-05-02 19:39:00) [7]во как!! огромное спасибо.. выручил не представляешь как!!!!!!
Rial (2007-05-02 19:37:00) [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 16:08:00) [9]спасибо... но если еще будут варианты, пишите!! :)
Чародей (2007-05-02 13:25:00) [10]если скорость значения не имеет то:
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 11:52:00) [11]нет, ну в принципе это показательная программа... мне она нужна лишь для диплома! и результат мне действительно нужен приблизительный.
А ненльзя ли поподробней про гистограмму, и если можно с примерчиком, просто с избражениями работал мало, если так можно сказать, а сроки поджимают!
заранее спасибо!
Чародей (2007-05-02 11:40:00) [12]интересно зачем все это. Самое сложное это совмещение т.к если при сканировании сместить купюру на небольшой угол изображения будут сильно отличаться + на банкнотах теперь присутствуют светоотражающие элементы и при каждом сканировании цвет может отличаться.
imho проще всего считать гистограмму по каналам с равнивать различия. но если чесно смысла в этом мало, так как результат заведомо очень приблизительный(при любом сравнении imho)
clickmaker (2007-05-02 11:31:00) [13]
> к примеру самый яркий пиксель
задача сводится к нахождению максимума в некотором массиве
> по этим точкам совместить два изображения
x2,y2=x1,y1 где x,y - найденные выше точки
> получить процент "разности" этих изображений
ну самое простое - "тупой" пиксельный перебор.
Либо наложение двух картинок с растровой XOR - ненулевые (не черные) точки и будут как бы разностной картинкой
borodaj (2007-05-02 11:09:00) [14]если честно, то все три сразу...
homm (2007-04-21 22:08:00) [15]В чем вопрос?
1) Как найти две опорные точки?
2) Как по этим точкам совместить два изображения?
3) Как получить процент "разности" этих изображений?
Или все 3 сразу? :)
—————————————————————————
Модераторы — позор!