Перейти к содержимому
Compvision.ru
mrgloom

сшивка в панораму

Recommended Posts

Допустим хочу сшить панораму, не зная расположения изображений относительно друг друга.

использую корреляцию. получаю отношения между парами изображений (так же можно использовать и кол-во соответствий по ключевым точкам)

получается матрица (на диагонали должны были стоять 1, но мы диагональ не рассматриваем)

Image_31-01-2013%20%5B12-54-24%5D.png

это сшивается полоска с 1-6 какая то странная большая корреляция, которой не должно быть по идее.

0.93 что сравнимо с правильными пиками, т.е. вариант отбросить по порогу 0.9 например не проходит.

надо именно смотреть на общую картину и как то минимизировать\максимизировать наверно длину пути в графе vs сумма корреляций пар, тем более в теории может быть такой вариант, что у нас несколько невзаимосвязанных групп изображений и нам надо либо оставить только большую либо объединить в несколько групп.

как потом используя эту матрицу сложить всё в 1 картинку? видимо надо максимизировать длину графа?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

похоже это получается задача о назначениях.

но еще наверно надо как то учитывать перекрытие самих изображений.

http://ru.wikipedia.org/wiki/%D0%92%D0%B5%D0%BD%D0%B3%D0%B5%D1%80%D1%81%D0%BA%D0%B8%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC

хотя это не совсем то, т.к. у одной картинки может быть много пар.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

в общем виде

a11 a12 a13

a21 a22 a23

a31 a32 a33

по диагонали 0, т.к. само с собой мы не рассматриваем.

0 a12 a13

a21 0 a23

a31 a32 0

элементы через диагональ одинаковые, т.е.

0 a12 a13

a12 0 a23

a13 a23 0

я пробовал для каждой строки выбирать максимум, т.е. для каждого изображения найти лучшую пару.

но такой подход не всегда работает(видимо потому, что алгоритм корреляции ошибается иногда).

допустим было 8 изображений, у меня получились пары

0 1

1 2

2 1 - т.е. тут разрыв образовалась 1 группа и 2 но на самом деле это была 1 группа изображений.

3 4

4 5

5 4

6 5

7 6

надо задать какой то критерий, чтобы всё складывалось в 1 группу, т.е. чтобы через связь можно было дойти от любого одного изображения до любого другого.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

еще вопросы появились:

вот допустим у нас полностью связный граф и нам надо найти подграф такой, что все вершины связаны и сумма весов рёбер максимальна как такая задача называется?

допустим у нас есть пара 1-2 и мы хотим присоединить 3, но мы имеем только корреляции 1-3 и 2-3 реально ли получить как то (1-2) - 3?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

еще вопросы появились:

вот допустим у нас полностью связный граф и нам надо найти подграф такой, что все вершины связаны и сумма весов рёбер максимальна как такая задача называется?

допустим у нас есть пара 1-2 и мы хотим присоединить 3, но мы имеем только корреляции 1-3 и 2-3 реально ли получить как то (1-2) - 3?

Фактически то, что вам хочется найти - это клика во взвешенном подграфе. http://habrahabr.ru/post/154975/ вот в этой статье я описал один из способов поиска таких подграфов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я наверно неправильно выразился, мне надо найти не полный подграф(клику), а просто подграф который включает в себя все вершины и из каждой вершины можно попасть в каждую вершину(вроде это называется связный).

По идее надо перебрать все такие графы и найти тот у которого максимальная сумма ребер+геометрически не возникает противоречия между фотографиями.

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

п.с. насчёт графов и статьи, встречал что то похожее в некоторых пейперах аля

http://cv.snu.ac.kr/research/~RRWHM/

http://cv.snu.ac.kr/research/~RRWM/

, но вроде как вы написали это вычислительно сложно для практики.

но у самого RANSAC есть тоже проблема, пытался его приспособить в этой теме

http://www.compvision.ru/forum/index.php?showtopic=995

проблема в том, что если у нас есть 2 похожих шейпа из точек, один скажем с перспективным искажением+шум по контуру и мы в алгоритме рэндомно берем по 4 точки и начинаем прикладывать, но из-за того что у нас есть шум, у нас ни 1 группа из 4 точек не попадет на свои "реальные" трансформированные точки и из-за этого мы трансформацию получить не можем нормально(или всё таки я не прав?)

