我一直在尝试实施名为Learning Based Digital Matting的研究论文中描述的数字遮罩算法。
其MATLAB代码可用here。我正在尝试使用OpenCV 2.4.3和UMFPACK将MATLAB代码转换为C ++。
问题是名为getLap_iccv09_overlapping
的函数(计算输入图像的拉普拉斯矩阵)在OpenCV中不是现成的,我必须在cpp中编写自己的实现。我的实施结果不正确。
是否有提供矩阵/图像Laplacian Matrix calculation的C / C ++库?
答案 0 :(得分:1)
我最近不得不将几个Matlab函数“转换”为C ++(使用OpenCV),遗憾的是你无法找到完全相同的函数。有一些类似的功能但结果并不完全相同,特别是对于矩阵的边界
我建议您阅读并理解Matlab函数使用的算法(矩阵上的操作)并用c ++编写(Opencv非常适合矩阵运算)。
您可以使用一个小矩阵(例如4乘4)进行测试并逐步进行,首先使用矩阵内的元素,然后使用边和边框(我发现边界条件更难以理解)
祝你好运!
答案 1 :(得分:0)
this function不够吗?
答案 2 :(得分:0)
你的Matlab和C ++版本的功能有多相似?听起来你可能只需要逐步检查各个中间结果是否相同,然后尝试找到错误。
你可能会发现使用writeMat.cpp这是一个可用于获取OpenCV cv :: Mat矩阵并将其保存为Matlab .m文件的函数,它可以使比较更容易 - 在各个点写出.m在您的cpp代码中,将它们加载到Matlab中,运行Matlab脚本并在适当的位置进行比较。