请问如何用MATLAB实现radon变换?

请问如何用MATLAB实现radon变换?,第1张

theta=0:180theta是radon变换的角度,可以自由设置,这里是从0°到180°一共181个角度,如果只求等分的60个角度的radon变换,可以改成theta=0:3:177;如果只求一个特殊角度的radon变换可以写成theta=x这里x就是希望的角度。

R = radon(I, theta)

R是存储radon变换的值,它是一个矩阵,列数是theta的个数,表示每一个角度生成一列,行数是被处理的矩阵(I)对角线的长度。

R一般用于inverse radon transform,程序如下:

I1=iradon(R,theta)

imshow(I1)

iradon命令有很多参数,具体使用方法请参考http://www.mathworks.com/access/helpdesk/help/toolbox/images/index.html?/access/helpdesk/help/toolbox/images/iradon.html&http://www.mathworks.com/cgi-bin/texis/webinator/search?pr=Whole_site&db=MSS&prox=page&rorder=750&rprox=750&rdfreq=500&rwfreq=500&rlead=250&sufs=0&order=r&whole=Whole_site&entire_flag=1&is_summary_on=1&ResultCount=10&query=inverse+radon+transform

:)

r=radon(im,30)%im是图像矩阵

解决方法如下:

Radon 变换是平行束对图像的线积分,根据各个角度得到的一系列投影值逆radon重建得到原始图像。

变换角度默认是逆时针,r=radon(im,30)得到的是一维数组。

平行束与X轴夹角为30度时,距原点不同距离的投影线(平行束)上对图像的线积分。[R,Xp] = RADON(...) XP对应平行束的位置。

Radon变换的本质是将原来的函数做了一个空间转换,即,将原来的XY平面内的点映射到AB平面上,那么原来在XY平面上的一条直线的所有的点在AB平面上都位于同一点。

记录AB平面上的点的积累厚度,便可知XY平面上的线的存在性。这便是大家所公认的Radon变换的实质所在。

在一个平面内沿与原点的距离为d,方向角为θ的直线对原函数f(x,y)做线积分,得到的像函数F(d,θ)就是函数f的Radon变换。这是二维的情况。简单来说,Radon变换就是求投影(projection)的理论方法。应用于CT中。

例子如下: :r=radon(im,30)%im是图像矩阵 解决方法如下: Radon 变换是平行束对图像的线积分,根据各个角度得到的一系列投影值逆radon重建得到原始图像。 变换角度默认是逆时针,r=radon(im,30)得到的是一维数组。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8098450.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存