質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
RealSense

RealSenseは、3D感知する技術。RealSense SDKとReal Sense 3Dカメラで構成されています。RealSense SDKは、2次元・3次元の認識があり、Real Sense 3Dカメラを用いて全ての機能を使用できます。従来の色情報の他、奥行きの情報などの取得が可能です。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

0回答

392閲覧

Processingを用いたREALSENSEのサンプルで

ayo

総合スコア1

RealSense

RealSenseは、3D感知する技術。RealSense SDKとReal Sense 3Dカメラで構成されています。RealSense SDKは、2次元・3次元の認識があり、Real Sense 3Dカメラを用いて全ての機能を使用できます。従来の色情報の他、奥行きの情報などの取得が可能です。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2022/09/23 22:43

編集2022/09/26 03:33

前提

ProcessingでREALSENSEを動かすサンプルをいじっています。
REALSENSE D455を使用しており、奥行き情報が映像でわかるためにgetDepthImage()を描画しています。

実現したいこと

このライブラリでは奥行きの最大値が16mまで設定できるらしいのですが
getDepthImage()で描画する際に、最大値の設定がうまくいっておらず
約6mが奥行きの最大値に設定されているように見られます。

下画像がProcessingを実行したときの画像です。
図1
Processingキャプチャ画像 図1

下画像(図2)のように0.5~16mの範囲で色が変わるようにgetDepthImage()で描画するためにはどのように設定をすればいいのか
(正確には画像では廊下の長さの関係で奥行きが分かりにくくなってしまったため最大値を13.1mに設定している)

~追記~
距離が0.5mでは白、16mでは黒になるように設定したいということです。
図1,2の画像は家の廊下をデプス画像にしています。
家の廊下は7,8m先に壁があるため
図2では壁の色が灰色になっていますが、
図1では5,6m先が真っ暗になってしまっているためこれをどうにか設定したいというのが私の希望です。

図2
イメージ説明

分かる方、ぜひ教えてください。

試したこと

サンプルの「ControlThresholdFilter」が問題解決に近いプログラムだと思い、数値を変えてみたが理想通りにならなかった。
私の勘違いでなければ以下のような変更で図2と同じ描画がされると考える。

ControlThresholdFilter.pde

import ch.bildspur.realsense.*; import ch.bildspur.realsense.type.*; import ch.bildspur.realsense.processing.*; RealSenseCamera camera = new RealSenseCamera(this); RSThresholdFilter thresholdFilter; float minDistance = 0.0f; float maxDistance = 4.0f; float size = 0.5f; // ここを以下のように変更 // float minDistance = 0.5f; // float maxDistance = 13.1f; // float size = 12.6f; boolean filterOn = false; void setup() { size(1280, 720, FX2D); // enable depth stream camera.enableDepthStream(1280, 720); // enable colorizer to display depth camera.enableColorizer(ColorScheme.Warm); // add threshold filter thresholdFilter = camera.addThresholdFilter(); camera.start(); } void draw() { background(0); // adjust filter float filterCenter = map(mouseX, 0, height, minDistance, maxDistance); if (filterOn) { thresholdFilter.setMinDistance(constrain(filterCenter - (size * 0.5f), minDistance, maxDistance - size)); thresholdFilter.setMaxDistance(constrain(filterCenter + (size * 0.5f), minDistance + size, maxDistance)); } // read frames camera.readFrames(); // show color image image(camera.getDepthImage(), 0, 0, width, height); } void keyPressed() { thresholdFilter.setMinDistance(minDistance); thresholdFilter.setMaxDistance(maxDistance); filterOn = !filterOn; }

変更した後の実行画面が図3である。
※キー入力、マウス操作を行った後の実行結果である。

図3
イメージ説明

https://github.com/cansik/realsense-processing
また、この下にマニュアルが書いてあり、フィルターの設定のところでいろいろいじってみたが理想通りにいかなかった。

↑サイトの自分がいじったところのコピーを貼っておきます。

// include the following package for the types import ch.bildspur.realsense.type.*; // list of all supported filters camera.addThresholdFilter(0.0f, 1.0f); camera.addSpatialFilter(2, 0.5f, 20, 0); camera.addDecimationFilter(2); camera.addDisparityTransform(true); camera.addHoleFillingFilter(HoleFillingType.FarestFromAround); camera.addTemporalFilter(0.4f, 20, PersistencyIndex.ValidIn2_Last4); // The following filters have not been tested yet: camera.addUnitsTransform(); camera.addZeroOrderInvalidationFilter();
// include the processing package import ch.bildspur.realsense.processing.*; // in setup RSThresholdFilter thresholdFilter = camera.addThresholdFilter(); // in draw thresholdFilter.setMinDistance(5.0); thresholdFilter.setMaxDistance(8.0);

