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 ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.