т.е. хотелось бы находить какое то "нежёсткое подобие" на графах, если это возможно, хотя есть метод с shape context+hungarian algorithm (не помню есть ли там какое то ограничение форму шейпа\расположение точек).

Но я так и не допилил его + hungarian algorithm тоже довольно жирный(хотя есть и более быстрая модификация рассмотрено тут http://dxdy.ru/topic61847.html ).

мне вот что интересно, применительно к unsupervised learning.

На вход подаем картинки на которых расположен объект какого либо типа, затем применяем поиск ключевых точек, затем вырезаем вокруг точек патчи(или можно пользоваться дескрипторами точек), а затем мы из этих точек делаем полные графы рёбра у которых евклидово расстояние(+ возможно информация о дескрипторов точек) и между этими полными графами мы ищем похожие подграфы, сначала допустим небольшого размера 3-4 вершины, потом возможно либо объединять маленькие графы в большие, либо искать сразу большие.

можно так же уменьшить размерность задачи, обводя объекты рамками и использовать точки только в них.

но вроде бы такая идея уже есть, попозже попытаюсь найти ссылку.

еще про матчинг графов

http://research.microsoft.com/pubs/70610/eccv08-MatchingMRF.pdf

http://research.microsoft.com/pubs/70610/TR-2008-101.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я наверно неправильно выразился, мне надо найти не полный подграф(клику), а просто подграф который включает в себя все вершины и из каждой вершины можно попасть в каждую вершину(вроде это называется связный).

По идее надо перебрать все такие графы и найти тот у которого максимальная сумма ребер+геометрически не возникает противоречия между фотографиями.

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

Клика — полный подграф неориентированного графа. Другими словами, клика графа есть подмножество его вершин, такое, что между каждой парой вершин этого подмножества существует ребро и, кроме того, это подмножество не принадлежит никакому большему подмножеству с тем же свойством.

п.с. насчёт графов и статьи, встречал что то похожее в некоторых пейперах аля

http://cv.snu.ac.kr/research/~RRWHM/

http://cv.snu.ac.kr/research/~RRWM/

, но вроде как вы написали это вычислительно сложно для практики.

но у самого RANSAC есть тоже проблема, пытался его приспособить в этой теме

http://www.compvision.ru/forum/index.php?showtopic=995

проблема в том, что если у нас есть 2 похожих шейпа из точек, один скажем с перспективным искажением+шум по контуру и мы в алгоритме рэндомно берем по 4 точки и начинаем прикладывать, но из-за того что у нас есть шум, у нас ни 1 группа из 4 точек не попадет на свои "реальные" трансформированные точки и из-за этого мы трансформацию получить не можем нормально(или всё таки я не прав?)

В данном случае ссылку я кинул только для того, чтобы показать идею того, как это принципиально решается. По сути вы хотите решить NP-полную задачу, а они за "умеренное"(относительно полного перебора естественно) время решаются через линейное программирование.

мне вот что интересно, применительно к unsupervised learning.

На вход подаем картинки на которых расположен объект какого либо типа, затем применяем поиск ключевых точек, затем вырезаем вокруг точек патчи(или можно пользоваться дескрипторами точек), а затем мы из этих точек делаем полные графы рёбра у которых евклидово расстояние(+ возможно информация о дескрипторов точек) и между этими полными графами мы ищем похожие подграфы, сначала допустим небольшого размера 3-4 вершины, потом возможно либо объединять маленькие графы в большие, либо искать сразу большие.

можно так же уменьшить размерность задачи, обводя объекты рамками и использовать точки только в них.

но вроде бы такая идея уже есть, попозже попытаюсь найти ссылку.

Собственно эту задачу я и решал) В статье у меня граф как раз так и строится, только там в качестве вершин используются не патчи с одного изображения а соответствия, тем самым я сразу уменьшил количество рассматриваемых вершин(можно сразу отсеять совсем неудачные варианты просто по дистанции между дескрипторами) и получаю возможность свести задачу с полного перебора по двум графам к задаче оптимизации на одном графе.

