MATLAB:Radon正变换的理解


前言

网上看了些有关Radon变换的介绍,结合自己看书和理解写下这篇blog,内容尽量做到最精简,欢迎阅读啊!


提示:以下是本篇文章正文内容,下面案例可供参考。

一、介绍

  Randon变换广泛应用于医学成像中,在X-CT成像中,为获得人体器官或组织的体层平面,X线束需要绕着体层平面的中心点进行平移和旋转,用数学语言描述那便是:对于人体内器官或组织的断层平面f(x,y),它在给定的坐标系XOY中,沿着某一个投影方向,对每一条投影线计算断层平面f(x,y)的先积分,就得到该射线上的投影之g(R,θ),其数学表达式如下:
g ( R , θ ) = ∫ − ∞ + ∞ ∫ − ∞ + ∞ f ( x , y ) δ ( x cos ⁡ θ + y sin ⁡ θ − R ) d x d y g(R,\theta )=\int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}f(x,y)\delta (x\cos\theta +y\sin\theta-R)dxdy g(R,θ)=++f(x,y)δ(xcosθ+ysinθR)dxdy

  说完正经的理论,现在说一下我的理解,结合图来理解更快一点搞明白,如下最左侧图所示,亮度集中在中央的正方形上,若将其投影在XOY坐标系的0度射线上,中图所示为一个等高的矩形,而若投影在一条45度的射线上时,最右侧图所示,则变成了一个等腰三角形,是不是很有意思。
Radon正变换
  我自己简单画了一下其投影的过程,见下面的第二幅图,画的不是特别精致,不过大家可以自己动手画画有助于理解。
简图示意

二、MATLAB实现

1.图1的matlab程序

  png读入后是三维的需要将其降至二维,而后使用radon函数,具体代码如下所示。

close all;clear all;clc;
I = imread("original_pic.png");
I = rgb2gray(I);
I = im2double(I);
[R,xp]=radon(I,[0,45]);
figure;
subplot(131);imshow(I);
subplot(132);plot(xp,R(:,1));
subplot(133);plot(xp,R(:,2));

2.多角度radon变换

close all;clear all;clc;
I = imread("original_pic.png");
I = rgb2gray(I);
I = im2double(I);
theta = 0:10:180;%0-180,每10度画一个
[R,xp] = radon(I,theta);
figure;
subplot(121);imshow(I);
subplot(122);imagesc(theta,xp,R);
colormap(hot);
colorbar;

多角度radon变换图
  根据第二幅图的右侧颜色蓝,可以看出0度时,颜色条很均匀,而45度时,中心区域强度远大于两侧的,这就对应上第一部分中的内容。

三、总结

  本篇主要是对radon变换的简要理解,文中内容及相关编程参考了清华大学出版社,杨丹,赵海滨,龙哲所编写的的《MATLAB图像处理实例详解》。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值