Имеется бинарный (черно-белый) рисунок. Он преобразуется в также бинарный рисунок такого же разрешения. Требуется найти алгоритм для определения насколько второй отличается от первого. Нужно что-то вроде алгоритма сравнения двух растровых несильно (на глаз) отличающихся образов одинакового разрешения. Алгоритм должен давать цифру: "похожесть" либо наоборот "различность" этих образов.
Здравствуйте, Lamot', Вы писали:
L>Имеется бинарный (черно-белый) рисунок. Он преобразуется в также бинарный рисунок такого же разрешения. Требуется найти алгоритм для определения насколько второй отличается от первого. Нужно что-то вроде алгоритма сравнения двух растровых несильно (на глаз) отличающихся образов одинакового разрешения. Алгоритм должен давать цифру: "похожесть" либо наоборот "различность" этих образов.
Если рисунки имеют одинаковый масштаб — то просто наложи один на другой через XOR.
Посчитай количество единичек.
Или тебе нужно проводить какой-то хитрожелтый анализ? Тогда, боюсь, без векторизации не обойдешься.
К>Если рисунки имеют одинаковый масштаб — то просто наложи один на другой через XOR. К>Посчитай количество единичек.
C>Если под "преобразованием" понимается циклический сдвиг на один пиксел, а "рисунок" — это нечто вроде C>101010101 C>010101010 C>101010101 C>... C>... C>101010101
C>то твой алгоритм даст 100% несоответствие. На деле это совсем не так.
Тогда нужно уточнить критерий сравнения.
Любите книгу — источник знаний (с) М.Горький
Re: Требуется подобие для человеческого восприятия
Привет, Lamot'!
L>Имеется бинарный (черно-белый) рисунок. Он преобразуется в также бинарный рисунок такого же разрешения. Требуется найти алгоритм для определения насколько второй отличается от первого. Нужно что-то вроде алгоритма сравнения двух растровых несильно (на глаз) отличающихся образов одинакового разрешения. Алгоритм должен давать цифру: "похожесть" либо наоборот "различность" этих образов.
Человек воспринимает изображение не по пикселам, а в целом. В черно-белом изображении главный фактор — яркость данного места.
Например, если какой-то кусок картинки предполагается серым, а не черным и не белым, то совершенно не важно каким образом эта "серость" задана:
010101 011001
101010 или 100110 или как-то еще.
010101 011001
В обоих случаях равномерно распределенная половина пикселов черная.
Поэтому, задача состоит в том, чтобы в каждый пиксел внести информацию о том, как место вокруг этого пиксела воспринимает человек, какая яркость этого места, а не пиксела. Две картники похожи тогда и только тогда, когда у них схожи все места в смысле восприятия их человеком.
В связи с этим мне кажется разумным применить следующий алгоритм: 1. "Размытие" картинки до 256 (например) градаций серого, путем внесения в каждый пиксел информации о том, что его окружает, как воспринимается окружающее его место в целом. 2. Попиксельное сравнение и подсчет суммы модулей разности значений в пикселах. 3. Критерий определяется из практики. Если сумма, полученная на предыдущем шаге больше, чем alfa*width*height*256, то картинки признаются различными, если нет — схожими.
"Размытие" картинки можно строить, например, следующим образом: каждый пиксел вокруг данного, включая, естественно, саму точку, входит в новое значение с определенным весом.
P.S. Мне настолько понравилась задачка, что я непременно поэкспериментирую с предлагаемым выше алгоритмом (правда когда будет время — может быть ближе к выходным). Если будет что-то интересное — напишу!
Здравствуйте, Apapa, Вы писали:
A>Привет, Lamot'!
L>Имеется бинарный (черно-белый) рисунок. Он преобразуется в также бинарный рисунок такого же разрешения. Требуется найти алгоритм для определения насколько второй отличается от первого. Нужно что-то вроде алгоритма сравнения двух растровых несильно (на глаз) отличающихся образов одинакового разрешения. Алгоритм должен давать цифру: "похожесть" либо наоборот "различность" этих образов.
A>Человек воспринимает изображение не по пикселам, а в целом. В черно-белом изображении главный фактор — яркость данного места.
[] A>Поэтому, задача состоит в том, чтобы в каждый пиксел внести информацию о том, как место вокруг этого пиксела воспринимает человек, какая яркость этого места, а не пиксела. Две картники похожи тогда и только тогда, когда у них схожи все места в смысле восприятия их человеком.
A>В связи с этим мне кажется разумным применить следующий алгоритм: A>1. "Размытие" картинки до 256 (например) градаций серого, путем внесения в каждый пиксел информации о том, что его окружает, как воспринимается окружающее его место в целом. A>2. Попиксельное сравнение и подсчет суммы модулей разности значений в пикселах. A>3. Критерий определяется из практики. Если сумма, полученная на предыдущем шаге больше, чем alfa*width*height*256, то картинки признаются различными, если нет — схожими.
[]
Может бред какой-то, но получилось что-то вроде этого (см. ниже). На самом деле можно поэкспериментировать с алгоритмом "размытия", т.е. сведения в пиксел информации о месте в целом, чтобы обеспечить б'ольшую восприимчивость.
На самом деле, задача состоит из 2 подзадач:
1) растровые искажения (когда изображения совпадают по месту, но есть различные виды blur'а и цветопередачи)
2) векторные искажения (в простейшем виде — сдвиг, затем — масштабирование, повороты, навороты ).
В первом случае — можно копать в сторону wavelet компрессии
во втором, вероятно — фрактальные
О где же вы, Frostbitten'а деянья? ( -_-; ) ... << RSDN@Home 1.0 beta 7a >>
Привет, Кодт!
К>На самом деле, задача состоит из 2 подзадач: К>1) растровые искажения (когда изображения совпадают по месту, но есть различные виды blur'а и цветопередачи) К>2) векторные искажения (в простейшем виде — сдвиг, затем — масштабирование, повороты, навороты ).
Вторая отпадает. По крайней мере я ее сразу отбросил! Было написано:
Нужно что-то вроде алгоритма сравнения двух растровых несильно (на глаз) отличающихся образов одинакового разрешения.
Так что масштабирование, повороты и сдвиги не использовались.
К>В первом случае — можно копать в сторону wavelet компрессии К>во втором, вероятно — фрактальные
Где бы посмотреть?
Здравствуйте, Apapa, Вы писали:
A>Привет, Кодт!
К>На самом деле, задача состоит из 2 подзадач: К>1) растровые искажения (когда изображения совпадают по месту, но есть различные виды blur'а и цветопередачи) К>2) векторные искажения (в простейшем виде — сдвиг, затем — масштабирование, повороты, навороты ). A>Вторая отпадает. По крайней мере я ее сразу отбросил! Было написано: A>
A>Нужно что-то вроде алгоритма сравнения двух растровых несильно (на глаз) отличающихся образов одинакового разрешения.
A>Так что масштабирование, повороты и сдвиги не использовались.
К>В первом случае — можно копать в сторону wavelet компрессии К>во втором, вероятно — фрактальные A>Где бы посмотреть?
Если надо могу выложить кучу доков ... общий размер > 100Mb, но своем хостинге... все сразу выложить не смогу могу почастям.... так что если заинтересовало пишите темы
Здравствуйте, ch00k, Вы писали:
C>А можно узнать, что есть?
1. Вейвлеты — 7 доков (12 Mb)
2. Сегментация >
3 ИНСТИТУТ РАДИОТЕХНИКИ И ЭЛЕКТРОНИКИ РАН В.М. ПОЛЯКОВ "ДИСТАНЦИОННОЕ ЗОНДИРОВАНИЕ ПРИРОДНОЙ СРЕДЫ РАДИОФИЗИЧЕСКИМИ МЕТОДАМИ" — 1 док (2Мb)
4. Что-то по алгоритмам обработки изображений — 4 дока (3.5 Mb)
5. Кое-что по Open GL — 3 дока (1.8 Mb)
6. Кое-что по 3D — ? доков (5 метров) // примечание — разбирался за ненадобностью
7. Исходники KUIM, собственно эти исходники и у них скачать (OpenSource проект) — Библиотека функций ЦОИ (Цифр. Обработки Изобр.) — весьма интересная, реализвана на с, легко портируется на различные платформы (9 метров)
8. Лекции — наиболее интересный материал особенно для начинающих (14 метров)
9. Кое-что по морфологии — (3 метра)
10. Разно-общее — тоже, в принципе, может кое-что заинтересовать и понадобиться — (1.5 метра)
11. Куча pdf-файлов — с кратким описанием тех или иных алгоритмов, толком не разбирался за нехваткой времени (~52 метра)
12. Еще раз разное — то, что не успел отсортировать (~23 метра)
13. Кое-какие дипломные работы выпускников МГУ... (только, что-то мне подсказывает, что это урезанные версии). (3 метра)... Их можно найти на самом сайте МГУ... ссылок не спрашивайте, не помню... не сохранились
14. Сжатие изображений — (0.5 Kb)
15. Сплайны — (0.5 Kb)
16. Фильтры — (1 метр) // примечание: о них лучше читать в лекциях там более подробно
17. Цвет и свет — (1.5 метра)
18. Описание создание различных эффектов — (2.2 метра)
Вейвлеты — 7 доков (12 Mb)
Исходники KUIM,
Лекции — наиболее интересный материал особенно для начинающих (14 метров)
Кое-что по морфологии
Куча pdf-файлов...
Разно-общее
Здравствуйте, Lamot', Вы писали:
L>Имеется бинарный (черно-белый) рисунок. Он преобразуется в также бинарный рисунок такого же разрешения. Требуется найти алгоритм для определения насколько второй отличается от первого. Нужно что-то вроде алгоритма сравнения двух растровых несильно (на глаз) отличающихся образов одинакового разрешения. Алгоритм должен давать цифру: "похожесть" либо наоборот "различность" этих образов.
Я это уже где-то видел. Программы по сравнению отпечатков пальцев (системы поддверждения). В этих системах используется матрица NxN, которая формирует изображение капилярной сетки пальца, вся сложность в том, что картинка каждый раз получается разной, поворот, смещение, пальца, пыль, нечеткое изображение и тд. Наверняка есть по этому вопросу литература.
Здравствуйте, Lamot', Вы писали:
L>Имеется бинарный (черно-белый) рисунок. Он преобразуется в также бинарный рисунок такого же разрешения. Требуется найти алгоритм для определения насколько второй отличается от первого. Нужно что-то вроде алгоритма сравнения двух растровых несильно (на глаз) отличающихся образов одинакового разрешения. Алгоритм должен давать цифру: "похожесть" либо наоборот "различность" этих образов.
Теоретики тебе уже все сказали?
И ты познал духа свово нищету?