Если вас интересует построение панорам в принципе, то я бы посоветовал вам посмотреть вот эту книгу: http://szeliski.org/Book/drafts/SzeliskiBook_20100903_draft.pdf , там вроде целая глава была посвящена склеиванию панорам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

так я ж говорю у меня не клика, т.е. подграф не обязательно полный.

попробовал осилить вашу статью еще раз и не осилил.

можете как то попроще объяснить?

1. допустим вы нашли пары, некоторые из них получились ложными.(вроде как у вас каждая точка имеет только 1 пару)

2. потом вы используете голосование пар, чтобы определить масштаб.(зачем? видимо потому что потом масштаб используется в формуле)

3. потом вы делаете из 2-х наборов точек(которые по сути тоже можно было бы превратить в графы) один граф соответствий в котором вершина это пара, а веса между вершинами какая то странная функция.

4. Потом вы ищете полный подграф(который вроде как должен являться визуальным образом)получившегося на предыдущем шаге графа и имеет размера n (непонятно как только определяется n?)

видимо по критерию "имеет высокую среднюю внутри-кластерную оценку".

5. непонятно почему такое свойство

Свойство непересечения. Различные визуальные образы, как правило, не содержат общих вершин в G, а это значит, что если два локальных максимума x и y соответствуют двум различным визуальным образам

мы ищем образ максимального размера?

6.Я так и не понял оптимальное решение то гарантируется? у ранзака например задается как вероятность в зависимости от кол-ва итераций.И можно ли находить на изображениях не 1 одинаковый образ, а несколько?

+еще вопросы применительно к unsupervised learning.

1.вы ищете максимальный образ? можно ли искать образ заданного размера? можно ли задавать меру похожести?

2.как ваша задача расширяется на задачу когда у нас не 2 картинки, а N? придётся каждый с каждым?

по книжке зеленски там вроде как в разделе после Global alignment то что нужно и называется bundle adjustment посмотрю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

так я ж говорю у меня не клика, т.е. подграф не обязательно полный.

попробовал осилить вашу статью еще раз и не осилил.

можете как то попроще объяснить?

1. допустим вы нашли пары, некоторые из них получились ложными.(вроде как у вас каждая точка имеет только 1 пару)

2. потом вы используете голосование пар, чтобы определить масштаб.(зачем? видимо потому что потом масштаб используется в формуле)

3. потом вы делаете из 2-х наборов точек(которые по сути тоже можно было бы превратить в графы) один граф соответствий в котором вершина это пара, а веса между вершинами какая то странная функция.

4. Потом вы ищете полный подграф(который вроде как должен являться визуальным образом)получившегося на предыдущем шаге графа и имеет размера n (непонятно как только определяется n?)

видимо по критерию "имеет высокую среднюю внутри-кластерную оценку".

5. непонятно почему такое свойство

мы ищем образ максимального размера?

6.Я так и не понял оптимальное решение то гарантируется? у ранзака например задается как вероятность в зависимости от кол-ва итераций.И можно ли находить на изображениях не 1 одинаковый образ, а несколько?

+еще вопросы применительно к unsupervised learning.

1.вы ищете максимальный образ? можно ли искать образ заданного размера? можно ли задавать меру похожести?

2.как ваша задача расширяется на задачу когда у нас не 2 картинки, а N? придётся каждый с каждым?

по книжке зеленски там вроде как в разделе после Global alignment то что нужно и называется bundle adjustment посмотрю.

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

Оптимальное в глобальном смысле решение не гарантируется (т.к. оно будет соответствовать глобальному максимуму, который мы не ищем), но решение получается приемлемым.

Ищем мы столько образов сколько есть на изображении а не только максимальный. Размеры образов для поиска можно регулировать выбирая различную ф-ю задающую вес ребра и выбирая различные окрестности. Мера похожести задается при помощи выбора различных криетриев для построения исходного набора соответствий и выбор различных весовых функций.

