3

OpenCVcvCanny(...)とそれが処理できる画像データ型に問題があります。まあ、多分あなたたち/ギャルは解決策を知っています。

32ビットのfloatイメージがあり、その上でcvCannyを実行したいと思います。問題は、cvCannyが「IPL_DEPTH_8S」またはU(signed / unsigned short)しか処理できないこと、または少なくともそれが私が疑うことです。OpenCVのマニュアルには、それがどれだけ処理できるかが示されておらず、cv/cvcanny.cppのこの行は私の期待を高めませんでした。

...
if( CV_MAT_TYPE( src->type ) != CV_8UC1 ||
CV_MAT_TYPE( dst->type ) != CV_8UC1 )
CV_ERROR( CV_StsUnsupportedFormat, "" );
...

私が持っている画像はグレースケール/単精度float32ビットで、画像の値は0.0から16.0の間です。float32をunsignedshortにキャストしても、値の精度が低下し、OpenCVのキャニーでエッジが失われるため、あまり役に立ちません。

あなたたちは私の問題の解決策をたまたま知っていますか?(ITKを使用する以外に:))

4

1 に答える 1

3

申し訳ありませんが、cvCannyサポートされているのはシングルチャネルの8ビット画像のみであるため、私が考えることができるのは、画像の各値を新しいタイプの画像に拡大縮小して、255/16失われた精度を最小限に抑えることです。CV_8UC10 - 255

于 2009-10-20T19:28:08.470 に答える