OpenCV のビット深度について
はじめに
OpenCV で使用されるビット深度についてまとめた。
画像ファイルとかで使われる値とは少し異なるので注意。
ビット深度とは
1画素について何バイト使用するかを表したもの。
OpenCV で使用される関数の引数としては ddepth となっていることが多い。
注意点
決まったビット深度でしか処理されない関数とかもよくある。
ビット深度を変更するためには “convertTo" 関数を利用する。
画像ファイルで使われるビット深度とは少し扱いが異なる。
ビットマップファイル の 24ビット は RGB各8ビットで、1画素あたり24ビットだが、
OpenCV の場合は1データあたりになるので、 8ビット(CV_8U) の場合、
カラーなら1画素あたり24ビット、モノクロだと1画素あたり8ビットになる。
定義
OpenCV の中では以下のように定義されている。
CV_8U | 8ビット 符号なし整数 |
CV_8S | 8ビット 符号付き整数 |
CV_16U | 16ビット 符号なし整数 |
CV_16S | 16ビット 符号付き整数 |
CV_32S | 32ビット 符号付き整数 |
CV_32F | 32ビット 浮動小数点 |
CV_64F | 64ビット 浮動小数点 |
CV_16F | 16ビット 浮動小数点 |
使い所
二値化処理の閾値を決めるときなどは “符号なし整数" が使いやすい。
エッジ強調などは負の値が出るので、浮動小数点形式に変更して関数使ったほうが良い時がある。
サブピクセル処理などの細かい事をする時にビット数を上げる事がある。最近はあまりメモリを気にせず大きいビット使える。
処理速度はその時に応じて検討する。
終わりに
ビット深度は最初はあまり気にせずにやっていいと思う。なぜかエラーが出る関数とかが出てきて引っかかるけど。
詳しくなってからビット深度にこだわる様になるきがする。
おまけ
実験用プログラム OpenCV_test の GitHubリポジトリ
URL
https://github.com/iryachi/OpenCV_test
実行ファイルだけ
https://github.com/iryachi/OpenCV_test/releases
使い方
https://iryachi.stars.ne.jp/opencv_test_imple/
ディスカッション
コメント一覧
まだ、コメントがありません