Для N изображений я даже не задумывался как обобщить, можно и все изображения попарно прогонять, а можно попробовать последовательно прогнать и транзитивно строить преобразования между всеми изображениями (гесли знаем гомографию A -> B и B -> C, то логично предположить, что мы сможем аналитически построить преобразование A -> C), но это надо на практике проверять уже.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
это ф-я оценки взаимного расположения для 4х точек(2 точки с каждой вершины).

непонятно, у нас вроде бы были пары.

Свойство непересечения логично вытекает из физической природы мира (одна и та же точка не может принадлежать разным объектам).

Ищем мы столько образов сколько есть на изображении а не только максимальный.

тогда непонятно, что подразумевается под образом ибо мы имеем всего лишь набор точек, я так понимаю если 2 кластера точек разнесены, то это считается за 2 разных образа?

тема кстати вроде бы называется Inexact subgraph isomorphism\Inexact graph matching

по панорамам:

может быть бандл аджастмент и не в ту тему, во всяком случае я так и не понял чего они там пытаются сделать т.к. там определяются какие то параметры в 3Д, еще нашел в книжке зеленски еще ссылку на Disambiguating Visual Relations Using Loop Constraints

по картинкам вроде то что нужно, но пока непонятно что к чему, вроде как они используют циклы в графе, но ведь цикл может появиться и от ошибочного присоединения.

http://www.gris.uni-tuebingen.de/people/staff/biber/pano/algorithm.htm

вот тут проводится тоже какая то глобальная оптимизация.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну вообщем понял, это лишь иногда может помочь улучшить ситуацию.

мы находим в графе циклы и начинаем преобразования от первого элемента и заканчиваем первым, по идее должны получить первый элемент на его же месте, если получаем неувязку, значит какой то элемент присоединён неправильно.

так проходим по всем циклам и получаем некоторую статистику, потом на основе вероятности отбрасываем гипотезы вроде как.(про Bayesian network я чо то не понял пока)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

непонятно, у нас вроде бы были пары.

тогда непонятно, что подразумевается под образом ибо мы имеем всего лишь набор точек, я так понимаю если 2 кластера точек разнесены, то это считается за 2 разных образа?

тема кстати вроде бы называется Inexact subgraph isomorphism\Inexact graph matching

по панорамам:

может быть бандл аджастмент и не в ту тему, во всяком случае я так и не понял чего они там пытаются сделать т.к. там определяются какие то параметры в 3Д, еще нашел в книжке зеленски еще ссылку на Disambiguating Visual Relations Using Loop Constraints

по картинкам вроде то что нужно, но пока непонятно что к чему, вроде как они используют циклы в графе, но ведь цикл может появиться и от ошибочного присоединения.

http://www.gris.uni-tuebingen.de/people/staff/biber/pano/algorithm.htm

вот тут проводится тоже какая то глобальная оптимизация.

У вас есть два набора точек с каждого изображения. Берем один из наборов как исходный и пытаемся найти каждой точке из набора образ в наборе точек с другого изображения -> получаем пары точек. Ребро в графе связывает 2 пары точек, т.е. 2 точки исходного изображения и 2 точки соответствующих образов.

По последней ссылке, насколько я понял при беглом осмотре, на каждом шаге берем новое изображение, строим гомографию между ним и каждым изображением уже вошедшим в панораму, потом пытаемся вклеить это изображение в сцену минимизируя ошибку преобразования при добавлении этого изображения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну вообщем понял, это лишь иногда может помочь улучшить ситуацию.

мы находим в графе циклы и начинаем преобразования от первого элемента и заканчиваем первым, по идее должны получить первый элемент на его же месте, если получаем неувязку, значит какой то элемент присоединён неправильно.

так проходим по всем циклам и получаем некоторую статистику, потом на основе вероятности отбрасываем гипотезы вроде как.(про Bayesian network я чо то не понял пока)

Я не понимаю что вы пытаетесь формализовать в виде графа и какие циклы обходить...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
У вас есть два набора точек с каждого изображения. Берем один из наборов как исходный и пытаемся найти каждой точке из набора образ в наборе точек с другого изображения -> получаем пары точек.

а как мы по 1 точке находим предполагаемый образ? или мы там руководствуемся каким то критерием который в этих формулах.

