图片缩略图

工具箱快速行进

version 1.2.0.0 (5.8 MB) by 加布里埃尔Peyre
用于在2D和3D中计算快速行进算法的工具箱。
4.0
65年评级

53下载

更新2009年6月27日

视图版本历史

查看许可协议

Sethian(1996)提出的Fast Marching算法是一种能够捕捉Eikonal方程|grad(D)|=P的黏性解的数值算法。关卡集{x \ F(x)=t}可以看作以速度P(x)前进的前沿。

得到的函数D是一个距离函数,如果速度P是恒定的,可以看作是到一组起点的距离函数。

快速行进算法与在图上寻找最短路径的Dijkstra算法非常相似。使用距离函数D的梯度下降,可以提取出在各种设置下的最短路径(测地线)的良好近似(对于P常数的欧几里得,以及P变化的加权黎曼流形)。

关于Fast Marching算法的主要参考是这本书
计算几何、流体力学、计算机视觉和材料科学中的水平集方法和快速行进方法
J.A. Sethian,剑桥大学出版社,1999
剑桥应用和计算数学专论

您可以在《Fast Marching in 3D》和《Fast Marching in 3D》中找到一些应用程序
三维图像最小路径快速提取及其在虚拟内窥镜中的应用。
t.d. deschamps和L.D. Cohen。
2000年9月。出现在医学图像分析中。

函数'perform_fast_marching_2d', 'perform_fast_marching_3d'和'perform_fast_marching_mesh'从一组起始点计算距离函数。要提取这些起始点和结束点之间的测地线,可以使用'extract_path_2d'和'extract_path_3d'。

主要的计算是在mex文件中完成的,所以它非常快(使用c++堆结构)。给出了Windows的预编译版本(.dll)。

引用作为

加布里埃尔Peyre(2021)。工具箱快速行进(//www.tatmou.com/matlabcentral/fileexchange/6110-toolbox-fast-marching), MATLAB中央文件交换。检索

意见及评分(99

DS

除了注释第7和第8行之外,我还注释了第3行,以便成功编译'compile_mex '。m'在Linux Fedora上。例如“Fast Marching on 3D mesh”,运行时间超过10分钟,但仍然没有完成,这是常见的吗?提前谢谢。

弗朗索瓦Janod

这似乎很棒,但使用同质媒体进行测试时,我甚至无法获得围绕源的正确结果。沿着网格线可以,但对角线不行。我不能得到根号2的比值,而是:
1.7071 1.0000 1.7071 2.5453 3.4422
1.0000 0 1.0000 2.0000 3.0000
1.7071 1.0000 1.7071 2.5453 3.4422
...
我怀疑这是由于源代码的错误初始化(??)

亚历山大可能

有用的提示-如下所示-编辑compile_mex。使用:

墨西哥人-compatibleArrayDims

:-)

裁判://www.tatmou.com/help/matlab/apiref/mwsize.html

保罗•张

为了让mex高兴,不得不用mwSize替换一些int类型。
还有,缺少"mex/各向异性-fm"文件夹。
否则工作。

Dimitrie库恩

伟大的工作!谢谢分享!

sagarika拉博拉

Kerim Khemraev

Kerim Khemraev

迈克尔·罗伯茨

我在3D代码中遇到了很多问题,但我通过添加内容解决了这个问题

int nrhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]

perform_front_propagation_3d ();

到perform_front_propagation_3d.cpp文件的末尾。然后重新编译

墨西哥人perform_front_propagation_3d.cpp fheap / fib.cpp

现在我可以很好地计算测地线距离了。

曼迪大厅

请解决!有很多文件丢失,包括:perform_front_propagation_mesh, L2_distance

托马斯Noga

如果其他人有类似的问题,这里有一个潜在的解决方案-你需要添加一个选项"- compatiblearraydimms "到mex命令,例如:

墨西哥人filename.cpp -compatibleArrayDims

托马斯Noga

运行compile_mex时出现以下错误(使用MinGW64编译器):

错误:不能将int*转换为const size_t*{或const long
long unsigned int*}' for argument '2' to 'mxArray*
mxCreateNumericArray_730(size_t, const size_t*, mxClassID,
mxComplexity) '
plhs[2] = mxCreateNumericArray(3, dims, mxDOUBLE_CLASS,
mxREAL);

Perform_front_propagation_2d.cpp和perform_circular_front_propagation_2d.cpp工作正常,只有perform_front_propagation_3d.cpp会导致问题

谁能帮忙吗?

harnoorsaini

无法编译,一些文件丢失

Damian凯涅维斯基

凯文Gobron

方跑

谢谢分享!我找到“perform_front_propagation_mesh.”mexw64" MEX函数从"分割"程序似乎是一个导致MATLAB崩溃。的帮助!

hsdg vfra

谢谢你分享一个看起来很棒的工具箱。虽然我不打算使用" perform_fast_marching_mesh",但它调用了一个错误:Undefined函数'perform_front_propagation_mesh'作为输入参数的类型为'double'。
compile_mex错误(第63行)。
然而,我已经从这个网站下载了所有的工具箱工具箱(快速行军)。
请帮助我。

- s。E。

sagarika拉博拉

亚历山大Naitzat

