1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

赤外線画像の取得を試す

Posted at

Kinectは通常のColorカメラのほかに赤外線センサーが搭載されており、本体から赤外線の画像を取得することが可能です。

カメラを有効にする際に、ColorImageFormatで赤外線データを選択することができます。

kinect.ColorStream.Enable(ColorImageFormat.InfraredResolution640x480Fps30);

なお、モードは以下の通り存在しており、解像度、フレームレート、データタイプが数パターン用意されています。

・InfraredResolution640x480Fps30  赤外線データ(今回使ったもの)
・RawBayerResolution1280x960Fps12  ベイヤーRAWデータ
・RawBayerResolution640x480Fps30  ベイヤーRAWデータ
・RawYuvResolution640x480Fps15  YUVカラーRAWデータ
・RgbResolution1280x960Fps12  RGBカラーデータ
・RgbResolution640x480Fps30  RGBカラーデータ(前回使ったもの)
・YuvResolution640x480Fps15  YUVカラーデータ

RAWデータとは未加工のデジタルデータという意味で、これに様々なアルゴリズムを適用することで画像のカラー変換やフォーマット変換等を行うことができます。
デジタル一眼カメラを趣味にしている人だと比較的詳しい用語ですね。

その他の処理の流れはColor画像取得とほとんど変わりません。
ただし、Bitmap変換において、Color画像取得で使用した Coding4Fun の ToBitmapSource() は使用できませんでした。
今回は BitmapSource.Create() を使用します。

using (ColorImageFrame cFrame = e.OpenColorImageFrame()) 
{
    if(cFrame != null)
    {
        byte[] colorData = new byte[Frame.PixelDataLength];
        Frame.CopyPixelDataTo(colorData);

        Color.Source = BitmapSource.Create(
            cFrame.Width, cFrame.Height, 96, 96, PixelFormats.Gray16, 
            null, colorData, cFrame.Width * cFrame.BytesPerPixel);
    }
}

赤外線データは16bitのグレースケールとなるため、引数内のPixcelFormatsでは、Gray16 を指定します。
ToBitmapSource()では、これが使用できなかった模様。

前回のようなColor画像を変換する場合は、ここに Bgr32 を指定します。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?