Алгоритм сравнения 2-х фотографий (посоветуйте)

Модератор: Модераторы разделов

Аватара пользователя
SoulRiver
Сообщения: 74
ОС: Ubuntu 9.10

Алгоритм сравнения 2-х фотографий

Сообщение SoulRiver »

Постановка задачи такова: Имеется два изображения одного и того же объекта с разных ракурсов. Требуется найти на этих изображениях одинаковые поверхности.
Есть идея использовать аппарат ИНС для решения этой задачи. Может быть кто то посоветует еще способы без использования ИНС???
Спасибо сказали:
Аватара пользователя
begin2009
Сообщения: 349
Статус: Ламер со стажем
ОС: без глюков

Re: Алгоритм сравнения 2-х фотографий

Сообщение begin2009 »

ИНС это инерциальные навигационные системы или Институт национальной стратегии. Последних использовать не советую.

А вообще как метод. На каждой фотографии выделить несколько одинаковых точек. Разбить на треугольники (многоугольники). Применить формулы аффинных преобразований. Тогда видно, чем отличается изображение на фото. Сдвиг, вращение, подобие и т.д. И плясать отсюда. Нет?
Пессимист видит темный туннель, оптимист видит свет в конце туннеля, реалист видит свет, туннель и поезд.
И только машинист видит этих трех идиотов, сидящих на рельсах.
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: Алгоритм сравнения 2-х фотографий

Сообщение Crazy »

begin2009 писал(а):
12.02.2010 23:56
ИНС это инерциальные навигационные системы или Институт национальной стратегии. Последних использовать не советую.

А вы юморист. ИНС( искусственный нейронный сети) один из методов анализа изображения.

Desipere in loco
Спасибо сказали:
Аватара пользователя
SoulRiver
Сообщения: 74
ОС: Ubuntu 9.10

Re: Алгоритм сравнения 2-х фотографий

Сообщение SoulRiver »

Crazy писал(а):
13.02.2010 00:02
begin2009 писал(а):
12.02.2010 23:56
ИНС это инерциальные навигационные системы или Институт национальной стратегии. Последних использовать не советую.

А вы юморист. ИНС( искусственный нейронный сети) один из методов анализа изображения.

Это верно :rolleyes:

begin2009 писал(а):
12.02.2010 23:56
ИНС это инерциальные навигационные системы или Институт национальной стратегии. Последних использовать не советую.

А вообще как метод. На каждой фотографии выделить несколько одинаковых точек. Разбить на треугольники (многоугольники). Применить формулы аффинных преобразований. Тогда видно, чем отличается изображение на фото. Сдвиг, вращение, подобие и т.д. И плясать отсюда. Нет?

ИНС - искусственные нейронные сети! Интересное предложение, но к примеру, вы фотографигуйте край какого либо объекта с разных сторон и тогда такой метод сравнения работать уже не будет.
Спасибо сказали:
Аватара пользователя
begin2009
Сообщения: 349
Статус: Ламер со стажем
ОС: без глюков

Re: Алгоритм сравнения 2-х фотографий

Сообщение begin2009 »

То есть на фото нет совпадающих частей вообще? Тогда алгоритм представить трудно. Если общие части есть - преобразование можно определить по части фото.
Пессимист видит темный туннель, оптимист видит свет в конце туннеля, реалист видит свет, туннель и поезд.
И только машинист видит этих трех идиотов, сидящих на рельсах.
Спасибо сказали:
Аватара пользователя
SoulRiver
Сообщения: 74
ОС: Ubuntu 9.10

Re: Алгоритм сравнения 2-х фотографий

Сообщение SoulRiver »

begin2009 писал(а):
13.02.2010 00:45
То есть на фото нет совпадающих частей вообще? Тогда алгоритм представить трудно. Если общие части есть - преобразование можно определить по части фото.

Общие части естественно есть! Преобразование интересное предложение, буду пробовать.
У кого еще какие идеи?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21520
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Алгоритм сравнения 2-х фотографий

Сообщение Bizdelnick »

Если "одинаковые поверхности" - это плоскости, посмотрите в сторону алгоритмов выравнивания фоток, которые в сшивателях панорам используются. Только там характер искажений совершенно другой (дисторсия, которая исправляется очень легко).
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
SoulRiver
Сообщения: 74
ОС: Ubuntu 9.10

Re: Алгоритм сравнения 2-х фотографий

Сообщение SoulRiver »

