カラー、白黒変換のAPIで処理時間を計測してみた。
処理内容
0 VGAサイズのカラー画像を読み込む
1 matのcloneでデータのコピー
2 cvtColorで白黒に変換
3 matのcloneでデータのコピー
4 表示
5 キー入力待ち
while()で1-5の処理の繰り返す
時間の計測は、1,2,3の前後でcv::getTickCount()を呼び、その差から計算している
CPU版
リリースモードでビルドしているが、Visual Studio から実行しているので、若干オーバヘッドが含まれている
1回目のcvtColorに時間がかかっているが、あとはほぼ一定の時間と思われる
1,3でのデータ転送量の比(3:1)が、そのまま処理時間の比と同じである
OCL版
処理内容は同じであるが使用する関数とMatがOCL対応になる
1回目は、カーネルのコンパイル時間が含まれており、5秒近くの処理時間がかかっている
2回目以降の処理時間は安定しているが、1,3での処理時間が変わらない結果となっている
1,2の処理時間も約4倍となっており、当方の環境では、VGAサイズの画像に対して簡単な処理をOCL化することは、まったく速くならないことが確認された。
特徴点やObject検出など計算量が多い場合には、処理時間の短縮が見込めるかも知れない
メモ
ocl版resizeでは、フィルターtタイプに、INTER NEAREST or INTER LINEARしか使えない
他の値では、落ちる
0 件のコメント:
コメントを投稿