Для вычисления на ЭВМ необходимо провести дискретизацию. Самый простой способ – линейная выборка значений х и у:
(12)
Тогда преобразование Радона аппроксимируется простым суммированием:
(13)
Поскольку y – целое число, возникает проблема интерполяции значений y:
(14)
Два самых простых подхода – интерполяция ближайшего соседства и линейная интерполяция:
Реализация алгоритма
Переменной х назначаются дискретные значения из рассматриваемого интервала. Затем вычисляется соответствующее значение переменной у.
В случае интерполяции ближайшего соседства значение y округляется до ближайшего целого. Вычислительная сложность алгоритма в этом случае будет порядка 0(Т,Н,М). где Т, Н и М количество отсчётов k, x и b соответственно. Также будет иметь место погрешность округления (см. рисунок 4).
При линейной интерполяции между двумя соседними отсчётами функции погрешность вычислений будет меньше при той же вычислительной сложности алгоритма (см. рисунок 5).
Рисунок 4. Вычисление преобразования Радона прямой с интерполяцией ближайшего соседства.
Рисунок 5. Вычисление преобразования Радона прямой с линейной интерполяцией.
Далее приводятся тексты соответствующих функций для MatLab
//Интерполяция ближайшего соседства
P = tan(-pi*89/180:pi/180:pi*89/180);
R = length(P);
TAU = -N/2:N/2;
T = length(TAU);
result = zeros(T, R);
for th = 1:T
for p = 1:R
for x = -T:T
y = x*P(p) + TAU(th);
yy = T-round(y);
xx = T+x;
if (xx>0) && (xx<=N) && (yy>0) && (yy<=N)
result(th, p) = result(th, p) + IMG(xx, yy);
end
end
end
end
//Линейная интерполяция
TAU = -N/2:N/2;
T = length(TAU);
P = tan(-pi*89/180:pi/180:pi*89/180);
R = length(P);
result = zeros(T, R);
for p = 1:R
for th = 1:T
for x = -T:T
xx = T+x;
y = x*P(p) + TAU(th);
y1 = floor(y);
w = y - y1;
yy1 = T - y1;
yy2 = T - (y1+1);
if (xx>0) && (xx<=N) && (yy2>0) && (yy1<=N)
result(th, p) = result(th, p) + IMG(xx, yy1)*(1-w) + IMG(xx, yy2)*w;
end
end
end
end
Знаете ли Вы, что имитационное моделирование, simulation - это распространенная разновидность аналогового моделирования, реализуемого с помощью набора математических инструментальных средств, специальных имитирующих компьютерных программ и технологий программирования, позволяющих посредством процессов-аналогов провести целенаправленное исследование структуры и функций реального сложного процесса в памяти компьютера в режиме "имитации", выполнить оптимизацию некоторых его параметров.