图像缩略图

泽尼克多项式

version 1.3.0.1 (6.84 KB) by 保罗·弗里克
泽尼克多项式和函数(单位圆上的正交基)。

80下载

更新2016年9月01日

视图版本历史

查看许可证

ZERNFUN。m和ZERNFUN2。m计算泽尼克函数Znm(r,)这些函数在单位圆上形成一个正交的基础,用于天文学、光学、验光学和眼科等学科,在一个圆形的域上表征函数和数据。ZERNPOL。m计算泽尼克多项式Znm(r),这是泽尼克函数的径向部分。
描述使用用于分析光学数据的Zernike函数的MATLAB摘要文章也可在文件交换中作为PDF的应用程序(使用LASIK手术数据)

在HTML处:

//www.tatmou.com/company/newsletters/articles/Analyzing-lasik-optical-data-using-zernike-functions.html.

引用作为

保罗弗里克(2021年)。泽尼克多项式(//www.tatmou.com/matlabcentral/fileexchange/7687-zernike-polynomials),Matlab中央文件交换。检索到

评论和评级(41

贾斯汀哈里森

Karthiga Mahalingam

你好,
上述技术文章(//www.tatmou.com/company/newsletters/articles/Analyzing-lasik-optical-data-using-zernike-functions.html.)已更新正确的数字和表格。
谢谢。

Karthiga Mahalingam

你好Chan-Wook,
你的担心是有道理的。问题似乎在已出版的通讯(//www.tatmou.com/company/newsletters/articles/Analyzing-lasik-optical-data-using-zernike-functions.html.),而不是用代码。
1.通讯中表2中的值被替换为正值和负值“m”,没有被规格化。
2.图3的模态号也被交换了,与作者正在讨论的示例并不完全对应。

Chan-Wook Baik

谢谢你支持这个例子,但我发现金宝app了以下几个问题:
(1)“表2.第一个十个Zernike径向函数及其共同名称。”在LASIK示例的HTML链接中,与维基百科相比,z的编号不正确(https://en.wikipedia.org/wiki/Zernike_polynomials)。
(2)图3”。图2所示的术前眼部数据的泽尼克系数谱“在捕捉图像精确复制时,模式数的顺序看起来是错误的。
我已经问了这些东西,我收到了参考编号:(案例:#03909269)[ref:_00di0ha1u._5003q1i7j50:ref]我正在等待你的回复。
请再次检查这些并发布一个新的黄色。

Jython Pan.

保罗·杜蒙

江你

李明

Raghav Narasimhan.

约瑟夫王

嗨,我也想知道哪里可以找到eyedata --joseph

嗨,保罗,

我想在角膜地形仪上做一个重建。在“用泽尼克函数分析LASIK光学数据”中使用的“眼数据”是来自地形学家本身的图像吗?
如果没有,那是什么,我可以在哪里找到它?

提前致谢!

Mathieu Gauvin

亲爱的弗里克博士,

我真的很喜欢阅读您的文件“分析LASIK光学数据使用Zernike函数”。了不起的工作!

我试图了解您的EyeData矩阵应该是如何以及如何绘制它的格式。你可能在这里使用比images的困难者?
眼数据只有一个m x n图像吗?我确实将Topo从您的榜样保存为JPEG,并裁剪轴以尝试复制您的示例,但我遇到了问题。在某处可用的原始数据和代码是否可用?谢谢!

蒂姆

在哪里可以在哪里找到“使用Zernike函数分析LASIK光学数据”的EyeDATA,到处都可以在线找到。帮助!

尤里卡海洋

尼古拉斯卡拉瓦尔

你好。我认为Zernfun的帮助有一个错字。它指出,“M的每个元素k必须是正整数,具有可能的值M(k)= -n(k)至+ n(k)”,这是一个矛盾。即使在该示例中之后,也使用负值。在检查代码后,我已到达的结论只是粘糊糊的帮助。我对吗?

另一方面,对ZERNPOL函数的帮助确实使用M(k)的严格正值。也许这就是问题的根源。

Anael

记录好!

Mathieu.

你好,

感谢您为社区提供这些文件!
但是,你检查过所创建的函数的正交性吗?
在我看来,那里有些不对劲。
我生成了2个polynoms,就像在文档中显示的那样:

z (idx) = zernfun (3 1 r (idx),θ(idx));
z2(idx)= zernfun(4,0,r(id(id x),theta(idx));

当我检查正交性时,只需这样做:

总和(sum(z(id x)。* z2(idx)))

结果不是0。

我在做什么错误或在这里有PB吗?

由于adavnce

Konstantin

@JUAN CARDENAS
地板n =(1 +√(1 + 8 * p)) / 2);
m = - p + n (n *。* (n + 1));

使用任何P的非常好的解决方案
我想你对m的定义缺少一个“-”符号(可以在画泽尼克多项式时看到)。

胡安卡登斯

谢谢保罗。
在zernfun2中对启用任何P order的更新,而不是:

n =装天花板(3 +√(9 + 8 * p)) / 2);
m = 2 * p - n。*(n + 2);

改变它:

地板n =(1 +√(1 + 8 * p)) / 2);
m = n-2 * p + n。*(n + 1);

该导弹

你好,

有人知道离散泽尼克变换(DZT)吗?
我很想实现它。

先感谢您

vic.

谢谢你的代码!我对由此代码生成的Zernike多项式的单位有一个问题,它是否在[波浪数]或[微米]中?

再次感谢!

Chauncey Graetzel.

在另一个程序中使用我的拟合术语时,我遇到了问题:相同的系数没有给出相同的表面。
我找到了原因:余弦和正弦项在zernfun中是反向的。M>0应该是cos,而M<0应该是sin。

我已经更正了,从第193行开始

如果任何(idx_pos)
z(:,idx_pos)= y(:,idx_pos)。* cos(theta * m(idx_pos)');
结尾
如果任何(idx_neg)
z(:,idx_neg)= y(:,idx_neg)。* sin(theta * -m(idx_neg)');
结尾

%注意正弦术语中所需的标志更改“-m”

鲍勃

非常伟大的功能!但是用“规范”作为标准的做法似乎是错误的。我已经改变:

zernfun.m

对于规格化多项式,第177行:
(:, j) = y: j *√((1 + (m (j) ~ = 0)) * (n (j) + 1) / pi);

%我必须替换:
如果m(j)== 0
Y(:,j)= y(:,j)* sqrt((n(j)+1));
别的
(:, j) = y: j *√(2 * (n (j) + 1));
结尾

elia

我仍然习惯于matlab。当我在没有任何修改的情况下运行zernfun.m.m.m.

???输入参数“n”未定义。
错误在==> zernfun 88
if(〜yous(size(n)== 1))||(〜任何(大小(m)== 1)))。

但是,当我初始化n,m,r和theta时,我收到此错误

???最大递归限制为500达到。使用set(0,'recursionlimit',n)
改变限制。请注意超出您可用的堆栈空间可以
崩溃Matlab和/或您的计算机。

错误==> meshgrid

有人有关于使Zernfun的工作有关吗?任何帮助将不胜感激。

杰夫

保罗,非常感谢这段代码。这是非常赞赏。

但是,我认为,你有一个错误你如何使Zernike多项式正常化。NOLL的纸张表明,对于M = 0的术语来说,归一化术语应该是(n + 1)** 0.5,并且对于m!= 0表示归一化术语应该是(2 *(n + 1))** 0.5。在vercine zernpol.m中,您将通过(2 *(n + 1))** 0.5,正常化所有术语(包括m = 0)** 0.5。

也许你已经解决了这个?我刚从这个网站上1-21-10下载了它。我正在寻找的文件的创作日期是11月13日,2006年11月13日下午12:56:48。

亚历克斯卡拉格

我有兴趣提取3D形状的3D Zernike描述符吗?你是否知道是否有任何MATLAB代码?

迈克尔黑色

看起来很有希望,但我有问题复制LASIK榜样......我复制了LASIK图像并编辑了LASIK部分 - 但是我从以下内容得到了一个大红色斑点 - 而不是一个体面的重建图像。..AnyBody知道什么是错的?
形象= imread(“zk_fig2_w.jpg”);
图(1);
i = im2double(图片);
显示亮度图像(图像);
%制作以极性坐标表示的网格坐标矩阵
L =大小(我,1);
X = 1:2 / (l - 1): 1;
(x, y) = meshgrid (x);
x = x(:);
y = y(:);
[θ,r] = cart2pol (x, y);
%计算n = 0-7的所需程度和订单值,包括
n = [];
M = [];
对于n = 0:7
n = [n * n *(1,n + 1)];
m = [m-n:2:n];
结尾
Is_in_circle = (r <= 1);
Z = zernfun (N M r (is_in_circle),θ(is_in_circle));
a = z \ i(is_in_circle);
使用Zernike系数重建图像
r =南(大小(I));
r(is_in_circle)= z * a;
%Rescale到0-255显示图像
图(2);
r = im2uint8(im2double(r));
imshow(r);

平苏

华housheng

Sadeq Sadeghian.

Sadegh Sadeghian

亚历克斯cht。

有价值的工作,谢谢。

迈克鲁

非常有帮助!如果包括Zernike环形多项式,这将是完美的

董刘

为什么这个错误?谢谢!

???错误:文件:e:\ zernike \ zernpol.m线:151列:25
"标识符"预期,"("找到。

微笑的费舍尔

琵琶奈马蒂

非常有帮助,快速,完整。评论中的例子也非常有帮助。

Ravi Bakaraju.

感谢你

侯xiaobing

非常感谢

sh金翔

谢谢

Udai Kiran.

这是我过去几周一直在找的函数

何塞福尔斯

MATLAB版本兼容性
创建R2006b
兼容任何释放
平台兼容性
窗户 macOS Linux.

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!