Webカメラの機能比較

Webカメラはどれを使おうか迷うのでいつかの自分へのメモ。
PointGrey使いたいなーと思うのですが、値段的に気軽に使えないことが多いので。アマゾンで手軽に手に入るWebカメラを中心に見ていきます。

v4l2-ctlの

v4l2-ctl --list-ctrls
v4l2-ctl --list-formats-ext

このコマンドで以下のパラメータを確認します。

  • 変更可能なパラメータ
  • フォーマット、解像度、フレームレートの組み合わせ

BUFFALO 広角カメラ BSW200MBK

画質はいまいち。フォーカスは手動で変更する。

Controls

  • brightness (int)
  • contrast (int)
  • saturation (int)
  • hue (int)
  • white_balance_temperature_auto (bool)
  • gamma (int)
  • power_line_frequency (menu)
  • white_balance_temperature (int)
  • sharpness (int)
  • backlight_compensation (int)
  • exposure_auto (menu)
  • exposure_absolute (int)

Formats

'YUYV'

Size FPS
640x480 30.000 fps
160x120 30.000 fps
176x144 30.000 fps
320x240 30.000 fps
352x288 30.000 fps
800x600 10.000 fps
1280x720 8.000 fps
1920x1080 5.000 fps

'MJPG' (compressed)

Size FPS
640x480 30.000 fps
160x120 30.000 fps
176x144 30.000 fps
320x240 30.000 fps
352x288 30.000 fps
800x600 30.000 fps
1280x720 30.000 fps
1920x1080 30.000 fps

PLAYSTATION Eye PS3

フレームレートが高くて、そこそこ広角。YUYVだけ対応ぽい。解像度は最大640x480。画像認識につかいやすい。

PlayStationEye

PlayStationEye

Controls

  • brightness (int)
  • contrast (int)
  • saturation (int)
  • hue (int)
  • white_balance_automatic (bool)
  • exposure (int)
  • gain_automatic (bool)
  • gain (int)
  • horizontal_flip (bool)
  • vertical_flip (bool)
  • power_line_frequency (menu)
    • sharpness (int)
    • Camera Controls
  • auto_exposure (menu)

Formats

'YUYV'

Size FPS
320x240 187.000, 150.000, 137.000, 125.000, 100.000, 75.000, 60.000, 50.000, 37.000, 30.000
640x480 60.000, 50.000, 40.000, 30.000, 15.000

Logicool HD PRO WEBCAM C920R

画質がとても綺麗。オートフォーカス優秀。画像認識に使う時は切るの忘れないように。

Logicool ロジクール HD プロ ウェブカム c920r

Logicool ロジクール HD プロ ウェブカム c920r

Controls

  • brightness (int)
  • contrast (int)
  • saturation (int)
  • white_balance_temperature_auto (bool)
  • gain (int)
  • power_line_frequency (menu)
  • white_balance_temperature (int)
  • sharpness (int)
  • backlight_compensation (int)
  • exposure_auto (menu)
  • exposure_absolute (int)
  • exposure_auto_priority (bool)
  • pan_absolute (int)
  • tilt_absolute (int)
  • focus_absolute (int)
  • focus_auto (bool)
  • zoom_absolute (int)

Formats

'YUYV'

Size FPS
640x480 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
160x90 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
160x120 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
176x144 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
320x180 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
320x240 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
352x288 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
432x240 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
640x360 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
800x448 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
800x600 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
864x480 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
960x720 15.000, 10.000, 7.500, 5.000
1024x576 15.000, 10.000, 7.500, 5.000
1280x720 10.000, 7.500, 5.000
1600x896 7.500, 5.000
1920x1080 5.000
2304x1296 2.000
2304x1536 2.000

'H264' (compressed)

Size FPS
640x480 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
160x90 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
160x120 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
176x144 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
320x180 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
320x240 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
352x288 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
432x240 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
640x360 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
800x448 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
800x600 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
864x480 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
960x720 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
1024x576 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
1280x720 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
1600x896 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
1920x1080 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000

'MJPG' (compressed)