Bizdelnick писал(а):
13.02.2010 01:29
Если "одинаковые поверхности" - это плоскости, посмотрите в сторону алгоритмов выравнивания фоток, которые в сшивателях панорам используются. Только там характер искажений совершенно другой (дисторсия, которая исправляется очень легко).

а есть какой нибудь сшиватель панорам с открытым кодом?
Спасибо сказали:
Doublespace
Сообщения: 275
ОС: Debian Lenny,Squeeze,Centos

Re: Алгоритм сравнения 2-х фотографий

Сообщение Doublespace »

Меня всегда интересовало,можно ли к такой задаче прикрутить алгоритмы корреляционного анализа,что мы по электронике изучали.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Алгоритм сравнения 2-х фотографий

Сообщение NickLion »

Doublespace писал(а):
13.02.2010 11:42
Меня всегда интересовало,можно ли к такой задаче прикрутить алгоритмы корреляционного анализа,что мы по электронике изучали.

Да, можно, если ввести векторную характеристику, устойчивую к искажениям :D
Корреляция себя неплохо чувствует при нахождении точного положения маленьких областей.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21520
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Алгоритм сравнения 2-х фотографий

Сообщение Bizdelnick »

SoulRiver писал(а):
13.02.2010 01:34
а есть какой нибудь сшиватель панорам с открытым кодом?

http://panotools.sourceforge.net/
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
MassConstructor
Сообщения: 20
ОС: GNU/Linux Debian 5.0.1

Re: Алгоритм сравнения 2-х фотографий

Сообщение MassConstructor »

Коллеги, если не возражаете, я тоже выскажусь.
Проблема в постановке задачи, а именно а разности ракурсов. Использовать нейросеть для этого можно лишь в том случае, если правильно представить себе максимальное и мимнимальное различие в изображении предмета (как известно, персептрон (система класса Adaline) делит целевое пространство на две части одной гиперплоскостью, следовательно, для корректного построения сети надо знать количество параметров, которые определят принадлежность к распознаваемому классу). Также, при выборе метода ИНС необходимо правильно кодировать входные и декодировать выходные сигналы.
Пример: если фон объекта легко процедурно отделим от самого объекта, то, предварительно отделив объекты от фона на обоих входных изображениях, можно послать одно изображение на вход сети Хопфилда, предварительно обучив ее другим образцом, и, если на выходе получится точная копия исходного изображения, то сфотографирован один и тот же объект. Недостатки очевидны.
Если же ракурсы сильно различаются, то стойкого метода, позволяющего сделать искомое заключение, на данный момент не существует (или он мне не известен).
По вопросам архитектур ИНС обращайтесь, всегда помогу ;)
Спасибо сказали:
Аватара пользователя
SoulRiver
Сообщения: 74
ОС: Ubuntu 9.10

Re: Алгоритм сравнения 2-х фотографий

Сообщение SoulRiver »

MassConstructor писал(а):
13.02.2010 17:11
Коллеги, если не возражаете, я тоже выскажусь.
Проблема в постановке задачи, а именно а разности ракурсов. Использовать нейросеть для этого можно лишь в том случае, если правильно представить себе максимальное и мимнимальное различие в изображении предмета (как известно, персептрон (система класса Adaline) делит целевое пространство на две части одной гиперплоскостью, следовательно, для корректного построения сети надо знать количество параметров, которые определят принадлежность к распознаваемому классу). Также, при выборе метода ИНС необходимо правильно кодировать входные и декодировать выходные сигналы.
Пример: если фон объекта легко процедурно отделим от самого объекта, то, предварительно отделив объекты от фона на обоих входных изображениях, можно послать одно изображение на вход сети Хопфилда, предварительно обучив ее другим образцом, и, если на выходе получится точная копия исходного изображения, то сфотографирован один и тот же объект. Недостатки очевидны.
Если же ракурсы сильно различаются, то стойкого метода, позволяющего сделать искомое заключение, на данный момент не существует (или он мне не известен).
По вопросам архитектур ИНС обращайтесь, всегда помогу ;)

Спасибо!
Угол обзора будет выбираться из интервала [0, 120] градусов. А можете дать ссылки на литература о работе ИНС с изображениями?
Спасибо сказали:
Аватара пользователя
SoulRiver
Сообщения: 74
ОС: Ubuntu 9.10

Re: Алгоритм сравнения 2-х фотографий

Сообщение SoulRiver »

Вообще изображения подготавливаются таким образом: одно до другое после обработки фильтром
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
MassConstructor
Сообщения: 20
ОС: GNU/Linux Debian 5.0.1

Re: Алгоритм сравнения 2-х фотографий

Сообщение MassConstructor »

