Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MATLAB.docx
Скачиваний:
25
Добавлен:
22.09.2019
Размер:
229.43 Кб
Скачать

14. Численные методы в среде matlab. Преобразования полиномов. Преобразование Фурье.

Полиномиальные преобразования (Polynomial).

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

Второй порядок полинома

Для полиномиальных преобразований второго порядка:

[u v]=[1 x y x*y x^2 y^2]*Tinv .

u и v являются полиномами второго порядка от x и y. Каждый полином второго порядка имеет шесть термов. При определении всех коэффициентов размерность Tinv равна 62.

t_poly_ord2=cp2tform(input_points, base_points, 'polynomial') .

Коэффициенты инверсных преобразований хранятся в t_poly_ord2.tdata. Для минимальных 6 пар контрольных точек необходимо определить 12 неизвестных коэффициентов.

Третий порядок полинома

Для полиномиальных преобразований третьего порядка:

[u v]=[1 x y x*y x^2 y^2 y*x^2 x*y^2 x^3 y^3]*Tinv .

u и v являются полиномами третьего порядка от x и y. Каждый полином третьего порядка имеет десять термов. При определении всех коэффициентов размерность Tinv равна 102.

t_poly_ord3=cp2tform(input_points, base_points, 'polynomial',3) .

Коэффициенты инверсных преобразований хранятся в t_poly_ord3.tdata. Для минимальных 10 пар контрольных точек необходимо определить 20 неизвестных коэффициентов.

Четвертый порядок полинома

Для полиномиальных преобразований четвертого порядка:

[u v]=[1 x y x*y x^2 y^2 y*x^2 x*y^2 x^3 y^3]*Tinv .

u и v являются полиномами четвертого порядка от x и y. Каждый полином четвертого порядка имеет пятнадцать термов. При определении всех коэффициентов размерность Tinv равна 152.

t_poly_ord4=cp2tform(input_points, base_points, 'polynomial',4) .

Коэффициенты инверсных преобразований хранятся в t_poly_ord4.tdata. Для минимальных 15 пар контрольных точек необходимо определить 30 неизвестных коэффициентов.

Кусочно–линейные преобразования.

При кусочно–линейных преобразованиях линейные аффинные преобразования применяются отдельно к каждому участку изображения [1]. Для этого необходимо:

1. Найти триангуляционную свертку для основных контрольных точек.

2. Использовать три вертикали для каждой триангуляции и вывода аффинных преобразований основных исходных координат.

Локальное взвешенное средние.

Для каждой контрольной точки в in base_points необходимо:

1.Найти N близких контрольных точек.

2.Использовать эти N точек и соответствующие им точки в input_points для вывода полинома второго порядка.

3.Вычислить радиус воздействия этого полинома как расстояние от центра контрольной точки к самой дальней точке, использовав выведенный полином (используя base_points) [2].

Пример:

I=checkerboard;

J=imrotate(I, 30);

base_points=[11 11; 41 71];

input_points=[14 44; 70 81];

cpselect(J, I, input_points, base_points);

t=cp2tform(input_points, base_points, 'linear conformal') .

Для обратного получения углов и масштабов:

ss=t.tdata.Tinv(2,1); %ss=scale*sin(angle);

sc=t.tdata.Tinv(1,1); % sc=scale*cos(angle);

angle=atan2(ss,sc)*180/pi;

scale=sqrt(ss*ss+sc*sc) .

Одномерное дискретное прямое и обратное преобразования Фурье

Синтаксис:

Y = fft(X) X = ifft(Y)

Y = fft(X, n) X = ifft(Y, n)

Описание:

Дискретные прямое и обратное преобразования Фурье для одномерного массива x длины N определяются следующим образом:

Функция Y = fft(X) вычисляет для массива данных X дискретное преобразование Фурье, используя FFT-алгоритм быстрого Фурье-преобразования. Если массив X двумерный, вычисляется дискретное преобразование каждого столбца.

Функция Y = fft(X, n) вычисляет n-точечное дискретное преобразование Фурье. Если length(X) < n, то недостающие строки массива X заполняются нулями; если length(X) > n, то лишние строки удаляются.

Функция X = ifft(Y) вычисляет обратное преобразование Фурье для массива Y.

Функция X = ifft(Y, n) вычисляет n-точечное обратное преобразование Фурье для массива Y.

Примеры:

Основное назначение преобразования Фурье - выделить частоты регулярных составляющих сигнала, зашумленного помехами. Рассмотрим данные, поступающие с частотой 1000 Гц. Сформируем сигнал, содержащий регулярные составляющие с частотами 50 Гц и 120 Гц и случайную аддитивную компоненту с нулевым средним.

t = 0:0.001:0.6;

x = sin(2 * pi * 50 * t) + sin(2 * pi * 120 * t);

y = x + 2 * randn(size(t));

plot(y(1:50)), grid

На рис. а показан этот сигнал. Глядя на него, трудно сказать, каковы частоты его регулярных составляющих. Реализуя одномерное преобразование Фурье этого сигнала на основе 512 точек и построив график спектральной плотности (рис. б), можно выделить две частоты, на которых амплитуда спектра максимальна. Это частоты 120 и 50 Гц.

Y = fft(y, 512);

Pyy = Y.*conj(Y)/512;

f = 1000 * (0:255)/512;

figure(2), plot(f, Pyy(1:256)), grid

а) б)

Алгоритм:

Если длина последовательности входных данных является степенью числа 2, то применяется алгоритм быстрого преобразования Фурье с основанием 2, имеющий максимальную производительность. Этот алгоритм оптимизирован для работы с действительными данными; если данные комплексные, то реализуется комплексное преобразование Фурье. Эффективность первого на 40 % выше второго.

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

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

Если сравнивать эффективность вычислений, то преобразование Фурье с основанием 2 действительной последовательности из 4096 точек занимает 2.1 с, а комплексной - 3.7 с. Обычное преобразование Фурье для последовательности из 4096 точек занимает 7 с, а для последовательности из 4098 точек - 58 с.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]