Форум: "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.046 c