Size FPS
640x480 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
160x90 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
160x120 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
176x144 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
320x180 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
320x240 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
352x288 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
432x240 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
640x360 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
800x448 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
800x600 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
864x480 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
960x720 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
1024x576 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
1280x720 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
1600x896 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
1920x1080 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000

Logicool C922 PRO STREAM WEBCAM

C920の上位版。画質は申し分ない。720pで60fpsキャプチャができるらしいが、よく見ると720p以外の解像度のときは、720p以下でも最大30fpsになるようなので注意が必要。

Controls

  • brightness (int)
  • contrast (int)
  • saturation (int)
  • white_balance_temperature_auto (bool)
  • gain (int)
  • power_line_frequency (menu)
  • white_balance_temperature (int)
  • sharpness (int)
  • backlight_compensation (int)
  • exposure_auto (menu)
  • exposure_absolute (int)
  • exposure_auto_priority (bool)
  • pan_absolute (int)
  • tilt_absolute (int)
  • focus_absolute (int)
  • focus_auto (bool)
  • zoom_absolute (int)

Formats

'YUYV'

Size FPS
640x480 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
160x90 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
160x120 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
176x144 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
320x180 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
320x240 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
352x288 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
432x240 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
640x360 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
800x448 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
800x600 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
864x480 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
960x720 15.000, 10.000, 7.500, 5.000
1024x576 15.000, 10.000, 7.500, 5.000
1280x720 10.000, 7.500, 5.000
1600x896 7.500, 5.000
1920x1080 5.000
2304x1296 2.000
2304x1536 2.000

'MJPG' (compressed)

Size FPS
640x480 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
160x90 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
160x120 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
176x144 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
320x180 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
320x240 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
352x288 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
432x240 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
640x360 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
800x448 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
800x600 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
864x480 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
960x720 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
1024x576 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
1280x720 60.000, 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
1600x896 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000
1920x1080 30.000, 24.000, 20.000, 15.000, 10.000, 7.500, 5.000

ELP 180 度魚眼

画質はそこそこ。解像度を下げるとフレームレートが高いので、お気軽の画像解析につかえる。レンズの組み合わせも豊富。フォーカスは手動でレンズを回す。 120.101fpsってなんだろ

Controls

  • brightness (int)
  • contrast (int)
  • saturation (int)
  • hue (int)
  • white_balance_temperature_auto (bool)
  • gamma (int)
  • gain (int)
  • power_line_frequency (menu)
  • white_balance_temperature (int)
  • sharpness (int)
  • backlight_compensation (int)
  • exposure_auto (menu)
  • exposure_absolute (int)
  • exposure_auto_priority (bool)

Formats

'MJPG' (compressed)

Size FPS
1920x1080 30.000
1280x720 60.000
1024x768 30.000
640x480 120.101
800x600 60.000
1280x1024 30.000
320x240 120.101

'YUYV'

Size FPS
1920x1080 6.000
1280x720 9.000
1024x768 6.000
640x480 30.000
800x600 20.000
1280x1024 6.000
320x240 30.000

最後にスペック情報Markdown出力スクリプト

Print webcam spec using v4l2 command

よさ気なウェブカメラあったら情報ください。

再帰性反射で目立たないマーカーを作ってみる

案件で検証したものの結局違う方法を使ったので、お焚きあげ。

オブジェクトをWebカメラでトラッキングしたいという相談があったので、古き良き手法のマーカートラッキングを試してみました。
OpenCV3のcontribリポジトリに含まれるArUcoを使いました。普通に使うのは簡単で、キャリブレーションせずとも安定しています。

しかし、そのままの見た目は目立つので、
再帰性反射塗料と赤外線を使って、可視光領域では見えないマーカーを検証しました。

マーカーは印刷してカッターで切ります。

赤外線カメラは手軽に使えそうなこちらを買ったものの
https://www.amazon.co.jp/gp/product/B00IU5ENB4/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1www.amazon.co.jp

