Radon Transform推导Matlab,寻找合理的F(x,y)
Radon Transform derivation Matlab, finding reasonable F(x,y)
对于大学的一个项目,我正在处理指静脉图像上的几个 "Quality Assessement" 指标。
现在我尝试实现一个使用 Radon 变换的度量,但我在 Matlab 中执行此操作时遇到了困难。
我的问题如下:
我得到了以下氡变换公式。在第一步中,我在 Matlab 中使用了内置的,但是为了进一步实现度量,我需要推导曲线的曲率。
delta 是狄拉克-delta 函数。
推导:
所以我的目的是用公式自己计算Radon变换,但我的问题是F(x,y)是位于(x,y)的像素的灰度值。所以我需要一个函数 F(x,y) 来给出像素的灰度值,我可以输入该值来计算导数和二重积分。
如何获得这样的功能?或者我用我得到的像素值做了某种 "Curve Fitting" 函数?
提前致谢。
据我了解你的问题,你可以做两件事:
用数值计算 Radon 变换的导数(如 Ander Biguri 在上面的评论中所建议的)。如果你仔细计算 Radon 变换,它将是一个带限函数,使得导数的计算成为可能。有关如何执行带限变换的一些想法,请参阅本文:
"The generalized Radon transform: sampling, accuracy and memory considerations" (PDF).
计算图像的数值导数,然后对这些导数进行采样以计算您的 C 函数。也就是说,您计算 dF/dx、dF/dy、d^2F/dx^2 以及您需要作为图像的任何导数。如果您需要更高的精度,可以对这些导数进行插值。
IMO 计算离散图像导数的最佳方法是通过 Gaussian derivatives. Note that this applies to both solutions above. For example dF/dx (Fx
) can be computed by (see here for more details):
h = fspecial('gaussian',[1,2*cutoff+1],sigma);
dh = h .* (-cutoff:cutoff) / (-sigma^2);
Fx = conv2(dh,h,F,'same');
PS:抱歉所有的自我引用,但我过去在这些主题上做了很多工作。 :)
对于大学的一个项目,我正在处理指静脉图像上的几个 "Quality Assessement" 指标。 现在我尝试实现一个使用 Radon 变换的度量,但我在 Matlab 中执行此操作时遇到了困难。
我的问题如下:
我得到了以下氡变换公式。在第一步中,我在 Matlab 中使用了内置的,但是为了进一步实现度量,我需要推导曲线的曲率。
delta 是狄拉克-delta 函数。
推导:
所以我的目的是用公式自己计算Radon变换,但我的问题是F(x,y)是位于(x,y)的像素的灰度值。所以我需要一个函数 F(x,y) 来给出像素的灰度值,我可以输入该值来计算导数和二重积分。
如何获得这样的功能?或者我用我得到的像素值做了某种 "Curve Fitting" 函数?
提前致谢。
据我了解你的问题,你可以做两件事:
用数值计算 Radon 变换的导数(如 Ander Biguri 在上面的评论中所建议的)。如果你仔细计算 Radon 变换,它将是一个带限函数,使得导数的计算成为可能。有关如何执行带限变换的一些想法,请参阅本文: "The generalized Radon transform: sampling, accuracy and memory considerations" (PDF).
计算图像的数值导数,然后对这些导数进行采样以计算您的 C 函数。也就是说,您计算 dF/dx、dF/dy、d^2F/dx^2 以及您需要作为图像的任何导数。如果您需要更高的精度,可以对这些导数进行插值。
IMO 计算离散图像导数的最佳方法是通过 Gaussian derivatives. Note that this applies to both solutions above. For example dF/dx (Fx
) can be computed by (see here for more details):
h = fspecial('gaussian',[1,2*cutoff+1],sigma);
dh = h .* (-cutoff:cutoff) / (-sigma^2);
Fx = conv2(dh,h,F,'same');
PS:抱歉所有的自我引用,但我过去在这些主题上做了很多工作。 :)