crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

wiz29
  опции профиля:
сообщение 2.12.2010, 13:25
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Прошу откликнутся тех кто знаком с темой гомографии не понаслышке. Есть пару вопросов касающихся получения парметров изображения (исходного).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
3 страниц V   1 2 3 >  
Начать новую тему
Ответов (1 - 23)
Алексей1153
  опции профиля:
сообщение 2.12.2010, 13:51
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  



ОФФ:


хм, я даже не слышал такого, Вики тоже
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 2.12.2010, 14:13
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(Алексей1153 @ 2.12.2010, 13:51) *

ОФФ:


хм, я даже не слышал такого, Вики тоже

ОФФ:

Викизнание знает, но звучит устрашающе.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 2.12.2010, 14:29
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


а, ну дык.... Сказано же - однозначное соответствие. Если известен закон проецирования, то применить этот же закон в обратную сторону. Если закон не известен, то для исходного изображения невозможно будет узнать истинный масштаб и растягивание. Всё - ИМХО, так как я даже
Цитата(wiz29 @ 2.12.2010, 15:25) *
понаслышке

не слышал :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 2.12.2010, 14:33
Сообщение #5


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


ну если говорит простым языком гомографическая трансформация это преобразование 4х точек 1й плоскости в 4 точки другой лоскости.
например такое (0, 0)->(x0, y0)
(1, 0)->(x1, y1)
(1, 1)->(x2, y2)
(0, 1)->(x3, y3)
Результат матрица 3х3 для однородных координат. (посути, в 3д если, то перспективное преобразование точек одной плоскости в точки другой плоскости) Qt поддерживает подобные трансформации на уровне QTransform. Меня интересует, можно ли каким нибудь образом "компенсировать" перспективную составляющую данного преобразования, с тем чтобы декомпозировать афинную составляющую на повороты, мастштабирования, перемещения и сдвиги.
Кому интересно что это, можно почитать http://courses.graphicon.ru/files/courses/.../cv_2010_10.pdf

Сообщение отредактировал wiz29 - 2.12.2010, 14:36
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 2.12.2010, 14:36
Сообщение #6


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


а если спроецировать матрицы переносов, поворотов и масштабирования тоже, а только потом применить?

Сообщение отредактировал Алексей1153 - 2.12.2010, 14:36
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 2.12.2010, 14:43
Сообщение #7


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


у меня проблема вот в чем, определить преобразование трансформации не вызовет проблем даже у школьника. но мне по этому преобразованию нужно определить состовляющие skew aka shear, scale, rotate (см. фотошоп transform tool)

все дело в том что матрица получается по набору четырех точек. Какие могли быть повороты и масштабирования сложно по ней сказать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 2.12.2010, 14:43
Сообщение #8


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


не, фотошопом не владею. Ну а насчёт восстановления исходного объекта по проекции - без хотя бы одной известной точки исходника ничего точно не восстановить. От этого отталкиваться
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 2.12.2010, 14:47
Сообщение #9


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


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

так точки то известны 4е точки в координатах 1й плоскости-> в 4 точки в системе координат другой плоскости
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 2.12.2010, 14:51
Сообщение #10


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


ну, тогда нужно подставить координаты сюда

A λμ 1 + В λ 1 + С μ 1 + D = 0

А λ 2 μ 2 + В λ 2 + С μ 2 + D = 0

А λ 3 μ 3 + В λ 3 + C μ 3 + D = 0

AX4 μ 4 + B λ 4 + C μ 4 + D = 0

и порешить систему из 4 уравнений относительно A,B,C,D. Откуда они и найдутся. Таким образом получишь закон , который был применён при проекции
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 2.12.2010, 14:54
Сообщение #11


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


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

Сообщение отредактировал wiz29 - 2.12.2010, 14:55
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 2.12.2010, 19:16
Сообщение #12


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


попробуй для определённости выписать матрицы элементарных преобразований, на которые ты хочешь разложить свою матрицу. тогда уже виднее будет, как проще раскладывать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 3.12.2010, 9:26
Сообщение #13


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Все не так просто как кажется, получаются довольно сложные зависимости, проще решить эту задачу геометрически. Вот поэтому и попросил помощи....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 3.12.2010, 19:08
Сообщение #14


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


что значит - геометрически? компьютер умеет вычислять. и вся геометрия сведётся к решению вполне конкретных уравнений в любом случае. так что проще их взять и выписать, по-моему.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 8.12.2010, 12:09
Сообщение #15


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Читайте посты выше тогда станет понятно о чем я говорю. Под исключить перспективную составляющую, в данном контексте понимаю == определить плоскость (P) в пространсте из которой выполняется проекция на экранную плоскость (V). В этой плоскости P уже искать афинную составляющую трансформации. Разложить афинную составляющую на элементарные вращения, сдвиги, масштабирования и перемещения проблем никаких не вызывает....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 8.12.2010, 13:35
Сообщение #16


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