速い動きでぶれてしまったので、トラッキング用途ではこちらのリンクを参考にPS3EYEを改造するなどのほうが良さそうです。(予算があればOptiTrackとか使ってください…)
FreeTrackをTrackClipProとPlayStation Eyeで使ってみる - atwiki(アットウィキ)


3M スコッチライト 9910

3M スコッチライト 9910
まず手元に合った3Mスコッチライトで検証しました。

圧倒的性能で、綺麗にトラッキングできます。 布なので、同じ色のものを使えば、目立たなくなるものの、やはり存在感はあります。


ブライトコート N ホワイト 再帰反射性水性塗料

これも使えそう。塗料なので布より自由度が高いです。
綺麗に塗れば、目立たない用にもできるのかな。


これとは別にスプレータイプのものも検証しましたが、全然赤外線反射してくれませんでした。そういう用途ではないので、製品自体は問題ないですが。

全天球動画にAmbisonics再生

360度動画のサラウンド再生について勉強する機会があったので、まとめておきます。

Ambisonics アンビソニック 概要

マイク

4chのマイクを正四面体の配置に並べて、頭をぐるぐるまわしてパンニングが変わっても再生できるって技術です。

Ambisonicsの概要はこちらが非常にわかりやすいです。
- 徳井直生さん 360度動画のためのAmbisonicsマイクを開発中! 「百見は一聞に如かず」
- サラウンド寺子屋 AMBISONICの原理と制作の実際 1992年 Ambisonic 資料より

実はYoutubeでも、PC版Chrome, Android版で見るとこの方式のオーディオにも対応していました。
Spatial Audio対応の動画リスト

Youtubeに対応動画をアップロードする方法はこちらにまとまってます。
またAdobe PremiereにVSTプラグインを入れて動画と一緒に書き出すこともできるみたい。

ただ、ただ録音するだけではなく、あとから、効果音や、ピンマイクの音声をVR動画上に配置したいこともあるとおもいます。
そのようの編集には最近Facebookに買収されたこれが良さげ。太っ腹の無料公開。Facebook 360 Spatial Workstation
VSTプラグインで音を配置できて、Ambisonicsの書き出しにも対応しているぽいです。

有料プラグインの中には動画の中に音を配置するかのように使えるProTools用の360panというプラグインもあった

Youtubeとかで対応しているA-Format、B-Formatって?

結構躓くところが、正四面体のマイクで録音した4chそのままは、A-Formatと言われて、そのままではYoutubeへアップロードできないです。
Youtubeへは、1次フォーマット a.k.a. B-Formatへ変換する必要があるらしい

B-Formatの内容

チャンネル 内容
W 位相差のないモノラル成分
X Wに対する左右差成分
Y 前後差成分
Z 上下差成分

ポイントは、XYZは、差分成分のみということだなと。
こうすることで、4ch再生対応していない場合は、Wのみ再生すればよくなるみたい。
更にBGMを載せたいってときにWだけに乗せれば良くなったりするんでないでしょか?

4分割より細かい粒度で再現できる高次フォーマットもあり、Youtubeで対応しているのは図の2段目までということ。

Wikipediaより

動画

360度な映像をThetaなどで撮影してアップロード

YouTubeメタデータを対応させるには360 Video Metadata ダウンロードってソフトでメタデータをいれてアップロードすると、15分くらいの変換時間のち、ぐるぐる回ったりカードボードで見れる映像になったりします。

メモ: Youtubeから4k動画のダウンロード

youtube-dl -k -f 'bestvideo+bestaudio/best' "url"

で、mkvコンテナに動画4k mp4, 音声 4ch webmで入る。

mkvフォーマットとは? Matroska - Wikipedia

ffmpegで使いそうなコマンドメモ

結構めんどいのが、あまり4chオーディオはやらないだけあって、ffmpegを色々使うことに。ので使ったコマンドをメモ。

# 4chファイルを1chチャンネルごとに分割
ffmpeg -i sample.webm -map_channel 0.0.0 sample1.wav -map_channel 0.0.1 sample2.wav -map_channel 0.0.2 sample3.wav -map_channel 0.0.3 sample4.wav

