生成椭圆抛物面水平集功能

时间:2014-02-20 16:04:18

标签: matlab image-processing

我目前正致力于图像处理,并希望生成椭圆抛物面水平集功能

方程式如下:

P(x;y;x0;y0;z0;theta;ro) = xm^2 +ro*ym^2 + z0;
where,
xm = (x-x0)*cos(theta) - (y-y0)*sin(theta);
ym = (x-x0)*sin(theta) + (y-y0)*sin(theta);

我如何生成这种水平集?

我做的编程是这样的:

clc;clear all;close all;
x0 = 0;
y0 = 0;
z0 = 0;
theta = pi/4;
ro = 1;

tic
I = ones(128,128);
for i=1:128
    for j=1:128
        xm = (i-x0).*cos(theta) - (j-y0).*sin(theta);
        ym = (i-x0).*sin(theta) + (j-y0).*sin(theta);
        I(i,j) = xm^2 + ro.*(ym^2) + z0;
    end
end
toc

contour(I,'DisplayName','I');figure(gcf)

我得到的轮廓是这样的: enter image description here

困惑关于这是: - 我知道级别集是在级别集之外创建的,值应该大于 0 < / strong>且小于 0 在轮廓内,反之亦然。级别集的零级轮廓是值 0 的位置。

我查了一下:

>> min(I(:))

ans =

    2.0000

>> max(I(:))

ans =

   3.2768e+04

很明显,这不是一个水平集。

澄清以下几点 我的方程式错了吗? 2.我的代码错了吗?

任何建议都会有所帮助。

0 个答案:

没有答案