現在MatlabのコードをOpenCVに変換していますが、MatlabとOpenCVの距離変換関数の動作が異なっています。 例として単純マトリクスを取る BWは=MatlabとOpenCVの距離変換の動作が異なります
0 0 0 0 0
0 1 0 0 0
0 0 0 0 0
0 0 0 1 0
0 0 0 0 0
Matlab version distance transform意味がその画素とBWの最も近いゼロ以外の画素との間の距離である数を割り当て、Iは
1.4142 1.0000 1.4142 2.2361 3.1623
1.0000 0 1.0000 2.0000 2.2361
1.4142 1.0000 1.4142 1.0000 1.4142
2.2361 2.0000 1.0000 0 1.0000
3.1623 2.2361 1.4142 1.0000 1.4142
を得OpenCVではDIST_L2(単純なユークリッド距離)を選択します。それは私に与えます
1.3692 0.9550 1.3692 2.3242 3.2792
0.9550 0 0.9550 1.9100 2.3242
1.3692 0.9550 1.3692 2.3242 1.3692
2.3242 1.9100 0.9550 0 0.9550
3.2792 2.3242 1.3692 0.9550 1.3692
なぜ私は理解できません。私は、OpenCVがピクセルを最も近いゼロピクセルで計算することを認識しました。したがって、私はすでに入力マトリックスを反転しました。
私はMATLABが正しいと言っています....私は、L2距離が対角線ピクセルのsqrt(2)ではないことを知りません。おそらく、離散点としてピクセルを取らず、サイズが大きいと仮定しますか? –