プログラミング初心者で申し訳ないですが、わかる方ご協力お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TN8001

2022/09/25 07:03

注)わたしはintel RealSenseについて何もわかっていませんし、試せる環境にもありません。 > Processingで公式が出しているREALSENSEを動かすサンプルをいじっています。 「公式」が何にかかっているかはわかりませんが、提示のライブラリは [cansik (Florian Bruggisser)](https://github.com/cansik) さんが 作ったJavaラッパー [cansik/librealsense-java: Intel® RealSense™ SDK 2 wrapper for Java.](https://github.com/cansik/librealsense-java) を元にProcessing用に使いやすくした [cansik/realsense-processing: Intel RealSense 2 support for the Processing framework.](https://github.com/cansik/realsense-processing) Contributed libraries(寄稿ライブラリ)です。 [Libraries / Processing.org](https://processing.org/reference/libraries) 「公式」要素はありません。 「公式」なのはこれですよね?(まあ内部では使っているのでしょうけど) [IntelRealSense/librealsense: Intel® RealSense™ SDK](https://github.com/IntelRealSense/librealsense) > サンプルをいじっています。 例えばこれなんかは動いているんでしょうか? [realsense-processing/ControlThresholdFilter.pde at master · cansik/realsense-processing](https://github.com/cansik/realsense-processing/blob/master/examples/ControlThresholdFilter/ControlThresholdFilter.pde) 動くけど4mだか6m以上にはならないということですか?
ayo

2022/09/25 08:11

ご質問ありがとうございます。 公式ではないのですね。大変失礼しました。勉強になります。 文章の訂正、より具体的な説明をさせていただきました。 ご不明な点がございましたら、よろしければ再度質問よろしくお願いいたします。 的確なご注意、感謝いたします。
TN8001

2022/09/25 14:18

やりたいことは十分伝わっています。 やってみたことが全然伝わっていません。 > 下画像(図2)のように0.5~16mの範囲で色が変わるようにgetDepthImage()で描画するためにはどのように設定をすればいいのか > 距離が0.5mでは白、16mでは黒になるように設定したいということです。 図2は0.5~13.1mではないのですか?(「細かいなぁ」とお思いでしょうが、書いてあることに矛盾があるとすべて疑ってかからなくてはならなくなります) > この下にマニュアルが書いてあり、フィルターの設定のところでいろいろいじってみたが理想通りにいかなかった。 > ↑サイトの自分がいじったところのコピーを貼っておきます。 いじったも何もそのままではないですか?(いじる前の状態ということですね?) [cansik/realsense-processing: Intel RealSense 2 support for the Processing framework.](https://github.com/cansik/realsense-processing#filters) > camera.addThresholdFilter(0.0f, 1.0f); > thresholdFilter.setMinDistance(5.0); > thresholdFilter.setMaxDistance(8.0); ここの数字を「いろいろいじってみた」と言っていますか? camera.addThresholdFilter(0.5f, 16.0f); thresholdFilter.setMinDistance(0.5); thresholdFilter.setMaxDistance(16.0); のような(それでいいのかは知りません) マニュアルのそのコードの直下に↓と書いてあります。 > Check out the ControlThresholdFilter example as well. これはこのことです。 >> サンプルをいじっています。 > 例えばこれなんかは動いているんでしょうか? [realsense-processing/ControlThresholdFilter.pde at master · cansik/realsense-processing](https://github.com/cansik/realsense-processing/blob/master/examples/ControlThresholdFilter/ControlThresholdFilter.pde) > 動くけど4mだか6m以上にはならないということですか? 試してないんであれば、Processingのメニュー「ファイル」ー「サンプル...」で「Java サンプル」ウィンドウが開きます。 「Contributed Libraries」-「Intel RealSense for Processing」-「ControlThresholdFilter」で開いたpdeがそれです。 何かキーを押すたびにフィルターのOnOff、マウス左右で何かがかわるっぽいです^^; 試してみてください。maxDistanceとかも変えてみてください。
ayo

2022/09/26 03:38

再度質問ありがとうございます。 13.1mの件は廊下の長さの都合上調整したものでした。 説明不足でした、失礼しました。 サンプルはほどんどすべて実行しており、例のサンプルも実行済みでした。 しかし、思い通りにいきませんでした。 もし、何かわかることがありましたら 再度、質問または回答によろしくお願いいたします。
ayo

2022/09/27 07:45

いえいえ、REALSENSEを試せる環境ではないのに相談にのっていただきありがとうございました。 まだいろいろ試してみたり、そちらで直接聞いてみるなりして解決に努めたいと思います。 なにか分かったことがあったら反映します。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問