是否支持四面体网格金宝app?我需要在四面体网格上执行快速行军算法。如果有人能帮我找到相关的matlab代码,我会很感激。

道江

谢谢分享!

Sarun

我通常设置选项。方法= '离散'为'compute_geodesic'函数,从来没有问题。如果不是,有时路径不会一直到达start_points。而“perform_fast_marching”似乎在到达end_points之一时就停止了。

杰伊·郭

感谢您为我们分享这份伟大的工作!我正在做地震射线追踪的研究,所以我对“快速行军”非常感兴趣。m’和‘compute_geodesic”。不是每个端点都能从start_point到达,这让我很困惑。很多时候,我不能得到完整的路径。你能给我一些建议或帮助吗?

杰伊·郭

我是之前评论网站的作者。以下是更新版本:http://javiervgomez.com/pages/fast-marching-toolbox-installation-tutorial.html

robinvista

这个网页提供了一些配置包的帮助:
http://sgpsproject.sourceforge.net/JavierVGomez/index.php/FM_Toolbox

robinvista

dhara

伟大的工具箱……但我面临的问题与编译mex文件。谁能帮帮我…

错误:错误使用mex
无法成功完成。
我没有太多ide关于编译c文件在matlab也..可能是我的错误,但请帮助我。

Seung-Goo

谢谢你分享一个看起来很棒的工具箱。但是和一些用户一样,我也无法编译mex文件。虽然我不打算使用“perform_front_propagation_各向异性”,但它调用了一个错误:
无法成功完成。

compile_mex错误(第7行)
墨西哥人墨西哥人/ anisotropic-fm / / perform_front_propagation_anisotropic.cpp

不编译perform_front_propagation_mesh,我希望使用它。

所以我在“compile_mex”中注释了第7行。M”,读取“% mex mex/anisotropic-fm//perform_front_propagation_anisotropic.cpp”。

然后compile_mex。M返回一堆警告,但结束时没有错误。我想这些功能似乎是可行的。我希望作者更新/修改compile_mex。虽然我不确定这是否会引入一些疯狂的行为,但我希望这能帮助其他有这种错误的人。

sg

Ozan Oktay

你可以使用以下链接找到丢失的文件:
http://www.pudn.com/downloads100/sourcecode/graph/detail407454.html

(“AnisotropicTensorDistance.h”)
(“AnisotropicTensorDistanceConfidence.h”)

丹尼Milakara

有没有可能很快看到调试过的版本?

约翰

似乎作者没有做回归测试。我无法得到任何重要的测试脚本。每5颗星的评级都是由那些花时间调试作者提交内容的人做出的。遗憾的是,作者似乎没有更新他的提交,以反映所有这些错误修复。

就是为了

你好,先生,我想用距离,方向和水平为灰度图像做一个加权函数。加权函数=距离*水平*方向。他的工具箱里有对我有用的文件吗?如果有,请通知我。我有件急事,请告诉我怎么做。

Sarun

非常适合快速行军。有些文件无法编译,所以只需将其注释掉即可。Compute_geodesic有一些bug,但是代码很容易理解和修复。

Dami

嗨,Gabe,感谢上传!perform_front_propagation_2d.mseems to be empty (contains only comments), and there's no perform_front_propagation_3d.m file. I try to run perform_fast_marching and I get this error message:

未定义函数或方法'perform_front_propagation_3d'作为输入参数
“双”类型。

错误在==> perform_fast_marching_old在114
[D S Q] = perform_front_propagation_3d (W start_points-1 end_points-1 nb_iter_max,
H、L、价值观);

我将非常感谢你的帮助。谢谢。

有人在3D数据中使用过骨骼吗?

《光明篇》

网格传播工作得很好,谢谢。
3D传播很慢(与Accurate Fast Marching相比),返回错误的结果:添加一行

W = 1(大小(W));

test_fast_marching_3d.m

并检查距离矩阵的结果。

克里斯托弗凯悦

这两个m文件的extract_path_2/3d。' M '已被'compute_geodesic.m'取代。

函数extract_path_2d()和extract_path_3d()实际上是在'compute_geodesic。m的文件。

Watterpadder Watte

安东Semechko

任何人得到一个错误:

“? ?未定义函数或方法perform_front_propagation_mesh用于输入类型为double的参数。”

当尝试在表面网格上执行快速行军?整个工具箱的内容已经添加到路径中,因此看起来perform_front_propagation_mesh。M不是作者提供的。

Xuemei

我只是下载并使用test_fast_marching_2d。M,它进行得很好,尽管有一点错误需要调试。这很容易纠正。所以,做得好。这是一本关于快速行军方法的好书。我将在我的项目中进一步使用这个toobox。

埃坦

你好,

我正在尝试使用这个工具箱分割一个3D网格。该网格包含几个不连接的表面。似乎快速行进算法“跳过”了表面之间的间隙。是可能的吗?我期望不连通节点之间的测地线距离为无穷大。

谢谢,
埃坦

D L

我在尝试运行compile_mex时遇到了这个错误

// perform_front_propagation_各向异性。cpp不是一个普通的文件或者不存在。

???错误使用==> mex在222
无法成功完成。

==> compile_mex在7处出错
墨西哥人墨西哥人/ anisotropic-fm / / perform_front_propagation_anisotropic.cpp

