アールテクニカ地下ガレージ

アールテクニカ株式会社の製品開発・研究開発・日々の活動です

RealSenseのデプスにポストエフェクトをかける

Author

中村@アールテクニカ

前回はRealSense(D415/D435)のデバイス情報について書きましたが、今回はデプスのポストエフェクトについて書きたいと思います。
artteknika.hatenablog.com

ポストエフェクト

RealSense ViewerのStereo Moduleのパネルには、「Post-Processing」の項目があり、取得したデプス情報に対しポストエフェクトをかけることができます。デプスデータは、その仕組み上ノイズが多かったり正常に深度が取得できない部分があったりしますが、ポストエフェクトをかけることでノイズを除去したりデータを補間することができます。
このポストエフェクトはSDKに含まれているので、自作アプリにも容易に導入できます。
SDKで用意されているポストエフェクトはいくつかありますが、ノイズやデータの欠落が多くてもおおむね補完してくれるHole Fillingフィルターを使ってみたいと思います。

Hole Filling フィルター

Hole Fillingフィルターは正常にデプスを取得できなかった部分のデータを穴埋めしてくれるフィルターです。
補間の仕方が異なるモードがいくつかあるのでそれぞれの特徴も比較してみたいと思います。

モード名 概要
Fill from Left 左側の画素で補完する
Farest from around 周辺の最も深度の深い画素で補完する
Nearest from around 周辺の最も深度の浅い画素で補完する
ソースコード

rs2::hole_filling_filterのオブジェクトを作成し、process()メンバ関数でフレームを処理するだけです。
モードは、rs2::hole_filling_filterのコンストラクタで指定します。

/*
* 0 - fill_from_left - Use the value from the left neighbor pixel to fill the hole
* 1 - farest_from_around - Use the value from the neighboring pixel which is furthest away from the sensor
* 2 - nearest_from_around - -Use the value from the neighboring pixel closest to the sensor
*/


bool apply_hole_filter = true;
int hole_filter_mode = 1;
rs2::hole_filling_filter  hole_filling(hole_filter_mode);

// フレームの取得
rs2::frameset data = pipe.wait_for_frames();
auto depth_frame = data.get_depth_frame();

if (apply_hole_filter) {
    depth_frame = hole_filling.process(depth_frame);
}

// デプスをRGB画像に変換
rs2::frame depth = color_map.process(depth_frame); 

実行結果

自席の液晶モニタ、キーボード周辺の画像で実行結果を比較してみます。

フィルターなし

f:id:artteknika_nakamura:20181019164901p:plain:w500
画像の左端、液晶モニタの一部、手前にあるキーボードなどのデプスがうまく取れていません。

Fill from Left

f:id:artteknika_nakamura:20181019165301p:plain:w500
概ね補間できていますが、左側の画素で補間するため、欠損の多い液晶モニタの左側は補間できないままになっています。

Farest from around

f:id:artteknika_nakamura:20181019165315p:plain:w500
液晶モニタの左側は一応補間されていますが、本来の深度とは大きく異なってしまっています。
また、手前のキーボードも一部の深度が実際の値と違います。

Nearest from around

f:id:artteknika_nakamura:20181019165326p:plain:w500
液晶モニタの左側とキーボード部分は良好に補間できています。
一方、液晶モニタの下辺りの奥行きのある部分は実際より深度が浅い値となってしまっています。

まとめ

Hole Filling フィルターは簡単にデプスデータを補間できますが、モードごとに得手不得手があるようです。
距離や対象物により最適なモードを選ぶのが良いでしょう
また、左端は全般的に正常にデプスが取れないようなのでこの部分は切り捨てた方がよさそうです。

intel RealSense™ Depth Camera D435

intel RealSense™ Depth Camera D435

Intel Realsense Depth Camera D415 [並行輸入品]

Intel Realsense Depth Camera D415 [並行輸入品]

Author

中村@アールテクニカ

アールテクニカのSE兼プログラマ。Web系のサーバサイド・フロントエンドからスマホ・PCのネイティブアプリまでソフトウェア開発全般が守備範囲。最近はハードウェア開発にも興味あり。

スポンサーリンク