PDA

Просмотр полной версии : Преобразование Радона


Shomurodov Shohruh
22.12.2011, 20:55
Уважаемые математики! Собрался заняться преобразованием Радона некой геометрической фигуры в Matlabe. Т.к. пользуюсь этой программой впервые, то возникли много вопросов. Прошу помощи тех, кто разбирается в ней.
И так есть задание:
Произвести преобразование Радона фигуры
https://img.uforum.uz/images/vgmbzxn8077552.png, (области между треугольником и внутренним прямоугольником имеют отличную от нуля значения) внутри области [30:30].
В скрипте описанным здесь (http://rrc.dgu.ru/res/matlab/imageprocess/book3/17/radon.html) на вход дается прямоугольная фигура, а как быть для сложных фигур не знаю. Можно ли внутри массива данных нарисовать эту фигуру, если да, то как, т.к. гугл не помог. Пока сделал топорно, вручную изменил цифры в массиве, но думаю, есть и получше решение.

Nadir Zaitov
23.12.2011, 11:00
Shomurodov Shohruh, наверное Шухрат Исмаилов знает как с этим работать. Я не знаю к сожалению.

Shuhrat Ismailov
23.12.2011, 19:40
Shomurodov Shohruh, наверное Шухрат Исмаилов знает как с этим работать. Я не знаю к сожалению.
Общую теорию интегральных преобразований знаю, но в Матлабе не делал никогда, так там интегральное преобразование понимается как работа над изображениями.

Shomurodov Shohruh
23.12.2011, 19:42
Общую теорию знаю, но в Матлабе не делал никогда

В принципе функция radon(i) делает это преобразование, проблема в размещении фигуры внутри массива. Какими методами можно это сделать?

Shuhrat Ismailov
23.12.2011, 20:13
Общую теорию знаю, но в Матлабе не делал никогда

В принципе функция radon(i) делает это преобразование, проблема в размещении фигуры внутри массива. Какими методами можно это сделать?
По-моемому у вас затруднения в формированиии изображения, а не в самом преобразовании.
У меня возникли вопросы.
1) Ваша фигура и есть " область между треугольником и внутренним прямоугольником" ? (то есть состоит из трех треугольничков?)
2) Угол в преобразовании фиксирован или их нужно все пересчитывать (от 0 до 179°)

Shomurodov Shohruh
24.12.2011, 07:03
По-моемому у вас затруднения в формированиии изображения, а не в самом преобразовании.
У меня возникли вопросы.
1) Ваша фигура и есть " область между треугольником и внутренним прямоугольником" ? (то есть состоит из трех треугольничков?)
2) Угол в преобразовании фиксирован или их нужно все пересчитывать (от 0 до 179°)

Да, проблемы именно с изображением.
Ответы:
1. Да, область внутри треугольника и внутреннего прямоугольника имеют ненулевые значение, тогда как вся остальная часть заполнена нулями.
2. Нужно все пересчитать, по одному углу я на экзеле посчитал бы.

Shuhrat Ismailov
24.12.2011, 11:17
Да, проблемы именно с изображением.
Ответы: 1. Да, область внутри треугольника и внутреннего прямоугольника имеют ненулевые значение, тогда как вся остальная часть заполнена нулями.
Задача приобретает другой смысл, не зависящий от преобразования Радона и поэтому Прошу поменять тему на более информативное "Формирование изображений на МатЛаб.
Теперь по существу.
Я так понял, что внутренний прямоугольник не важен, и можно рассматривать только треугольник?
Если внутренний прямугольник важен, то правильно ли я понял, что рассматривается следующее
"область внутри треугольника закрашена , область внутреннего прямоугольника - полутон , тогда как вся остальная часть не закрашена?
(пока пользуюсь красочной терминологией, к числам прейдем потом.
Шохрух, я думаю, что нужно в матлабе вместо операторов, описывающих прямоугольники, применять другие операторы, а не менять числа, как вы сделали.

Вы очень правильно делаете, что работаете над изображениями в Матлаб. В 2004 году в Шанхайском технологическом институте я видел какие китайцы фокусы над изображениями вытворяют (Акаемов отдыхает). Присмотрелся, оказывается , Матлаб рулит.

Nadir Zaitov
24.12.2011, 12:34
Shomurodov Shohruh, одно замечание касательно Преобразования Радона, вспомните, что оно аддитивно. Т.е. F(a+b)=F(a)+F(b).

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

Shuhrat Ismailov
24.12.2011, 15:23
Shomurodov Shohruh, одно замечание касательно Преобразования Радона, вспомните, что оно аддитивно. Т.е. F(a+b)=F(a)+F(b).

Если вы область выложите из прямоугольников (приблизите очень узкими прямоугольниками, шириной в один пиксель), то преобразование Радона исходной области можно будет рассматривать как сумму преобразований радона от прямоугольников.
Я думаю, что на матлабе можно сформировать изображение непосредственно путем загрузки файла изображения. А дальше он будет работать по-пиксельно.

Shomurodov Shohruh
24.12.2011, 17:59
Если внутренний прямугольник важен, то правильно ли я понял, что рассматривается следующее
"область внутри треугольника закрашена , область внутреннего прямоугольника - полутон , тогда как вся остальная часть не закрашена?

Нет, внутренний прямоугольник не важен, но можно и попробовать с полутоном.

Я думаю, что на матлабе можно сформировать изображение непосредственно путем загрузки файла изображения. А дальше он будет работать по-пиксельно.

Я тоже так думаю, но как сделать не знаю :)


Вы очень правильно делаете, что работаете над изображениями в Матлаб. В 2004 году в Шанхайском технологическом институте я видел какие китайцы фокусы над изображениями вытворяют (Акаемов отдыхает). Присмотрелся, оказывается , Матлаб рулит.

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

Shuhrat Ismailov
24.12.2011, 18:51
Я думаю, что изучив любой мануал по цифровой обработке изображений в среде MATLAB вы найдете сведения о загрузке изображений с целью формирования любой области I.
Я нашел следующий оператор IMREAD в указанном Вами справочнике:
http://rrc.dgu.ru/res/matlab/imageprocess/book3/3/imread.html
и здесь:
http://matlab.exponenta.ru/imageprocess/book5/10_0.php

Думаю, что можно написать код так (если что-либо напутал, поправьте, я не работал с компьютерными системами символьной алгебры):
% Пример демонстрирует преобразование Радона изображения из файла imgfile.tif.
% Формирование изображения.
I = imread('imgfile.tif')
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, []);


Удачи!