フォト

Google AdSense


  • AdSense
無料ブログはココログ

« ViewFrame(ver インタラクション2004)の各種情報アップ | トップページ | メンテ後にココログのサービスが追加されてるのに気付かなかった »

2004.03.16

論文には書いてないViewFrameの話

そんなわけであんまり論文では書いてない話でもします。

一応あれはDirectX 9.0でプログラムを組んでいます。表示部分はDirect3Dでカメラの部分はDirectShowでキャプチャしてCaputureTexture9の要領でフレーム画像をテクスチャ化してピクセルシェーダで肌色領域を2値化しております(このDirect3DとDirectShowの親和性は実はOpenGLよりも有利な点であることをMicrosoftは誇ってもいいが用途がマニアックすぎる。Longhornまではあまりありがたがられないだろうね)。現状のピクセルシェーダで動画像解析を補助するのは色認識と2値化、フィルタリング(ただし、元のテクスチャに対して2値化後にフィルタリングしたかったのだが描画後のピクセルがずらせればねぇ…。2パス使うえば解決するがそれも馬鹿馬鹿しいしね。それが出来ると何がうれしいかって論文を確かドイツ人が書いてたっけ、アレは俺も欲しい機能)くらいが限界でしょう。まぁ、2値化までしておけばたとえサーフェイスをロック(2値化後の画像はテクスチャにレンダリング)してもまじめにCPUだけで解析やるよりかは負荷は軽いでしょう。

今回のキモはピクセルシェーダで全ピクセルをRGB表色系からL*a*b表色系に変換ってとこでしょう。HSV表色系による肌色認識はわりとありますが、個人的な実験ではL*a*b表色系のほうが安定感はありますね(ただし、L*a*b表色系はHSV表色系より扱いにくい)。

一般的にレンダーターゲットに指定したテクスチャはロックできない(正確にはD3DPOOL_DEFAULTで作成した場合ですがD3DUSAGE_RENDERTARGETはD3DPOOL_DEFAULTでないと作成できない)ことになってますが、これを出来る方法を見つけたのがこうした処理へピクセルシェーダを用いることが出来た勝因(と、言ってもSDKヘルプのIDirect3DTexture9::LockRectの項目をよく読めば解決しますが。ただし、個人的にロックして読むだけでサーフェイスの書き換えは試したことがない速度的にどうなんでしょうね)でしょうね。

こういう話題をするのは、基本的に実装って論文の枚数(今回は2ページでしたし)が限られてたり、読む人が辛くなるから書けないんだよねぇ~。でも、個人的な関わりから考えるとこういうことってマニアックだけどどこかでまとめて置くべきなのかもねぇ。

関係ないがここまで書いて思ったがこれだけ文章が詰まって長いと読む気がおきなくなる。よくココログで他の人の記事も読むが長めに語る人はけっこういるが考えておいた方がいいんじゃないって思うことがある(自戒も含めて)。

« ViewFrame(ver インタラクション2004)の各種情報アップ | トップページ | メンテ後にココログのサービスが追加されてるのに気付かなかった »

Programming」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/2210/306601

この記事へのトラックバック一覧です: 論文には書いてないViewFrameの話:

« ViewFrame(ver インタラクション2004)の各種情報アップ | トップページ | メンテ後にココログのサービスが追加されてるのに気付かなかった »