Вы можете дать пример двух ракурсов? Или ракурс один и требуется сравнить обработанное и необработанное изображение?

Насчет литературы:
1) Д.Рутковская, М.Пилиньский, Л.Рутковский. Нейронные сети, генетические алгоритмы и нечеткие системы: Пер. с польск. И.Д.Рудинского - М.:Горячая линия - Телеком, 2006
2) В.В.Круглов, В.В.Борисов. Искуственные нейронные сети. Теория и практика. - М.:Горячая линия - Телеком, 2002
ОЧЕНЬ советую первую книгу - там дан хороший математический аппарат, хотя почти ничего не сказано о релаксационных сетях. :( Для этого советую вторую :)
Спасибо сказали:
Аватара пользователя
SoulRiver
Сообщения: 74
ОС: Ubuntu 9.10

Re: Алгоритм сравнения 2-х фотографий

Сообщение SoulRiver »

MassConstructor писал(а):
13.02.2010 22:50
Вы можете дать пример двух ракурсов? Или ракурс один и требуется сравнить обработанное и необработанное изображение?

Насчет литературы:
1) Д.Рутковская, М.Пилиньский, Л.Рутковский. Нейронные сети, генетические алгоритмы и нечеткие системы: Пер. с польск. И.Д.Рудинского - М.:Горячая линия - Телеком, 2006
2) В.В.Круглов, В.В.Борисов. Искуственные нейронные сети. Теория и практика. - М.:Горячая линия - Телеком, 2002
ОЧЕНЬ советую первую книгу - там дан хороший математический аппарат, хотя почти ничего не сказано о релаксационных сетях. :( Для этого советую вторую :)

За книги огромное спасибо! :)
Сравниваться уже будут обработанные изображения. Вот пример ракурсов:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
MassConstructor
Сообщения: 20
ОС: GNU/Linux Debian 5.0.1

Re: Алгоритм сравнения 2-х фотографий

Сообщение MassConstructor »

Незачто!

Насчет изображений - это очень сложная задача. ИНС всех видов в чистом виде здесь просто бессильны, поверьте моему опыту.
Вам однозначно нужен более комплексный подход.
Без дополнительных данных о задаче могу предложить только один порядок действий:
1) Фильтрация (она у Вас есть, насколько я понимаю)
2) Выделение уникального набора точек (необходимо чтобы объект был текстурирован уникальными текстурными картами)
3) На основе сравнения таких наборов выдавать вероятностное утверждение о сходстве или различии
Также, проводя фильтрацию методом свертки с матрицей размерностью 3 (например), можно выделять границы плоскостей и подкреплять вывод координатами выделенных многоугольников.

Задача резко упрощается, если у Вас есть возможность следить за изменением ракурса с малой дельтой угла. Например, если ракурс объекта берется с вращающейся камеры. В этом случае есть метод опорных точек.
Спасибо сказали:
Аватара пользователя
SoulRiver
Сообщения: 74
ОС: Ubuntu 9.10

Re: Алгоритм сравнения 2-х фотографий

Сообщение SoulRiver »

MassConstructor писал(а):
13.02.2010 23:33
Незачто!

Насчет изображений - это очень сложная задача. ИНС всех видов в чистом виде здесь просто бессильны, поверьте моему опыту.
Вам однозначно нужен более комплексный подход.
Без дополнительных данных о задаче могу предложить только один порядок действий:
1) Фильтрация (она у Вас есть, насколько я понимаю)
2) Выделение уникального набора точек (необходимо чтобы объект был текстурирован уникальными текстурными картами)
3) На основе сравнения таких наборов выдавать вероятностное утверждение о сходстве или различии
Также, проводя фильтрацию методом свертки с матрицей размерностью 3 (например), можно выделять границы плоскостей и подкреплять вывод координатами выделенных многоугольников.

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

Задача такая: есть объект (любой, это для примера я сделал в автокаде простенькую модель), цифровиком мы делаем его фотографии с n-ого кол-ва ракурсов, достаточного для того, чтобы рассмотреть этот объект с различных сторон. Потом анализируя последователь эти изображения, находя одинаковые точки и перещитывая по формулам их расположение в 3х мерной плоскости создаем 3D модель объекта. Потом ее текстурируем.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Алгоритм сравнения 2-х фотографий

Сообщение Portnov »

Если картинки - это фотографии, и разница в ракурсах невелика, то с существенной вероятностью контрольные точки сможет расставить autopano (autopano-sift-C). Для приведённой модели оно выдало полную ерунду :/
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
MassConstructor
Сообщения: 20
ОС: GNU/Linux Debian 5.0.1