# 4つのモノラルを、4chオーディオストリームへ合成
ffmpeg -i sample1.wav -i sample2.wav -i sample3.wav -i sample4.wav -filter_complex "[0:a][1:a][2:a][3:a]amerge=inputs=4[aout]" -map "[aout]" output.wav

# 動画と音をまとめる
ffmpeg -i sample.mp4 -i sample.wav -c:v copy -c:a aac -strict experimental output.mp4

Unityでの再生もやったのですが、長くなったのでひとまずここまでで。

WIP ノリノリで加速度センサを振ったときのテンポをJSで推定する

加速度センサをリズムに合わせて振ったときにBPM解析できるかなーと試してみたログです。

いっつもBeatDetectionはライブラリの中をちゃんと読まずにつかっていたので、一度しらべてみました。

調べると、自己相関 Autocorrelationというものがあるらしく、実装もシンプルだったので、jsで作ってみました。(ほぼjsfiddle参考)

from 自己相関 - Wikipedia

自己相関は、信号に含まれる繰り返しパターンを探すのに有用であり、例えば、ノイズに埋もれた周期的信号の存在を判定したり、 信号中の失われた基本周波数を倍音周波数による示唆に基づき同定するために用いられる。


サンプルURL
スマホからみてください

  • 灰色が、生の加速度センサ
  • 赤色が、ローパスフィルタを通した加速度センサ
  • 緑色が、自己相関関数とおしたグラフ

緑色が左肩上がりになるほど、一定の周期で動いてる(相関がつおい)みたいです。

加速度センサなのか、なんとなく精度はいまいち
シンプルなes6 練習と、master/docsのgithub pages 公開の実験も兼ねて作ってみました。

ソースはこちら

参考

アルプス電気 ハプティック®の展示コンテンツ

去年の仕事ですがやってた仕事をブログにもちょっとずつまとめとこうと。

ALPSSHOW 2016, CEATEC JAPAN 2016で
アルプス電気 様のハプティック®の展示をお手伝いしました。

今回、開発中のデバイスと連携するUnityアプリケーションを担当しました。

展示したものは3つ

  • ハプティック®トリガー: 小さな丸い玉が、プチトマト、かぼす、グミ、心臓の4種類の触感に変わる
  • ハプティック®トリガー プラス東京大学舘暲先生との温冷感共同研究。コップに冷たい水、熱いお茶を注ぐ。温度が変わる。コップを振ると水の入っている触感がする
  • ハプティック®パッドトラックパッドが、タイル、ジーンズ、モルタルの触感にかわる

ほんとはも一個あったのですが、CEATECでは展示エリアの関係で3つ。
デザインはブルーパドル佐藤ねじさんにお願いしました。

開発中のデバイスについてはこんな技術です。 www.alps.com

ネット上の評判については概ね好評。リアルさはまだまだだけど、これからに期待といった感想も多かったです。テレビにも何社もとりあげられ、安倍首相も体験したそうです。 news.mynavi.jp www.seikatsukaden.com

Haptic-Design

制作しての気づいたこと。
余談ですが、ペルチェ素子で温度を変えたときに、実際は5℃程度の変化にもかかわらず、熱そうなお湯が注がれる映像と音を聞くと、コップを落としてしまうくらい熱いと人は騙されてしまっていました。

よく考えれば当たり前ですが、触覚も、視覚と聴覚にかなり影響されていると気づきました。正確に表現するよりも、VR空間内では触感を強調した嘘をつくほうが良さそう。

今回感じたのはこのような触感の試行錯誤は、サウンドエンジニアの仕事ととても似ているということ。 実際にはありえないけど、ちょっと大げさに作る効果音。嘘なんだけど、ある方がリアリティを感じてしまう。
…なんだかそっくりな気がします。

もう研究分野では全盛だけど、コンテンツとして触感が流行ってきた時に、Haptic-Designなる分野が立ち上がってきたら面白いなあと。
そしてこれを教えるのは音響系の学科や、映画学科がこんな授業をやってたりするんじゃないかなーと想像してしまいました。