Функции Image Toolbox / radon.php
.htmСписок функций Image Processing Toolbox. Описание функции RADON Семинары Обучение Лицензирование Разработка Подписка Форум Регистрация Matlab Toolboxes Simulink Blocksets Femlab Полезное Вход Обработка сигналов и изображений\image Processing ToolboxСписок функций Image Processing Toolbox: Преобразование Радона
В оглавление \ К следующему разделу \ К предыдущему разделу
RADON Прямое преобразование Радона Синтаксис:
R=radon(l, theta)
R=radon(l, theta, n)
[R, xp]=radon(...)
Описание:
Функция R=radon(I, theta) выполняет преобразование Радона полутонового изображения I и помещает результат в матрицу проекций R. Преобразование Радона представляет собой вычисление проекций изображения на оси, задаваемые углами в градусах относительно горизонтали против часовой стрелки. Эти углы передаются в параметре theta. Если theta - скаляр, то R является вектор-столбцом, содержащим преобразование Радона для угла theta. Если theta - вектор, то R представляет собой матрицу, в которой каждый столбец является преобразованием Радона для одного из углов, содержащихся в векторе theta. Если при вызове функции параметр theta опущен, то в theta записываются значения углов от 0 до 179 с шагом в 1°.
Функция R=radon(I, theta, n) выполняет преобразование Радона полутонового изображения I. Значения каждой проекции вычисляются в n точках, и матрица R имеет n строк. Если при вызове функции параметр n опущен, то он устанавливается равным
2*ceil(norm(size(I) - floor((size(I) - 1)/2) - 1)) + 3.
Если дополнительно определить выходной параметр xp: [R, xp]=radon(...), то в него помещаются значения координат, в которых вычислялись значения проекции. Значения в k-й строке R соответствуют координате xp(k).
Матрица проекций R может рассматриваться как полутоновое или палитровое изображение и имеет формат представления данных double.
Алгоритм:
Функция radon вычисляет проекции изображения вдоль определенных направлений. Проекция двумерной функции f(x, у) на ось х' представляет собой линейный интеграл [1]:
,
где оси х' и у' задаются поворотом на угол против часовой стрелки:
Исходное полутоновое изображение I рассматривается как двумерная функция. Начало координат в системе х'у' соответствует центральному пикселу изображения I в пиксельной системе координат. Центральный пиксел I можно определить как floor((size(I) + l)/2).
Пример:
Рассмотрим, каким образом в преобразовании Радона вычисляются проекции. Для этого сформируем небольшое тестовое изображение, состоящее из трех прямоугольников различной яркости (рис. 1, а). Проекции данного изображения на ось X, на ось под углом в 45° и на ось Y приведены соответственно на рис. 1, б, в, г. На рис. 1, д в виде полутонового изображения показана матрица проекций.
% Пример демонстрирует преобразование Радона.
% Формирование изображения.
I=zeros(100, 100);
I(20:80,20:80)=0.4;
I(30:70,45:55)=0.6;
I(45:55,45:55)=1;
imshow(I);
% Прямое преобразование Радона.
[R, xp]=radon(I, 0:179);
% Вывод на экран проекций на оси X, Y и
% под углом в 45°.
figure, plot(xp,R(:,1));
figure, plot(xp,R(:,46));
figure, plot(xp,R(:,91));
% Вывод на экран матрицы проекций.
iptsetpref(‘ImShowAxesVisible', 'on');
figure, imshow(0:179, xp, R, []);
а)
б)
в)
г)
д) Рис.1.
Сопутствующие функции: IRADON, PHANTOM.
Ссылки:
1. Павлидис Т. Алгоритмы машинной графики и обработки изображений. М.: Радио и связь, 1986.
В оглавление \ К следующему разделу \ К предыдущему разделу
I Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
II Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2004 г.) На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro E-mail: matlab@exponenta.ru Информация на сайте была обновлена 14.05.05 Copyright 2001-2005 SoftLine Co
Наши баннеры hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=58396&im=33&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("") >