Ребро в графе связывает 2 пары точек, т.е. 2 точки исходного изображения и 2 точки соответствующих образов.

у нас 2 сета точек, т.е. набор пар, потом пара превращается в вершину, ребра я так понял проставляются полной связность в каком то радиусе от точки. так? а веса вычисляются по формуле.

ну вообщем я вроде бы понял, что за 4 точки.

По последней ссылке, насколько я понял при беглом осмотре, на каждом шаге берем новое изображение, строим гомографию между ним и каждым изображением уже вошедшим в панораму, потом пытаемся вклеить это изображение в сцену минимизируя ошибку преобразования при добавлении этого изображения.

звучит разумно, но как это реализовать?

про панораму представленную как граф:

изначально мы делаем корреляцию все со всеми, получаем гипотетические пары, это получается полный граф где кол-во вершин это кол-во изображений, а ребра это корреляция.

потом мы можем отсечь некоторые связи по порогу.

тут надо принять во внимание, что у нас есть ошибочные связи

затем мы как то должны произвести глобальную оптимизацию, чтобы понять где у нас ошибочные пары и расставить как то наши изображения оптимальным образом.

в Disambiguating Visual Relations Using Loop Constraints предлагается например использовать циклы в графе для проверки.

у меня еще была идея просто построить все варианты, т.е. все связные подграфы графа(где из каждой вершины можно попасть в каждую), потом начать фильтровать по критерию не происходит ли геометрической коллизии и если таких графов получилось бы несколько потом посчитать сумму рёбер и выбрать с максимальной.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а как мы по 1 точке находим предполагаемый образ? или мы там руководствуемся каким то критерием который в этих формулах.

у нас 2 сета точек, т.е. набор пар, потом пара превращается в вершину, ребра я так понял проставляются полной связность в каком то радиусе от точки. так? а веса вычисляются по формуле.

ну вообщем я вроде бы понял, что за 4 точки.

звучит разумно, но как это реализовать?

про панораму представленную как граф:

изначально мы делаем корреляцию все со всеми, получаем гипотетические пары, это получается полный граф где кол-во вершин это кол-во изображений, а ребра это корреляция.

потом мы можем отсечь некоторые связи по порогу.

тут надо принять во внимание, что у нас есть ошибочные связи

затем мы как то должны произвести глобальную оптимизацию, чтобы понять где у нас ошибочные пары и расставить как то наши изображения оптимальным образом.

в Disambiguating Visual Relations Using Loop Constraints предлагается например использовать циклы в графе для проверки.

у меня еще была идея просто построить все варианты, т.е. все связные подграфы графа(где из каждой вершины можно попасть в каждую), потом начать фильтровать по критерию не происходит ли геометрической коллизии и если таких графов получилось бы несколько потом посчитать сумму рёбер и выбрать с максимальной.

Ну у нас есть для каждой точки SIFT дескриптор, образ ищем как точка с ближайшим по заданной метрике дескриптором. Собственно пары точек это если говорить терминами OpenCV - это объекты типа cv::DMatch.

Вообще ваша задача мне напоминает Kinect Fusion, только в вашем случае пространственной информации меньше. Вот описание того, как работает kinfu: http://razorvision.tumblr.com/post/15039827747/how-kinect-and-kinect-fusion-kinfu-work, может оно натолкнет на какую-то идею.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну там как раз про bundle adjustment, но я не понимаю что эта процедура вообще делает, определяем какие то параметры в 3Д.

может быть это и не то что нужно мне.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

вообщем додумался вот до чего.

Если бы алгоритм работал идеально, то надо было бы всего лишь найти лучший остов графа(maximal spanning tree) (вес ребра это корреляции между изображениями, а вершины это изображения)

http://e-maxx.ru/algo/mst_prim

http://en.wikipedia.org/wiki/Minimum_spanning_tree

но т.к. алгоритм работает неидеально,то надо найти все остовы графа и воспользоваться дополнительным критерием для глобальной оптимизации панорамы.

Критерий - sum( сумма разниц пикселей на пересечении/ площадь пересечения) соответственно, чем это значение меньше тем по идее панорама лучше сложилась.

Потом соответственно выбираем лучший остов.

