• 图像分析之曲率滤波(困惑篇)


    本文与其说是介绍曲率滤波,倒不如说是叙述在阅读曲率滤波论文和代码时的一些困惑。主要是代码与论文无法对应的困惑,如果你能解决这些困惑,欢迎指教解惑。本文中所述的曲率滤波来自[2015 龚元浩]一文中第六章的内容。

    更新记录

    本文持续更新!如文中有错误,或你对本文有疑问或建议,欢迎留言或发邮件至quarrying#qq.com!

    2016年01月02日,发布博文。

    参考

    [2015 龚元浩] Spectrally regularized surfaces

    https://github.com/YuanhaoGong/CurvatureFilter

    https://en.wikipedia.org/wiki/Gaussian_curvature

    https://en.wikipedia.org/wiki/Developable_surface

    相关代码

     平均曲率滤波关键代码段

    function res =
     proj_MC(im,BT,BT_pre,BT_nex,BT_lef,BT_rig,BT_lu,BT_ld,BT_ru,BT_rd,step)
    res = im; BT8 = 8*im(BT); dist = zeros(size(BT_pre,1),4,'single');
    tmp1 = 2.5*(im(BT_pre) + im(BT_nex)) - BT8;
    tmp2 = 2.5*(im(BT_lef) + im(BT_rig)) - BT8;
    dist(:,1) = tmp1  + 5*im(BT_rig) - im(BT_ru) - im(BT_rd);
    dist(:,2) = tmp1  + 5*im(BT_lef) - im(BT_lu) - im(BT_ld);
    dist(:,3) = tmp2  + 5*im(BT_pre) - im(BT_lu) - im(BT_ru);
    dist(:,4) = tmp2  + 5*im(BT_nex) - im(BT_ld) - im(BT_rd);
    tmp = abs(dist); [v,ind] = min(tmp,[],2);
    tmp = sub2ind(size(dist),(1:size(dist,1))',ind);
    tmp = dist(tmp); res(BT) = res(BT) + step/8*tmp;
    

    高斯曲率滤波关键代码段

    function res =
     proj_GC(im,BT,BT_pre,BT_nex,BT_lef,BT_rig,BT_lu,BT_ld,BT_ru,BT_rd,step)
    res = im; BT2 = 2*im(BT); BT3 = 3*im(BT);
    dist = zeros(size(BT_pre,1),8,'single');
    dist(:,1) = im(BT_pre) + im(BT_nex) - BT2; 
    dist(:,2) = im(BT_lef) + im(BT_rig) - BT2;
    dist(:,3) = im(BT_lu) + im(BT_rd) - BT2; 
    dist(:,4) = im(BT_ld) + im(BT_ru) - BT2;
    dist(:,5) = im(BT_pre) + im(BT_lef) + im(BT_lu) - BT3; 
    dist(:,6) = im(BT_pre) + im(BT_rig) + im(BT_ru) - BT3;
    dist(:,7) = im(BT_nex) + im(BT_lef) + im(BT_ld) - BT3; 
    dist(:,8) = im(BT_nex) + im(BT_rig) + im(BT_rd) - BT3;
    dist(:,1:4) = dist(:,1:4)/2; 
    dist(:,5:8) = dist(:,5:8)/3; %% minimal projection
    tmp = abs(dist); [v,ind] = min(tmp,[],2);
    tmp = sub2ind(size(dist),(1:size(dist,1))',ind);
    tmp = dist(tmp); res(BT) = res(BT) + step*tmp;
    

    正文

  • 相关阅读:
    前端常用设计模式和工作中应用场景思考
    webpack从零开始打造react项目(更新中...)
    操作系统-进程
    go语言web框架-如何使用gin教程+react实现web项目
    JavaScript逗号运算符的用法
    react的生命周期和使用
    在Vue项目中使用wangEditor
    TypeScript实现axios
    SpringBoot整合邮件发送(thymeleaf和freemarker)
    SpringBoot整合RabbitMQ
  • 原文地址:https://www.cnblogs.com/quarryman/p/curvature_filter.html
Copyright © 2020-2023  润新知