任何帮助都将不胜感激。先谢谢你。

ladi

谢谢你分享这个节目,
我有一个问题:

你在上面提到了extract_path_2d。m(和3d也),但我找不到它,即使在文件列表。更多关于运行test_fast_marching_2d。这个错误发生了

???索引超出矩阵维度。

Error in ==> perform_front_propagation_2d_slow>perform_fast_marching_step at 110
h0 = H (ind_O);

Error in ==> perform_front_propagation_2d_slow at 56
data = perform_fast_marching_step(数据);

错误在==> perform_fast_marching在117
(D S) =
perform_front_propagation_2d_slow (W start_points end_points nb_iter_max, H);

错误在==> test_fast_marching_2d在27
[D,S] = perform_fast_marching(W, start_points, options);

如果你能帮忙,我将不胜感激

Ladi

LAZRAG•

非常感谢你的这个方法。但是你能告诉我如何使用它进行医学图像分割(肿瘤提取)吗?

JotauVe

JotauVe

你好,

我想知道extract_path_2d。M(以及3d)也包含在这个工具箱中。

你上面提到了,但是我在文件列表里也找不到。

非常感谢。

昏暗的

你好,

首先,我要祝贺你的出色工作。
似乎我有一个问题与预编译的dll 'perform_fast_marching_2d'。

更具体地说(当我试图执行张贴在http://www.ceremade.dauphine.fr/~peyre/numerical-tour/tours/shapes_5_geodesic_descriptors/#10,我收到上述错误信息:
???尝试以函数的形式执行SCRIPT perform_front_propagation_2d:

错误在==> perform_fast_marching在115
[D,S,Q] = perform_front_propagation_2d(W,start_points-1,end_points-1,nb_iter_max, H, H)
L值);

我的理解是,它不能看到dll函数。

欢迎提出任何建议。

加布里埃尔Peyre

重要的是:

1)各向异性传播的代码不再包含在工具箱中,所以不要尝试编译它。如果你“真的”需要各向异性传播,请联系我。

虽然这个工具箱工作得很好,但它不是“即插即用”的。如果你想了解快速行军的方法,你应该试试我的数字之旅
www.numerical-tours.com

杰里

缺少许多文件。如perform_front_propagation_anisotropic.h
AnisotropicTensorDistanceConfidence.h

缺少compile_mex各向异性-fm中提到的文件
已提供MAC OS操作系统头部

马庆丰

错误在==> perform_fast_marching在117
(D S) = perform_front_propagation_2d (W start_points end_points nb_iter_max,
H);

错误在==> test_fast_marching_2d在25
[D,S] = perform_fast_marching(W, start_points, options);

王jinguo

谢谢楼主分享!但是当我运行compile_mex文件时,出现了一个错误:没有找到mex/perform_front_propagation_2d.cpp'。所以我想要你的帮助!谢谢!

王jinguo

珀西邓

是的,有一堆错误,很多文件丢失了,谁能成功地编译它呢?

凯文

首先,我遇到了compile_mex的麻烦。有些路径是错误的,文件丢失了(整个各向异性fm文件夹),我不得不在INRIA上手动下载它们。即使这样,文件也无法编译。

考虑到在项目中投入的明显的努力,有点令人失望。

约翰Sarkar

看起来代码很好,但是组织得很差!很多虫子……来o many subfolders...Non of tests did not work for me!

帕斯卡

作者在工具箱和演示中做得非常好!

但是,出现了太多的bug和编译错误(例如,类似于之前用户的评论,以及函数:fm2dAniso)

Raymond Cheng

谢谢你的分享。

哈桑R-Esfahlan

感谢Peyre的分享,并在superbe网站提供了许多解释。

诺拉

这个主意很好,继续吧!代码仍然需要一些改进(bug修复)。
我使用它进行2D快速行军,但发现matlab bwdist执行得更快,即使我截断区域来计算。

马丁

对我来说没问题。非常感谢。

文森特·w

太多的错误……请修改后再分享。否则,你所做的只是在浪费别人的时间。

涛Tran

非常感谢楼主的分享。
但当我在3D中测试时,它会发出错误警告:

>执行快速行军…???使用==> perform_front_propagation_3d时出错
End_points必须为3 x nb_end_points。

错误在==> perform_fast_marching在121
[D,S,Q] = perform_front_propagation_3d(W,start_points-1,end_points-1,nb_iter_max, H, L, L)
值);

Error in ==> test_vol3d at 61
[D,S] = perform_fast_marching(W, start_point, options);

???使用==> perform_front_propagation_3d时出错
End_points必须为3 x nb_end_points。

错误在==> perform_fast_marching在121
[D,S,Q] = perform_front_propagation_3d(W,start_points-1,end_points-1,nb_iter_max, H, L, L)
值);

Error in ==> test_fast_marching_3d at 19
[D,S] = perform_fast_marching(W, start_points, options);

谁能告诉我如何解决这个问题?

Mehul Sampat

我试图运行test_active_contour。m文件。我得到以下错误信息:“未定义函数或方法'perform_conjugate_gradient'输入参数类型为'function_handle'。”

我试图找到perform_conjugate_gradient fn,但无法在工具箱中找到它。能否提供这个功能的源代码?
谢谢

李波