ну дык, все лучи, проведённые через точки проекций, будут сходиться в одной точке.
тебе должны быть известны либо координаты проекций в двух плоскостях, либо координаты в одной плоскости и точка схода лучей (иначе задача нерешаема). имея любые из этих данных, берёшь тангенсы в проекциях на оси координат и из них рассчитываешь отображение на любую произвольную плоскость, через отношение подобия.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 8.12.2010, 15:43
Сообщение #17


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Коррдинаты то известны. Каждая пара точек имеет свое представление в базисах каждой из плоскостей. Уравнения плоскостей не понимаю как получить. если ты посмотришь посты выше там есть все исходные данные. точки (0, 0)(P)->(X0, Y0)(V) (1, 0)(P)->(X1, Y1)(V)
(1, 1)(P)->(X2, Y2)(V) (0, 1)(P)->(X3, Y3)(V), зная их я вычисляю гомографию, матрицу трансформации из пространства Р->V дальше мне как то нужно определить афинные составляющие данного преобразования. На картинках то что я имею (1) http://s45.radikal.ru/i110/1012/ca/9d422cfe467a.png (2) http://s005.radikal.ru/i210/1012/ea/d57455d770d2.png (3) http://i076.radikal.ru/1012/86/f0130a7205c2.png вот определение параметров в случае 3 вызывает трабл, вроде как решений может быть много как мне кажется (плоскостей из которых мы получим такой результат на V)

есть мысли как решить, только нужно проверить:) как решу отпишусь:)

Сообщение отредактировал wiz29 - 8.12.2010, 15:29
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 8.12.2010, 17:09
Сообщение #18


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


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

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

вообще, вся эта математика обычно описывается в книжках про рендеринг. там именно такие задачи встречаются. я давно читала про это, просто ужасно давно. примерно помню, что суть там в том, что выписываются матрицы,которые описывают одновременно поворот на углы a,b и с и растяжение - как "четвёртую координату".
можешь, кстати, посмотреть в сторону функций OpenGL - там скорее всего всё это уже реализовано. что-нибудь в духе http://steps3d.narod.ru/tutorials/render-r...n-tutorial.html

P.S. да, и всё-таки: аФФинные преобразования - с двумя Ф. а то глаз режет :)

Сообщение отредактировал Iron Bug - 8.12.2010, 17:11
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 8.12.2010, 19:13
Сообщение #19


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Вы похоже так и не поняли сути проблемы, чтож, постараюсь объяснить еще раз. те координаты точек которые я описал, это значения коэффициентов базисных векторов в пространствах P и V соответсвенно, базис P не известен (или мб я просто уже чето не понимаю в линалгебре:)). Никакого 3го измерения здесь в помине нет, вычисления производятся для обопщенной системы координат, отсюда получается матрица 3х3. Т.о. получается, что нужно не просто найти плоскость P, нужно найти еще и преобразование в 3д переводящее V->P. В этом то и есть проблема, что сами плоскости не понятно как получить. Да одна из плоскостей опишется тривиально Z = 0 (это V плоскость), так вот найти вторую будет уже сложнее... Вот пэтому я и спрашивал про геометрическое решение:))))

как решу отпишусь:)

Сообщение отредактировал wiz29 - 8.12.2010, 19:16
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 9.12.2010, 8:53
Сообщение #20


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


ну вот это и есть то, о чём я написала, только очень сумбурно изложенное :)
там нормальное трёхмерное евклидово пространство и две плоскости. и именно поэтому матрицы преобразования выходят 3x3. просто это частный случай с одной плоскостью, задаваемой уравнением z=0. но преобразование останется трёхмерным, как ни крути. неважно, в каких координатах - ибо там три степени свободы. и для описания преобразования там явно не требуется четырёх векторов, ибо плоскость однозначно определяется невырожденной системой из трёх точек. система из четырёх уравнений для трёх координат, в общем виде, будет избыточной, либо нерешаемой.

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

а так, рекомендую всё же присмотреться к OpenGL: там есть большинство готовых функций для выполнения подобных операций. именно для этой задачи его и создавали и он для ускорения выполнения операций использует векторные возможности процессора видеокарты, как правило.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 9.12.2010, 18:51
Сообщение #21


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Цитата(Iron Bug @ 9.12.2010, 8:53) *
ну вот это и есть то, о чём я написала, только очень сумбурно изложенное :)
там нормальное трёхмерное евклидово пространство и две плоскости. и именно поэтому матрицы преобразования выходят 3x3. просто это частный случай с одной плоскостью, задаваемой уравнением z=0. но преобразование останется трёхмерным, как ни крути. неважно, в каких координатах - ибо там три степени свободы. и для описания преобразования там явно не требуется четырёх векторов, ибо плоскость однозначно определяется невырожденной системой из трёх точек. система из четырёх уравнений для трёх координат, в общем виде, будет избыточной, либо нерешаемой.

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

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

попробуте решить задачу гомографии с 3мя точками, без каких-либо ограничений... Если у вас это получится думаю вам дадут премию в области математики:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 9.12.2010, 23:17
Сообщение #22


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


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

P.S. я, конечно, давным давно окончила матмех, но не настолько, чтобы совсем уж ничего не соображать в элементарной алгебре и геометрии :)

Сообщение отредактировал Iron Bug - 9.12.2010, 23:20
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
noonv
  опции профиля:
сообщение 2.8.2011, 9:04
Сообщение #23


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 24.6.2011
Пользователь №: 2767

Спасибо сказали: 0 раз(а)




Репутация:   0  


можно посмотреть, как это реализовано в OpenCV ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 2.8.2011, 16:25
Сообщение #24


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Цитата(noonv @ 2.8.2011, 10:04) *
можно посмотреть, как это реализовано в OpenCV ;)

Реализовано что?:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V   1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 10.4.2025, 18:31