Всего на сайте:
183 тыс. 477 статей

Главная | Информатика

Алгоритм преобразования Радона В задачах цифровой обработки изображений  Просмотрен 79

Учреждение образования

«БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАТИКИ И РАДИОЭЛЕКТРОННИКИ»

Конкурс научных работ студентов Республики Беларусь

По естественным и техническим наукам

Алгоритм преобразования Радона

В задачах цифровой обработки изображений

 

 

Автор: Павлёнок Наталья Александровна

Группа 250502 , курс 4

Факультет компьютерных систем и сетей

Научный руководитель: Садыхов Рауф Хосровович

доктор технических наук, профессор

кафедра ЭВМ

Минск 2006

 

Введение

 

 

В 1917 году математик И. Радон [1] предложил метод восстановления (реконструкции) многомерных функций по их интегральным характеристикам, т.е. метод решения обратной задачи интегральной геометрии.

Широкое применение нашёл этот метод в компьютерной томографии [2]:

При просвечивании объекта интенсивность луча на выходе равна интегралу функции распределения плотности вещества вдоль траектории луча. Таким образом, регистрируемое излучение (радоновский образ или проекция), вычисленное под различными углами, позволяет посредством преобразования Радона восстановить изображение поперечного сечения объекта.

Другая широчайшая область применения преобразования Радона и различных его модификаций – цифровая обработка изображений, а именно определение параметров различных кривых и их идентификация, будь то простейшая прямая линия, рукописный шрифт или фотография лица человека.

 

Общие сведения о преобразовании Радона, его свойства и возможности реализации приведены в [2].

 

 

1. Линейное преобразование Радона

 

Преобразование Радона R (k,b) непрерывной функции f (x,y) вычисляется путём интегрирования (сложения) значений f вдоль наклонной линии, как показано на рисунке 1:

 

  
 
 

 

 

 

Рисунок 1. Линейное преобразование Радона

 

 

Можно записать:

 

  
 
 

 

(1)

 

 

Или при помощи δ-функции Дирака:

 

  
 
 

 

(2)

 

 

Необходимо отметить, что преобразование (1) или (k,b)-преобразование обладает некоторыми свойствами, очень важными для работы с изображениями, такими как свойство линейности (3), сдвига (4), масштабирования (5).

Свойство линейности можно сформулировать следующим образом: «Преобразование Радона взвешенной суммы функций равно взвешенной сумме преобразований каждой функции»:

(3)

Свойства (4) и (5) (сдвиг и масштабирование) показывают, как вычисляется (k,b)-преобразование при изменении аргументов интегрируемой функции.

 

(4)

 

  
 
 

 

(5)

 

 

Рассмотрим несколько элементарных примеров:

 

Любую точку можно представить в виде произведения 2-х δ-функций:

(6)

Тогда её преобразование Радона будет иметь вид:

 

  
 
 

 

(7)

 

 

Пользуясь свойством сдвига, получим:

 

  
 
 

 

(8)

 

 

Преобразование Радона в этом случае:

 

  
 
 

 

(9)

 

 

Таким образом, преобразование Радона точки имеет вид прямой (рисунок 2).

 

  
 
 

 

 

Рисунок 2. Преобразование отдельной точки.

 

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

 

Соответственно, для прямой линии, заданной уравнением y=kx+b получим:

 

  
 
 

 

(10)

 

 

Преобразование Радона в этом случае:

 

  
 
 

 

(11)

 

 

 

  
 
 

 

 

 

Рисунок 3 . Преобразование прямой линии.

 

 

 

2. Дискретное преобразование Радона.

 

Для вычисления на ЭВМ необходимо провести дискретизацию. Самый простой способ – линейная выборка значений х и у:

 

 

  
 
 

 

(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

Предыдущая статья:Пожелания родителям будущего первоклассника Следующая статья:Нормальное преобразование Радона.
page speed (0.1105 sec, direct)