感谢分享

了红歌

当我调试时,test_fmstar_2d。M不能得到一个结果。的re are always an error:-----------------------------------------------------------------------
在2007年9月06日星期四10:15:31检测到分割违规
------------------------------------------------------------------------

配置:
MATLAB版本:7.0.0.19920 (R14)
操作系统:Microsoft Windows XP
windows系统:版本5.1 (Build 2600: Service Pack 2)
处理器ID: x86 Family 15 Model 2 step9, GenuineIntel
虚拟机:Sun Microsystems Inc.的Java 1.4.2Java HotSpot(TM)客户端虚拟机
(混合模式)
默认字符集:ibm - 1386 _p100 - 2002

注册状态:
Eax = 00000000 ebx = 00000000
Ecx = 00000000 edx = 00000000
ESI = 00000000 EDI = 0acbeb84
EBP = 00cdb88c ESP = 00cdb760
EIP = 0acb153a FLG = 00010246

堆栈跟踪:
[0] perform_circular_front_propagation_2 .dll:0x0acb153a(0x0acb1238, 0x00cdc4c0, 0,0)
[1] perform_circular_front_propagation_2 .dll:0x0acb148c(2, 0x00cdc4c0, 5, 0x00cdc550)
[2] libmex.dll:_mexRunMexFile(2, 0x00cdc4c0, 5, 0x00cdc550) + 71字节
[3] libmex.dll:public: virtual void __thiscall Mfh_mex::dispatch_file(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(2, 0x00cdc4c0, 5, 0x00cdc550) + 157字节
[4] m_dispatcher.dll:public: virtual void __thiscall Mfh_file::dispatch_fh(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(2, 0x00cdc4c0, 5, 0x00cdc550) + 273字节
[5] m_interpreter.dll:public: void __thiscall ResolverFunctionDesc::CallFunction(int,struct mxArray_tag * * const,int,struct mxArray_tag * * const)(2, 0x00cdc4c0, 5, 0x00cdc550) + 246字节
[6] m_interpreter.dll:public: bool __thiscall Resolver::CallMFunction(int,int,class _m_operand * const,union m_operand_storage *,int *)(2,2,0x01527b90,0) + 840字节
[7] m_interpreter.dll:bool __cdecl inResolveMFunctionCall(struct _m_function_desc *,int,int,class _m_operand * const,union m_operand_storage *,int,class _m_operand * const,union m_operand_storage *,int *,enum inMarshalType *,unsigned int,int,unsigned int *,int)(0x22b05a50, 2,2,0x01527b90) + 148字节
[8] m_interpreter.dll:bool __cdecl accelMFunctionCall(struct _accelOp *,struct _accelOp * *,struct _accelBytecode *,int *,enum inMarshalType *)(0x22b9f860, 0x00cdcb64 "???? .dll: struct _accelOp *,struct _accelOp * *,struct _accelBytecode *,int *,enum inMarshalType *, 0x013257b0, 0x00cdcb5c) + 108字节
[9] m_interpreter.dll:int __cdecl accelExec(struct _accelBytecode *,enum inMarshalType *)(0x013257b0, 0x00cdcbdc, 0,0) + 18462字节
[10] m_interpreter.dll:_inExecuteHotSegment(0x00cdcc10, 0x00cdcce0, 0x00cdcc90, 0) + 1542字节
[11] m_interpreter.dll:int __cdecl inInterp(enum inDebugCheck,int,int,enum操作码,struct inPcodeNest_tag volatile *)(1,541, 556, 0) + 365字节
[12] m_interpreter.dll:int __cdecl inInterPcodeSJ(enum inDebugCheck,int,int,enum操作码,struct inPcodeNest_tag *)(1, 541, 23, 0) + 272字节
[13] m_interpreter.dll:int __cdecl inExecuteMFunctionOrScript(class Mfh_mp *,bool)(0x22b86760, 0,4,5) + 773字节
[14] m_interpreter.dll:_inWordsj(2, 0x00cdd1fc, 4, 0x00cdd25c) + 441字节
[15] m_interpreter.dll:public: void __thiscall Mfh_mp::inRunMP(int,struct mxArray_tag * *,int,struct mxArray_tag * *,struct inWorkSpace_tag *)(2, 0x00cdd1fc, 4, 0x00cdd25c) + 158字节
[16] m_interpreter.dll:public: virtual void __thiscall Mfh_mp::dispatch_file(struct _mdUnknown_workspace *,int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0,2, 0x00cdd1fc, 4) + 28字节
[17] m_interpreter.dll:public: virtual void __thiscall Mfh_mp::dispatch_file(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(2, 0x00cdd1fc, 4, 0x00cdd25c) + 26字节
[18] m_dispatcher.dll:public: virtual void __thiscall Mfh_file::dispatch_fh(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(2, 0x00cdd1fc, 4, 0x00cdd25c) + 273字节
[19] m_interpreter.dll:_inDispatchFromStack(670, 0x22bad12c "perform_circular_fast_marching_2..", 2,4) + 891字节
[20] m_interpreter.dll:enum opcodes __cdecl inDispatchCall(char const *,int,int,int,int *,int *)(0x22bad12c "perform_circular_fast_marching_2..", 670,2,4) + 111字节
[21] m_interpreter.dll:int __cdecl inInterp(enum inDebugCheck,int,int,enum操作码,struct inPcodeNest_tag volatile *)(1,604,42,0) + 2282字节
[22] m_interpreter.dll:int __cdecl inInterPcodeSJ(enum inDebugCheck,int,int,enum操作码,struct inPcodeNest_tag *)(1,604,4, 0) + 272字节
[23] m_interpreter.dll:int __cdecl inExecuteMFunctionOrScript(class Mfh_mp *,bool)(0x22b84230, 0,3,3) + 773字节
[24] m_interpreter.dll:_inWordsj(1, 0x00cdd91c, 3, 0x00cdd97c) + 441字节
[25] m_interpreter.dll:public: void __thiscall Mfh_mp::inRunMP(int,struct mxArray_tag * *,int,struct mxArray_tag * *,struct inWorkSpace_tag *)(1, 0x00cdd91c, 3, 0x00cdd97c) + 158字节
[26] m_interpreter.dll:public: virtual void __thiscall Mfh_mp::dispatch_file(struct _mdUnknown_workspace *,int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0,1, 0x00cdd91c, 3) + 28字节
[27] m_interpreter.dll:public: virtual void __thiscall Mfh_mp::dispatch_file(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(1, 0x00cdd91c, 3, 0x00cdd97c) + 26字节
[28] m_dispatcher.dll:public: virtual void __thiscall Mfh_file::dispatch_fh(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(1, 0x00cdd91c, 3, 0x00cdd97c) + 273字节
[29] m_interpreter.dll:_inDispatchFromStack(665, 0x22abdafc "compute_heuristic_multiresolutio. ", 1, 3) + 891字节
[30] m_interpreter.dll:enum opcodes __cdecl inDispatchCall(char const *,int,int,int,int *,int *)(0x22abdafc " compute_heuristic_multiresolutil .", 665, 1, 3) + 111字节
[31] m_interpreter.dll:int __cdecl inInterp(enum inDebugCheck,int,int,enum操作码,struct inPcodeNest_tag volatile *)(1, 874, 55,0) + 2282字节
[32] m_interpreter.dll:int __cdecl inInterPcodeSJ(enum inDebugCheck,int,int,enum操作码,struct inPcodeNest_tag *)(1, 874, 24, 0) + 272字节
[33] m_interpreter.dll:int __cdecl inExecuteMFunctionOrScript(class Mfh_mp *,bool)(0x22a47af0,0,4,4) + 773字节
[34] m_interpreter.dll:_inWordsj(2, 0x00cde03c, 4, 0x00cde09c) + 441字节
[35] m_interpreter.dll:public: void __thiscall Mfh_mp::inRunMP(int,struct mxArray_tag * *,int,struct mxArray_tag * *,struct inWorkSpace_tag *)(2, 0x00cde03c, 4, 0x00cde09c) + 158字节
[36] m_interpreter.dll:public: virtual void __thiscall Mfh_mp::dispatch_file(struct _mdUnknown_workspace *,int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0,2, 0x00cde03c, 4) + 28字节
[37] m_interpreter.dll:public: virtual void __thiscall Mfh_mp::dispatch_file(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(2, 0x00cde03c, 4, 0x00cde09c) + 26字节
[38] m_dispatcher.dll:public: virtual void __thiscall Mfh_file::dispatch_fh(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(2, 0x00cde03c, 4, 0x00cde09c) + 273字节
[39] m_interpreter.dll:_inDispatchFromStack(664, 0x0f7ca247 "perform_fmstar_2d", 2,4) + 891字节
[40] m_interpreter.dll:_inCallFcnFromReference(0, 0x0f872730, 0x789b59c0, 0xcccccccd) + 176字节
[41] m_interpreter.dll:int __cdecl inInterp(enum inDebugCheck,int,int,enum操作码,struct inPcodeNest_tag volatile *)(1,0,93,0) + 4115字节
[42] m_interpreter.dll:int __cdecl inInterPcodeSJ(enum inDebugCheck,int,int,enum操作码,struct inPcodeNest_tag *)(1,0,14, 0) + 272字节
[43] m_interpreter.dll:int __cdecl inExecuteMFunctionOrScript(class Mfh_mp *,bool)(0x015e6f30, 1,0, 0x015e6f30) + 773字节
[44] m_interpreter.dll:_inExecCompScript(0, 0x00cde71c, 0x015e6f30, 0xffffffff) + 321字节
[45] m_interpreter.dll:public: void __thiscall Mfh_mp::inRunMP(int,struct mxArray_tag * *,int,struct mxArray_tag * *,struct inWorkSpace_tag *)(0, 0x00cde71c, 0, 0x00cde77c) + 122字节
[46] m_interpreter.dll:public: virtual void __thiscall Mfh_mp::dispatch_file(struct _mdUnknown_workspace *,int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0,0, 0x00cde71c, 0) + 28字节
[47] m_interpreter.dll:public: virtual void __thiscall Mfh_mp::dispatch_file(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0, 0x00cde71c, 0, 0x00cde77c) + 26字节
[48] m_dispatcher.dll:public: virtual void __thiscall Mfh_file::dispatch_fh(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0, 0x00cde71c, 0, 0x00cde77c) + 273字节
[49] m_interpreter.dll:_inDispatchFromStack(488, 0x013f6d84 "test_fmstar_2d", 0,0) + 891字节
[50] m_interpreter.dll:enum opcodes __cdecl inDispatchCall(char const *,int,int,int,int *,int *)(0x013f6d84 "test_fmstar_2d", 488,0,0) + 111字节
[51] m_interpreter.dll:int __cdecl inInterp(enum inDebugCheck,int,int,enum操作码,struct inPcodeNest_tag volatile *)(2,0,0,0) + 2411字节
[52] m_interpreter.dll:int __cdecl inInterPcodeSJ(enum inDebugCheck,int,int,enum操作码,struct inPcodeNest_tag *)(2,0,0,0) + 272字节
[53] m_interpreter.dll:_inInterPcode(2, 0x7876f2d8, 0,0) + 69字节
[54] m_explain .dll:enum in_local_call_eval_function(int *,struct _pcodeheader *,int *,struct mxArray_tag * * const,enum inDebugCheck)(0x00cdf2c8, 0x00cdf3bc, 2, 0x0f525010 "test_fmstar_2d\n") + 162字节
[55] m_interpreter.dll:$L72592(0x7876f2d8, 0x0f525010 "test_fmstar_2d\n", 15,0) + 196字节
[56] m_interpreator .dll:enum inExecutionStatus __cdecl inEvalCmdWithLocalReturnandtype(char const *,int *,enum inDebugCheck)(0,2,1, 0x00cdf44c "??) + 86字节
[57] m_interpretor .dll:_inEvalCmdNoEnd(0x0f525010 "test_fmstar_2d\n", 0x00cdf4e4, 0x00cdf4a0, 0x015c2180) + 16字节
[58] bridge.dll:_mnParser(0x7c80b6a1, 0x015c2180, 0,0) + 431字节
[59] mcr.dll:public: void __thiscall mcrInstance::mnParser(void)(271242, 0x4d5c3a44, 0x414c5441, 0x625c3742) + 87字节
[60] MATLAB.exe:0x00401d2f(4194304, 0, 271242, 0x015c2180)
[61] MATLAB.exe:0x00403e45(3276856, 2949175, 0x7ffde000, 0x8054b938)
[62]内核32.dll:0x7c816fd7(0x00403cc0 "jth(U@", 0,0,0))

在运行mex文件时检测到此错误。如果MEX-file
不是正式的MathWorks函数,请检查其源代码
错误。有关信息,请参考外部接口指南
在调试mex files。

philipe加布里埃尔

非常好的工作,它工作5/5,但我需要这个程序在c++编译器,如果你能给我

谢谢

新浪Jahanbin

优秀的工具箱! !我已经测试了3D网格上的快速行进算法,它工作得很完美!谢谢加布里尔的分享!

奥利弗·W

非常好,非常有用,但是perform_front_propagation_3d.cpp中有一个小错误。在函数check_heap中,第三个“for循环”的条件应该是z谢谢

耶稣Diaz Carazo

非常好的工作。你会出现在我项目报告的致谢部分。Mes祝贺你!

彭mingzi

这对我们来说是一个很好的工具,谢谢你的帮助。但是当我做mex文件的时候我遇到了下面的问题,大家可以帮助我,谢谢。
的问题是:
连接……
perform_front_propagation_2d。obj: error LNK2001: unresolved external symbol _merrrmsgtxt .解决方法
perform_front_propagation_2d。objj: error LNK2001: unresolved external symbol "void __cdecl fh_deleteheap(struct fibheap *)"解决方法(? fh_deleteheap@@YAXPAUfibheap@@@Z)
perform_front_propagation_2d。obj: error LNK2001: unresolved external symbol "void * __cdecl fh_replacedata(struct fibheap *,struct fiheap_el *,void *)"(? fh_replacedata@@YAPAXPAUfibheap@@PAUfibheap_el@@PAX@Z)
perform_front_propagation_2d。error LNK2001: unresolved external symbol "void * __cdecl fh_extractmin(struct fibheap *)"解决方法(? fh_extractmin@@YAPAXPAUfibheap@@@Z)
perform_front_propagation_2d。obj: error LNK2001: unresolved external symbol "bool __cdecl fh_isempty(struct fibheap const *)"(? fh_isempty@@YA_NPBUfibheap@@@Z)
perform_front_propagation_2d。obj: error LNK2001: unresolved external symbol "struct fiheap_el * __cdecl fh_insert(struct fiheap_el *,void *)"(? fh_insert@@YAPAUfibheap_el@@PAUfibheap@@PAX@Z)
perform_front_propagation_2d。obj: error LNK2001: unresolved external symbol "int (__cdecl*__cdecl fh_setcmp(struct fibheap *,int (__cdecl*)(void *,void *)) "(? fh_setcmp@@YAP6AHPAX0@ZPAUfibheap@@P6AH00@Z@Z)
perform_front_propagation_2d。objj: error LNK2001: unresolved external symbol "struct fibheap * __cdecl fh_makeheap(void)"解决方法(? fh_makeheap@@YAPAUfibheap@@XZ)
libbcd .lib(crt0.obj):错误LNK2001:未解析的外部符号_main
Debug/perform_front_propagation_2 .exe: fatal error LNK1120: 9 unresolved externals .(无法解决的外部问题

圣地亚哥加里多

当我运行了函数“test_multiple_paths_2d”,我得到了以下错误:
执行前面的传播。
提取的道路。
???函数'minus'没有为类'cell'的值定义。

错误在==> compute_distance_to_points在20
D(k,:) = sum((X - repmat(seeds(:,k),1,n)))。^ 2);

错误在==> extract_path_2d在66
D = compute_distance_to_points(path', start_points);

错误在==> test_multiple_paths_2d在33
路径1 = extract_path_2d(D,end_points, options);

Liran Liran

你好,

我试过用这个工具箱
Matlab R2006a
我得到了下面的错误。

谢谢,

Liran

???无效的mexo -file 'C:\liran\matlab\fastMarching\toolbox_fast_marching\perform_front_propagation_2d.dll':无法找到指定的模块。

错误在==> perform_fast_marching_2d在50
(D S) = perform_front_propagation_2d (W start_points-1 end_points-1 nb_iter_max);

Error in ==> test_fast_marching_2d at 21
[D,S] = perform_fast_marching_2d(W, start_points, options);

> > dir perform_front_propagation_2d.dll

perform_front_propagation_2d.dll

这是我发现的最好的关卡集执行教程。

谢谢你:)

azibi mourad

詹尼·schena

致:贝丝·梅西(emassey@fit.edu)
抱歉,但是perform_ circular_front_propagation在我的PC上工作正常;检查两次您的安装!

贝丝梅西

我无法让任何测试文件在toolbox_fast_marching文件夹中工作。我得到的错误是:
???无效的mexo -file 'C:\Documents and Settings\Beth\Desktop\LevelSetMethods\peyrefmm\toolbox_fast_marching\perform_circular_front_propagation_2d.dll':无法找到指定的模块。

错误在==> perform_circular_fast_marching_2d在57
(D S) = perform_circular_front_propagation_2d (W start_points-1 end_points-1、center_point-1 nb_iter_max);

错误在==> test_circular在60
[D,S] = perform_circular_fast_marching_2d(W, start_points, center_point, options);

任何帮助都将不胜感激

露西娅来

它工作在2d和3D完美!
因为多条路径可能会重叠(…来say the 3rd decimal point precision) it would be nice (and save memory) to have the possibility to trim away path sections in common ; we will have more paths and shorter but no duplication of paths

皮埃尔Scardanzan

内窥镜的伟大工具!
一个问题:我如何将路径(x,y,z)与W(I,j,k)联系起来?即,如何得到在体素位置给出的速度函数的值到路径坐标给出的实值?有没有什么技巧能让我们快速地从x y z到i j k ?

李刚

有没有人知道如何将工具箱中的*.cpp文件修改为*.dll,因为我想对cpp代码做一些修改?非常感谢!

S E

如果我能使它工作,这将是非常有用的!mex-file失败如下;由于其他原因,缓慢的.m版本失败。

test_fast_marching_2d
选择起点。
选择终点。
执行前面的传播。
C:\_Lens\Tools\Matlab\Fast Marching\perform_front_propagation_2d.dll加载失败
找不到指定的模块。
???无效的MEX-file

在==> C:\_Lens\Tools\Matlab\Fast Marching\perform_fast_marching_2d.m错误
On line 50 ==> [D,S] = perform_front_propagation_2d(W,start_points-1,end_points-1,nb_iter_max);

在==> C:\_Lens\Tools\Matlab\Fast Marching\test_fast_marching_2d.m
On line 21 ==> [D,S] = perform_fast_marching_2d(W, start_points, options);

eehui lim

我可以运行test_circular_fast_marching_2d,但是运行时会出现错误:
> > test_fast_marching_2d
选择起点。
选择终点。
执行前面的传播。
提取的道路。
运行时间为0.051000秒。
???未定义的命令/函数“extract_curves”。

错误在==> plot_fast_marching_2d在51
c_list = extract_curves (S, 0);

错误在==> test_fast_marching_2d在27
plot_fast_marching_2d (W S路径、start_points end_points);

>>

这:
> > test_fast_marching_3d
???End_points必须为3 x nb_end_points。

错误在==> perform_fast_marching_3d在56
(D S) = perform_front_propagation_3d (W start_points-1 end_points-1 nb_iter_max);

Error in ==> test_fast_marching_3d at 19
[D,S] = perform_fast_marching_3d(W, start_points, options);

我也可以知道有任何例子在3D范围的数据分割或2d图像分割与快速前进?非常感谢您的努力。

圣地亚哥加里多

当我运行'test_circular'时,我被告知:
???未定义的命令/函数“image_resize”。

马库斯Weigert

伟大的东西,
我在我的毕业论文中使用了一个修改过的旧版本的3D图像分割。

非常感谢您的努力。

加布里埃尔Peyre

抱歉,你应该修改compile_mex函数,使其包含堆文件:

Mex Mex /perform_front_propagation_2d_mex.cpp Mex /fheap/fib.cpp . properties /fheap/fib.cpp . properties /fheap/fib.cpp . properties
墨西哥人墨西哥人/ perform_front_propagation_3d.cpp墨西哥人/ fheap / fib.cpp
Mex Mex /perform_circular_front_propagation_2d.cpp Mex /perform_front_propagation_2d.cpp Mex /fheap/fib.cpp

canfei李

当我编译mex文件时,我被告知
perform_front_propagation_3d.obj
创建库_lib6913。X和对象_lib6913.exp
perform_front_propagation_3d.obj:error LNK2001: unresolved external symbol "void __cdecl fh_deleteheap(struct fibheap *)" (?fh_deleteheap@@YAXPAUfibheap@@@Z)
perform_front_propagation_3d.obj:error LNK2001: unresolved external symbol "void * __cdecl fh_replacedata(struct fibheap *,struct fibheap_el *,void *)" (?fh_replacedata@@YAPAXPAUfibheap@@PAUfibheap_el@@PAX@Z)
perform_front_propagation_3d.obj:error LNK2001: unresolved external symbol "void * __cdecl fh_extractmin(struct fibheap *)" (?fh_extractmin@@YAPAXPAUfibheap@@@Z)
perform_front_propagation_3d.obj:error LNK2001: unresolved external symbol "bool __cdecl fh_isempty(struct fibheap const *)" (?fh_isempty@@YA_NPBUfibheap@@@Z)
perform_front_propagation_3d.obj:error LNK2001: unresolved external symbol "struct fibheap_el * __cdecl fh_insert(struct fibheap *,void *)" (?fh_insert@@YAPAUfibheap_el@@PAUfibheap@@PAX@Z)
perform_front_propagation_3d.obj:error LNK2001: unresolved external symbol "int (__cdecl*__cdecl fh_setcmp(struct fibheap *,int (__cdecl*)(void *,void *)))(void *,void *)" (?fh_setcmp@@YAP6AHPAX0@ZPAUfibheap@@P6AH00@Z@Z)
perform_front_propagation_3d.obj:error LNK2001: unresolved external symbol "struct fibheap * __cdecl fh_makeheap(void)" (?fh_makeheap@@YAPAUfibheap@@XZ)
perform_front_propagation_3d.dll: fatal error LNK1120: 7 unresolved external

C: MATLAB6P5P1\BIN\WIN32\MEX.PL: Error: Link of 'perform_front_propagation_3d.dll' failed。

托马斯·德尚

谢谢您的参考!

canfei李

1.在解压文件期间,它告诉我它不能打开文件'perform_front_propagation。锁”。所以在我解压文件后,我找不到文件。
2.当我运行编译mex文件时,我被告知
在==> C:\MATLAB6p5p1\toolbox\toolbox_fast_marching\ compile_mexm .m错误
在第3行==> mex mex/perform_front_propagation_3d.cpp . php . php . php . php

加布里埃尔Peyre

由于使用Matlab的EDO特性,路径提取速度较慢。前端传播尽可能快(只用C代码……)。我将尝试发布一个运行更快的更简单的路径提取代码。

顺便说一下,只是给一个差的评级是没有用的。编写一个完整的库是一项复杂的任务,只是发布匿名评级是如此简单……
你可以给我发一封私人邮件,我会试着纠正错误。

BTW2:代码在matlab 7下运行良好。您需要一个c++编译器来编译mex文件。

“不独立”到底是什么意思?没有足够的文档吗?有些文件丢失了(还记得您必须将工具箱/目录添加到您的路径中吗)?新版本包含一个自述文件,试着检查它是否没有回答你的一些问题。

一个B

运行太慢了!不自包含

看门人尤里Mishchenko

试图运行,但崩溃在matlab 7。很不够记录。想法不错,但执行起来很差。最终我还是得自己写代码。

Raoul-Roman库恩

3D问题运行良好。在test_fast_marching_2d中缩放函数的问题。
错误在==> test_fast_marching_2d在10
W = rescale(double(W));使用7.0.0.19920 (R14)

英格丽三宝”

谢谢楼主分享~
虽然我不能编译它,也因为mex.h头文件丢失。

你能也发给我吗?

扎克Thunemann

我想尝试这个算法,但我在Unix机器上运行Matlab。有办法得到源代码吗?我在下载中看到了一些,但是mex.h头文件不见了。你能寄给我吗?

谢谢!

扎克

克莱门特切赫

非常有用,但多起点的问题:分割违背!

格瓦拉周

好了好了好

詹尼·schena

与作者得到的两个函数一起工作很好。

加布里埃尔Peyre

对不起,我会在接下来的几天里更新工具箱。以下是功能:

函数m = mmax(A)
m = max ((:));

函数y = rescale(x,a,b)
如果输入参数个数< 3
= 0;b = 1;
结束
m = min(x(:));
y = (b-a) * (x-m)/(M-m) + a;

皮埃尔Scardanzan

> > test_fast_marching_3d
???未定义函数或变量'mmax'。

在==> C:\toolbox_fast_marching\extract_path_3d.m
On line 24 ==>A1 (I) = mmax ((J));

错误在==> C:\toolbox_fast_marching\test_fast_marching_3d.m
On line 20 ==> path = extract_path_3d(D,end_points);

MATLAB版本兼容性
创建R14
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!

toolbox_fast_marching /

toolbox_fast_marching /墨西哥人/ anisotropic-fm-feth /

toolbox_fast_marching /测试/

toolbox_fast_marching /工具箱/