2011-01-22 16 views
0

6x6イメージを120x120にサイズ変更するのに問題があります。サイズ変更された画像が1ピクセルだけ多少ずれているように見えます。これはのcvResizeのcv :: resizeで発生します。私のコードは次のようになります。どのようにしてcvResize/resizeを正しく使用できますか?

warpedImgは(私はそれが簡単に認識できるようにすることGIMPでそれをリサイズ)このようになります
warpPerspective(greyImg, warpedImg, homography, Size(6, 6)); 
Mat bigWarpedImg = Mat(120,120,CV_8UC1); 
resize(warpedImg, bigWarpedImg, Size(0,0), 20, 20, INTER_NEAREST); 

http://picasaweb.google.com/103165673068768416583/Opencv#5565090880773608210

http://picasaweb.google.com/103165673068768416583/Opencv#5565090881969794706

bigWarpedImgはこのようになりますご覧のとおり、bigWarpedImg左と上の境界線は小さく、右と下の境界線は太すぎます。 OpenCVのバグのようです。これは1つですか、この関数を間違って使用しますか?

答えて

2
Mat bigWarpedImg = Mat(120,120,CV_8UC1); 

この行が不必要なある - resizeは、それが収まるようにするために、ターゲットMatを割り当てますので、Mat bigWarpedImgは大丈夫でしょう。サイズ変更について

わからない - 私はいつもresize

resize(warpedImg, bigWarpedImg, Size(120,120), 0, 0, INTER_NEAREST); 

フォームを使用して、このような行動に気づいたことはありません。私はそれはバグだと思いますが、ドキュメンテーションからはそのようにはならないはずです。

0

最近の補間を使用している可能性があります。もっと良いものを試してみてください(私はバイキュービックだと思います)。

+0

新しいサイズが元のサイズの(自然数)倍数である場合、補間の必要はありません。 – binford

+0

私はそれを試しました。最も近い双線形補間を使用して、640x480イメージを64x48サイズにリサイズしました。一番近いものは1ピクセルシフトし、双線形(以上)はありませんでした。 –

+0

これをテストしていただきありがとうございます。しかし、私はしなければCPUサイクルを費やしたくない。 SMALLからBIGへのリサイズ(他の方法ではない)と大きいイメージサイズが小さいイメージの倍数である場合、補間はちょうどnessecaryではありません(良い結果は得られません)。 – binford

関連する問題