Единственный минус, что наверно надо задавать жёстко насколько минимально могут пересекаться изображения(но это в самом алгоритме корреляции).

по идее это даже должно быть абсолютное значение в пикселях например >200, а не % часть картинки.

но т.к. при увеличении кол-ва вершин кол-во остовов растёт очень быстро (даже учитывая, то что мы имеем не полный граф, а разрываем слабые связи)

то проверять все очень долго и есть идея найти k лучших остовов(best k maximum spanning trees), но возможно ли это сделать без вычисления всех остовов пока непонятно.

хотя тут вроде есть еще и просто рэндомом выбирать (uniform spanning tree)

http://en.wikipedia.org/wiki/Spanning_tree

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Метод заключается в последовательном усилении связей с "правильной" конфигурацией соседей, и ослаблением связей для "неправильных" конфигураций соседей.

Английский термин "edge relaxation".

За "силу" грани принимать степень корреляции изображений.

Вероятно планарный граф можно принять за "правильный" граф, и соответственно чем больше получается планарный граф - тем лучше сшивка.

ЗЫ: Это все умозрительно, я не проверял этих идей практически.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

что значит с правильной конфигурацией соседей?

планарный граф мне кажется не подходит, т.к. у нас могут и по диагонали пересекаться.

вот нашел что то еще похожее

http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3312714/

Bundle adjustment я так понимаю тут не подходит, т.к. для него нужно иметь точки или достаточно иметь только трансформации?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опять же непонятно как они саму проблему ставят

например тут

http://graphics.cs.niu.edu/people/duffin/papers/gi98.pdf

используют

non-linear least squares minimization technique such

as Levenberg-Marquardt

ну это минимайзер.

Функция минимизации допустим по формуле (1) сумма разниц пикселей в области пересечения по всем пересечениям.

Но как сама то задача ставиться?

допустим мы не знаем какие изображения изначально пересекаются, одно изображение фиксируем остальные все сдвигаем относительно него.

Значит у нас получается функция от (n-1)*2 переменных?

вот еще подробнее, но всё равно пока не понятно

http://cns.bu.edu/~brumberg/CS580/mosaic/MAIN/mosaic.html

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Глянул первый документ, там вроде минимизируют эту самую ошибку, о которой Вы говорите, относительно параметров трансформации изображения.

То есть вектор оптимизируемых параметров будет (n^2)*3 мерным, для двух перемещений и поворота или (n^2)*8 мерным для полной аффинной трансформации.

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

Задачка, кстати, чем-то на AAM смахивает.

По последней ссылке внизу исходники есть, можно из пошагово погонять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

непонятно если мы пытаемся найти

min(F(X)), где X=(x0,x1,...,xn) , n= (N-1)*2 (т.к.одно изображение зафиксировали и у нас только сдвиг)

Допустим F это у нас сумма разности пикселей по области пересечения между всеми изображениями панорамы.

дупустим начальное приближение X0 все изображения в (0,0) (возможно не лучшее решение)

непонятно как минимайзер будет сам передвигать нам все изображения?

непонятно при чем там система уравнений перехода координат?(если мы используем только F)

и в минимайзер надо пихать только якобиан\хессиан? нельзя само значение функции?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

так у нас E=sum(I_i(f_i(x))-I_j(f_j(x))). Суммируем по i,j,x минимизируем мы относительно параметров функций трансформации (в данном случае m_11,m_12,..m33), а не x, к тому же он при суммировании уходит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

под xi я имел ввиду как раз сдвиги x,y для изображений. (они же параметры m)

т.е. X=(x0,y0,x1,y1,...) и т.д.

так у нас E=sum(I_i(f_i(x))-I_j(f_j(x))). Суммируем по i,j,x минимизируем мы относительно параметров функций трансформации (в данном случае m_11,m_12,..m33), а не x, к тому же он при суммировании уходит.

не понял.

E=sum(I_i(f_i(x))-I_j(f_j(x))) просто разность значений пикселей в области пересечения, не?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сумма разностей значений, но координаты точек, между которыми ищется разность определяются функциями преобразования координат. А так все правильно, обычная разность.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×