⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 curvature.m

📁 实现无边界主动轮廓的的很好的算法
💻 M
字号:
function K = CURVATURE(f,diff_scheme)
% CURVATURE computes curvature
% Author: Chunming Li, all rights reserved.
% Email: li_chunming@hotmail.com
% URL: http://www.engr.uconn.edu/~cmli/

epsilon=1e-10;

if strcmp(diff_scheme, 'fcb')  
    [fx,fy]=gradient(f);  % central difference
    fx_f = Dx_forward(f); % forward difference
    ax = fx_f./sqrt(fx_f.^2+ fy.^2+epsilon);
    axx = Dx_backward(ax); % backward difference
    fy_f = Dy_forward(f);
    ay = fy_f./sqrt(fx.^2 + fy_f.^2 + epsilon);
    ayy = Dy_backward(ay); 
    K = axx + ayy;

elseif strcmp(diff_scheme, 'fb')   % forward difference followed by a backward difference

    fx_f = Dx_forward(f);
    fy_f = Dy_forward(f);
    ax = fx_f./sqrt(fx_f.^2+ fy_f.^2+epsilon);
    ay = fy_f./sqrt(fx_f.^2 + fy_f.^2 + epsilon);
    axx = Dx_backward(ax);
    ayy = Dy_backward(ay);
    K = axx + ayy;
elseif strcmp(diff_scheme, 'bf')   % forward difference followed by a backward difference

    fx_f = Dx_backward(f);
    fy_f = Dy_backward(f);
    ax = fx_f./sqrt(fx_f.^2+ fy_f.^2+epsilon);
    ay = fy_f./sqrt(fx_f.^2 + fy_f.^2 + epsilon);
    axx = Dx_forward(ax);
    ayy = Dy_forward(ay);
    K = axx + ayy;
elseif strcmp(diff_scheme, 'cc')   % central difference followed by a central difference
    [fx, fy]= gradient(f); % central difference
    ax = fx./sqrt(fx.^2+ fy.^2+epsilon);
    ay = fy./sqrt(fx.^2 + fy.^2 + epsilon);
    [axx, axy] = gradient(ax); % central difference
    [ayx, ayy] = gradient(ay);
    K = axx + ayy;    
else
    disp('Wrong difference scheme: CURVATURE.m');
    return;    
end





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -