LINUX.ORG.RU
ФорумTalks

2unDEFER


0

0

Я кажется понял в чем там дело.

У Вас есть две картинки и вы хотите проверить получается ли одна из другой циклическим здвигом или нет.

Пусть мы рассматриваем чернобелую картинку (NxM) как отображение из (Z/NZ)x(Z/MZ) в C.

Пусть есть две функции f1 f2

Делаем преобразование Фурье, получаем некоторые функции g1,g2. Если две картинки отличаются здвигом на (u,v), то g1,g2 должны отличатся на умножение на функцию

h(k1,k2) = exp( 2*pi*(k1*u/N+k2*v/M) )

В вашей кривой терминологии это здвиг фаз, и чтобы оценить ее "линейность" надо взять композицию abs(g1/g2) c сопряжением и сделать еще одно преобразование фурье (пусть у нас получилась функция s)

//все операции с функциями поточечные

В идеале abs(s(n1,n2)) = N*M, а в остальных точках 0.

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

P.S Даже с теми крохами знаний, что есть у меня, мне очевидно, что у Вас в голове с абстракциями каша.

P.P.S Если что сильно не пинайте, я в этом ничего не понимаю.


s/ abs(s(n1,n2)) = N*M / abs(s(u,v)) = 1

h(k1,k2) = exp(-2*pi*sqrt(-1)*(k1*u/N+k2*v/M) )

ival
() автор топика
Ответ на: комментарий от bugmaker

>Фигасе Фурье для такой штуки юзать! Автокорреляция нужен однако...

А можно для меня на пальцах. Вот есть таблица значений h, а u v не известны. Как по этой таблице значений определить u v

ival
() автор топика

s/ abs(g1/g2) / (g1/g2)/abs(g1/g2)

ival
() автор топика
Ответ на: комментарий от ival

есть (например двумерное) функции f1 и f2 кои суть фотографии, отснятые через определённый промежуток времяни t. На их изображён неподвижное фон и объект, сдвинувшийся за это време на xs по горизонтали и на ys по вертикали. Так? функция автокорреляции K(a, b) есмь интеграл от (f1(x,y)*f2(x-a, y-b)) dx dy. Вот. Если f1(x,y) тождественно равно f2(x+a,y+b) значение K(a,b) максимально. Если же там имеется съехавший объект, то будет локальный максимум K(xs, ys). Исследуется K() на локальные максимумы. Скорось подвижново обекта буде несложно вычислить - смещение соответствует положению локальново максимума, а время меж снимками извесно.

bugmaker
()
Ответ на: комментарий от bugmaker

K(a,b) называется свертка.

AFAIN свертка считается так: снача FFT, потом поточечное умножение, затем FFT^{-1}.

В одномерном случае это n*log n протоив n^2 в лоб

>смещение соответствует положению локальново максимума,

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

ival
() автор топика
Ответ на: комментарий от bugmaker

К тому же FFT оказывается красивая весчь.

Пытаться в лоб востановить (u,v) по таблице

h(k1,k2) = exp(-2*pi*sqrt(-1)*(k1*u/N+k2*v/M)

гиблое дело, а после подсчета FFT(h) все становится очевидным :)

ival
() автор топика
Ответ на: комментарий от ival

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

bugmaker
()
Ответ на: комментарий от bugmaker

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

Я почти на 100% уверен, что все ваши автокореляции реализуются и обосновываются через FFT (одномерное или двухмерное)

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

FFT - вещь линейная (изоморфизм алгебр). Наверняка там эфекты будут локализовываться у локальных екстремумов или что-то типа тово.

А вообще красноглазые рассуждения надо прекращать (это я как минимум про свои). Я в эту тему постить больше не буду.

ival
() автор топика
Ответ на: комментарий от ival

Ну ладно, как хош. Фишка в том, что если каждй объект представлен волновым пакетом, sum (K_n*exp (i*phi_n)), два обекта будут представлено суммой волновых пакетов, sum ((K1_n + K2_n)*exp (i*phi_n)). После преобразования будут известны только суммы коэффициентов (K1_n + K2_n). И разделить коэффициенты на составляющие относящиися к разным обектам тоскливонахъ.

bugmaker
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.