11

私は、 Learning BasedDigitalMattingという名前の研究論文で説明されているデジタルマットアルゴリズムを実装しようとしています。

そのMATLABコードはここから入手できます。OpenCV2.4.3とUMFPACKを使用してMATLABコードをC++に変換しようとしています。

問題は、getLap_iccv09_overlapping(入力画像のラプラシアン行列を計算する)という名前の関数がOpenCVですぐに利用できないことであり、cppで独自の実装を作成する必要があります。実装から誤った結果が得られます。

行列/画像のラプラシアン行列計算を提供するC/C ++ライブラリはありますか?

4

3 に答える 3

1

最近、いくつかの Matlab 関数を (OpenCV を使用して) C++ に「変換」する必要がありましたが、残念ながらまったく同じ関数を見つけることができません。似たような関数がいくつかありますが、結果はまったく同じではありません。特に行列の境界についてはそうです。
Matlab 関数で使用されるアルゴリズム (行列の演算) を読んで理解し、c++ で記述することをお勧めします (Opencv は行列演算に最適です)。
小さなマトリックス (たとえば 4 x 4) を使用してテストできます。最初にマトリックス内の要素を使用し、次にエッジと境界線を使用して段階的に進めます (境界条件は理解しにくいと思います)
。 !

于 2012-11-23T14:29:03.233 に答える
0

この機能では不十分ですか?

于 2012-11-27T15:43:20.743 に答える
0

関数のMatlabバージョンとC++バージョンはどの程度似ていますか?おそらく、さまざまな段階を経て、さまざまな中間結果が同じであることを確認し、その方法でエラーを見つけようとする必要があるようです。

OpenCV cv ::Matマトリックスを取得してMatlab.mファイルとして保存するために使用できる関数であるwriteMat.cppの使用法が見つかる場合があります。これにより、比較が容易になります。cppコードのさまざまなポイントで.mを書き出します。それらをMatlabにロードし、Matlabスクリプトを実行して、適切なポイントで比較します。

于 2012-11-29T13:44:52.710 に答える