我一直在尝试实现名为Learning Based Digital Matting的研究论文中描述的数字遮片算法。
它的MATLAB代码可以在here上找到。我正在尝试使用OpenCV 2.4.3和UMFPACK将MATLAB代码转换为C++。
问题是OpenCV中没有现成的名为getLap_iccv09_overlapping (计算输入图像的拉普拉斯矩阵)的函数,我必须用cpp编写自己的实现。我从我的实现中得到了错误的结果。
有没有提供矩阵/图像Laplacian Matrix calculation的C/C++库?
发布于 2012-11-23 22:29:03
我最近不得不将几个Matlab函数“翻译”成C++ (使用OpenCV),不幸的是你找不到完全相同的函数。有一些相似的函数,但结果并不完全相同,特别是对于矩阵的边界。
我建议你阅读并理解Matlab函数使用的算法(对矩阵的运算),并用c++编写(Opencv对于矩阵运算来说很棒)。
您可以使用一个小矩阵(例如,4*4),然后一步一步地进行测试,首先是矩阵内部的元素,然后是边和边界(我发现边界条件更难理解)。
祝好运!
发布于 2012-11-27 23:43:21
this function还不够吗?
发布于 2012-11-29 21:44:53
你的Matlab和C++版本的函数有多相似?听起来,您可能只需要逐步执行各个阶段,检查各个中间结果是否相同,并尝试以这种方式查找错误。
你可能会发现writeMat.cpp的用法,这是一个函数,它可以获取你的Matlab::Mat矩阵,并将其保存为Matlab::Mat文件,这将使比较变得更容易-在OpenCV代码中的不同位置写出一个.m,将它们加载到Matlab中,运行Matlab脚本并在适当的点进行比较。
https://stackoverflow.com/questions/13529902
复制相似问题