Если у вас под рукой есть ссылка на теорию по построению функции сравнения для варианта 2D напишите ее пожалуйста. Вариант TT-2PT очевиден именно для одномерного случая, тогда как для двумерного случая уже не понятно, ведется суммирование по строке или столбцу, а если и то и другое то как это соотносится с точечной разницей яркости.
Причина в разнице начальной позиции в использовании различных функций в определении. При теории основанной на свойствах полиномов необходима инверсия, тогда как использование теоремы о свертке подразумевает дополнительную замену переменных, которая и приводит к величине изменения позиции.
В публикации использовал часть теории связанной с полиномами так как опираясь на них строят функцию для определения позиции образца. Плюс удобно показать получаемые размеры, что может быть важно при оптимизации. При использовании свертки последнее получить сложнее.
Вот как выглядит попытка объяснения различий для варианта свертки, в действительности же сдвиги относятся к свойству преобразования, а не к свойствам самого изображения.
При использовании дискретного преобразования Фурье, матрица M содержит также элементы от циклического сдвига изображений между собой. Поэтому, если не требуется анализировать циклический сдвиг кадров, то поиск максимального элемента в матрице M нужно ограничить областью (0,0)-(N1-M1, N2-M2).
Именно из-за таких мелочей которые будучи смешаны в кучу дают «абракадабру» я и написал статью.
Если использовать сопряжение и прямой порядок, тогда нумерация PT начинается с первой позиции, длинна же как и в публикации будет n-m+1 (*PT*)
PolyT = {1, 2, 3, 4, 5}; LT = Length[PolyT];
PolyP = {3, 2, 1}; LP = Length[PolyP];
PolyR = {}; LR = LT + LP - 1;
eT = Table[If[i > LT, 0, PolyT[[i]]], {i, 1, LR}]
eP = Table[If[i > LP, 0, PolyP[[i]]], {i, 1, LR}]
«Существует еще такая вариация, как БПФ на кольцах по модулю простых чисел, она точная.» аналитически может и точная, но при использовании численного расчета на действительный числах обойти минимум машинную точность вычисления не получится. Поэтому пишу про приближение и возможный диапазон яркостей.
Относительно утверждения про легко, я сомневаюсь, и именно поиску изображения в изображении планирую создать еще одну публикацию. Насколько видно из [1] там автор с легкостью то и не справился, забыв указать про инверсию массива образца, оставив только не существенное комплексное сопряжение которое к стати в приведенном одномерном алгоритме исключено. Как и используется другая функция для определения позиции образца.
Если вы обратите внимание, то в определении свертки и взаимной корреляционной последовательности есть различие, в интегральной форме смещение незаметно так как пределы интегрирования бесконечны, но для понимания алгоритма нахождения искомой суммы определение свертки менее подходящее. Потому я тоже избегал упоминания теоремы о свертке так как это требует пусть не значительной но замены переменных и дополнительных преобразований.
Да алгоритм как промежуточный результат для вычисления PT это использует, вычисление TT тоже имеет свое математическое название хоть и является частным случаем первого.
Но вместо известных математических определений подразумевающих выводы из индукции, и последующего дедуктивного применения я остановился в изложении только на первом, для того чтоб показать значения смещений и длин искомых массивов.
В публикации использовал часть теории связанной с полиномами так как опираясь на них строят функцию для определения позиции образца. Плюс удобно показать получаемые размеры, что может быть важно при оптимизации. При использовании свертки последнее получить сложнее.
Вот как выглядит попытка объяснения различий для варианта свертки, в действительности же сдвиги относятся к свойству преобразования, а не к свойствам самого изображения.
Именно из-за таких мелочей которые будучи смешаны в кучу дают «абракадабру» я и написал статью.
(*PT*)
PolyT = {1, 2, 3, 4, 5}; LT = Length[PolyT];
PolyP = {3, 2, 1}; LP = Length[PolyP];
PolyR = {}; LR = LT + LP - 1;
eT = Table[If[i > LT, 0, PolyT[[i]]], {i, 1, LR}]
eP = Table[If[i > LP, 0, PolyP[[i]]], {i, 1, LR}]
PolyR = InverseFourier[
Fourier[eT, FourierParameters -> {1, 1}]*
Conjugate[Fourier[eP, FourierParameters -> {1, 1}]]
, FourierParameters -> {1, 1}]
Результат:
{1, 2, 3, 4, 5, 0, 0}
{3, 2, 1, 0, 0, 0, 0}
{10., 16., 22., 22., 15., 1., 4.}
Но вместо известных математических определений подразумевающих выводы из индукции, и последующего дедуктивного применения я остановился в изложении только на первом, для того чтоб показать значения смещений и длин искомых массивов.