中の人とは一体……不思議に迫る【龍谷祭】

やっほー.くりちゃんです.
先日行われた龍谷祭でのオープンラボ……
そこに向けて私は,カメラで撮った画像をPCで処理して遊べる展示物を作っていました,と前回の記事でお伝えしました.今回は,その展示物を制作する過程を大大大公開しちゃいます!!!
前回の記事はこちらから→https://emics.rikou.ryukoku.ac.jp/?p=1041
龍谷祭まであと1ヶ月ほどになったある日……研究室の先生に
「OpenPose とか応用すると,結構簡単に楽しいプログラム作れそうなので,龍谷祭オープンラボを目標に何かできたら楽しそうじゃない?」
とそそのかされちゃいました.私は「自分で何か案から出してがっつりプログラミングしたことないしなぁー.してみようかなぁー.楽しそうだしなぁー.」と軽い気持ちでやってみることにしました.
OpenPoseというのは,画像や動画から人体の顔や手,足などを検出できるソフトウェアです.目や耳,関節などの特徴点やそれらの関係を推定できます.特徴点は全25箇所あり,画像を入力するとそれらの座標を得られます. https://github.com/CMU-Perceptual-Computing-Lab/openpose https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/output.md#pose-output-format-body_25 |
まず,OpenPoseを理解するため,人が映った画像の特徴点に丸い点を表示するプログラムを作って見ました.すると……
こんなのなりました.ズボンよりわかりづらいスカートでも,しっかりと膝の位置を推定することができています.すごくないですか…? すごいですよね!!!
次に,腕や足をわかりやすくするために,特徴点と特徴点を線で結んでみます.それだけでは味気ないので,点の大きさ変えたりちょっといじってみました.するとなんだかいい感じ??
以下,これを棒人間ver1と呼ぶことにします.
この棒人間ver1で,あらかじめ撮っておいた動画を使って動作確認してみました.いい感じに棒人間できたと喜んでいると……
腕が画面の外に出ると長くなったー!!! え,なんでなんでなんで!?
どうやら特徴点が画面内にない場合,座標が原点にあることになってしまうようです.困ったよー.
先生に相談してみました.
「OpenPoseの特徴点には,それぞれの「確からしさ」の数値が付いているから,それ使えばなんとかなるんじゃね?あとはがんばれ〜」
と言われまして……頑張ってみました.考えてみたのは,この「確からしさ」の値がある一定値よりも低ければ点や線を描かないようにすることです.すると…
原点に戻らなくなりました.これで色々遊ぶためのベースができました.
以下,これを棒人間ver2と呼ぶことにします.
さて,ここから棒人間ver2を利用し,楽しく遊べる展示物を考えていきます.色々な案を考えましたが,今回は2つの案を実現することにしました.
1つ目は「棒人間ver2を反転させる」というものです.
画像の中心を通る垂直な線を基準に,特徴点を水平に反転させることで自分の隣に棒人間を出現させることができます.これで自分と棒人間で一緒に踊ったり,手を繋いだり,頭をなでたり,喧嘩したりできます.一人でも寂しくなく,たくさん遊ぶことができます.
2つ目は「手からビーム・目からビームをだす」というものです.
肘から手首に向かう半直線を考えて,その傾きをランダムに変化させて手からビームを放ちます.ビームの数は10本,時間によって色を変化させます.また,手首の高さが首の高さを越えると目からもビームを放つようにもしてみました.右手が越えると左目から,左手が越えると右目からと,一見何が起こっているのかわからないようなものに工夫しました.
ついに……オープンラボ展示用作品完成!!! メニューも付いたよー!
龍谷祭のオープンラボの開催日が近づいてくる中,どんなものを作ろうか全く浮かばなかったり,忙しくてプログラミングする時間が取れなかったりと,どうなることかと思っていましたが,無事完成できてホッとしました.完成したものをオープンラボで展示し,たくさんのお客様に遊んでいただきました.画面の前で興味津々な姿や体を動かしてはしゃぐ姿をみて
「完成できてよかった.作ろうと思えてよかった.」
と思いました.
自分が作ったもので人に楽しんでもらえたことで,達成感を得ることができました.本当にいい経験になりました.
以上,くりちゃんでした.またね〜

”行動しなければ何も始まらない”をモットーに,「好きなことを好きなだけ」「やりたいことをやりたいだけ」とりあえず行動するときっと素敵な出会いがありますよ!!