Re: Алгоритм сравнения 2-х фотографий

Сообщение MassConstructor »

SoulRiver писал(а):
13.02.2010 23:51
Задача такая: есть объект (любой, это для примера я сделал в автокаде простенькую модель), цифровиком мы делаем его фотографии с n-ого кол-ва ракурсов, достаточного для того, чтобы рассмотреть этот объект с различных сторон. Потом анализируя последователь эти изображения, находя одинаковые точки и перещитывая по формулам их расположение в 3х мерной плоскости создаем 3D модель объекта. Потом ее текстурируем.


Значит мне удалось угадать Вашу задачу :)
Это уже достаточно простой случай. Такие алгоритмы часто применяются в некоторых псевдо-3d-сканерах.
Могу предложить следующее решение:
А. Исходные материалы
1) Одноцветный фоновый материал
2) Одноцветная платформа на валу мотора с редуктором
3) Камера с удаленным управлением

Б. Краткий мета-алгоритм
1) Собираем набор фотографий объекта, посылая команды съемки на камеру с равными промежутками времени. Платформа в это время вращается с равномерной (и достаточно малой) скоростью. Получаем набор фотографий с фиксированным угловым шагом ракурса.
2)
2.0. Программа-обработчик просит пользователя вручную указать точки привязки (начальный набор вертексов) на первой фотографии. Формируется начальный набор полигонов.
2.1. Программа переходит к следующей фотографии и методом "ближайшего соседа" находит изменившиеся положения и предлагает пользователю принять или изменить этот набор.
2.2. п.2.1. повторяется для всего набора. Пользователь таким образом постепенно формирует полный полигональный набор.

3) По классическим формулам рассчитывается положение текстурных карт. Пользователю предлагается выбрать наиболее подходящий ракурс для каждой текстурной карты.
4) Для кардинально других ракрусов - переход на пункт 1, только новые полигоны на втором этапе программа предлагает связывать с уже существующими.

Это то, что сразу приходит в голову. Наверняка, можно немного упростить некоторые нюансы.
Вообще, для этих целей существуют полноценные 3d-сканеры. Но они, как правило, работают уже не с полигонами, а с воксельными пространствами.

Надеюсь, это Вам хотя бы немного поможет. :rolleyes:
Спасибо сказали:
Аватара пользователя
SoulRiver
Сообщения: 74
ОС: Ubuntu 9.10

Re: Алгоритм сравнения 2-х фотографий

Сообщение SoulRiver »

Доступно! Буду пробывать!
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21520
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Алгоритм сравнения 2-х фотографий

Сообщение Bizdelnick »

В Ваших примерах есть одна деталь, которая может усложнить задачу - разное освещение. То есть разное взаимное расположение источника света и объекта. Если бы камера перемещалась вокруг объекта, всё было бы проще, но у Вас поворачивается сам объект.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
MassConstructor
Сообщения: 20
ОС: GNU/Linux Debian 5.0.1

Re: Алгоритм сравнения 2-х фотографий

Сообщение MassConstructor »

Bizdelnick писал(а):
14.02.2010 01:55
В Ваших примерах есть одна деталь, которая может усложнить задачу - разное освещение. То есть разное взаимное расположение источника света и объекта. Если бы камера перемещалась вокруг объекта, всё было бы проще, но у Вас поворачивается сам объект.


Соглашусь и замечу, что важным моментом здесь является угол падения луча. При вращающемся объекте этот угол для каждой плоскости будет меняться. Факт.
Но, во-первых, при вращении камеры вокруг объекта также могут быть заметны некоторые артефакты освещения (блики), когда камера поймает локальный максимум отраженного света.
Во-вторых, технически предложенный мною способ проще.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21520
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Алгоритм сравнения 2-х фотографий

Сообщение Bizdelnick »

MassConstructor, я, честно говоря, не про Ваше сообщение писал, а про выложенные ТС картинки :) Так или иначе, ему следует сперва определиться, в каких условиях будет проводиться съёмка, а уже потом решать задачу исходя из этого. В противном случае получится ерунда.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
SoulRiver
Сообщения: 74
ОС: Ubuntu 9.10

Re: Алгоритм сравнения 2-х фотографий

Сообщение SoulRiver »

Камера будет вращаться вокруг объекта! Делаем фотографию, перемещаем камеру относительно центра объекта на угол α, делаем очередную фотографию и так далее до 360 градусов. Угол α я думаю можно будет определить практическим путем.
Спасибо сказали: