[Spark AR]ウィンクを検出する

Spark ARでウィンクを実装する


問題点

現在,Spark ARには目の状態を検出する関数として,”Left Eye Closed”と”Right Eye Closed”が実装されている. 
一見,この関数だけで簡単にウィンクが実装出来そうだが,両目を閉じたときにも反応してしまうため,普通の瞬きにも反応してしまう問題がある.

排他的論理和で解決

今回実装するウィンクに求められる仕様は以下の表の通り. この仕様を満たす論理演算を考えると,排他的論理和(EXOR:Exclusive OR)と同値であることがわかる.
もっとスマートな方法はあるかもしれないがとりあえず,この方法で解決.

左目 右目 ウィンクか否か 論理値
0 0 0
0 1 ⭕️ 1
1 0 ⭕️ 1
1 1 0

※0=開眼,1=閉眼

論理演算の世界ではEXORはよく使われるので,それ相応の関数が用意されていることが多いがSpark ARには用意されていないので自分でEXORを実装する.

EXORは色々な組み合わせで作ることができるが,今回はWikipediaにあったこの回路を参考に実装.

入力Aが左目の状態,入力Bが右目の状態として,出力がウィンクしたかどうか.
これをSpark ARのPatchで実装するとこんな感じ.

コメントを残す

メールアドレスが公開されることはありません。