10/15(火)-10/19(土) 岐阜県(南濃温泉「水晶の湯」)で自動運転車の実証実験を行います☆彡

14-16. ImageJでポケモンのデザインが丸みを帯びてきているか検証してみた

やること

ポケモンは現在約900種類いるようですが、初代から現在の第8世代にかけて、ポケモンのデザインが「だんだん丸みを帯びてきているのではないか?」という指摘があります。私は初代~ルビー・サファイアあたりまでしかプレイしていませんが、大変に共感しています。

予備

この意見に対して、デザインの複雑さを定量的に検証した方がいます。次の記事では、線の量をポケモンの面積で割った値を「情報量」と定義したうえで、「ポッポからヤヤコマまで情報量が減少している」と述べています。

最近のポケモンはデザインが複雑になったのか?【Python】【OpenCV】 - Qiita
はじめに先日、ポケモンたかさおじさんこと、生㌔Pのブログにて次のような記事が投稿された。ポケモンらしさ-2_意見分析 マスコット感検証…
出典:Qiita「 最近のポケモンはデザインが複雑になったのか?【Python】【OpenCV】 」

しかし、グラフを見るとツツケラはポッポと同程度の情報量を持っており、やや直感に反する部分を残しています。これは、「丸みを帯びているか」を考慮していないことに原因がありそうです。

ここでは線の量ではなく、尖った部分の量」を定量化して同様の検証を行ってみます

使用した画像とソフト

画像は「ポケモンずかん」から570×570サイズのものを拝借しました。

トップページ|ポケモンずかん
『ポケットモンスター』シリーズに登場するポケモンの情報を見ることができる、「ポケモンずかん」。

解析ソフトは研究ではおなじみのImageJです。バグが多いせいでかなりクセの強いソフトです。特にStack関連の処理はバグバグでやってられな

Former Home of Imagej

「尖った部分の量」の定量化

入力画像とクロージングした画像の差を取る「ブラックハット変換」を用います。クロージングは膨張の後に収縮をする処理で、黒いごま塩ノイズを除くのに有効な処理です。

http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_imgproc/py_morphological_ops/py_morphological_ops.html

試しに、適当な二値化画像を用意して(左)、ブラックハット変換処理を行いました(右)。

差分を取ると、尖ったカーブの内側が検出できています(左)。しかも、より尖っている部分ほど検出面積が大きいようで、ある程度の定量性があります。元の画像に赤で重ねてみました(右)。

つまり、ブラックハット変換で検出されたピクセルの量が多いほど「尖った」あるいは「線が混み合った」デザインと言えるでしょう。ここでは、クロージングにおいて1ピクセルの膨張/収縮をN=1と呼ぶことにします。2ピクセルであればN=2です。

序盤鳥ポケモンで検証

ブラックハット変換(N=1)

元画像

→8-bit

→Find Edges

→Threshold

→Close(N=1)

→Skeletonize

→ブラックハット変換(N=1)

→差分

→シルエットに差分を赤で重ねました。

ポッポを拡大してみます。

ツツケラも拡大してみます。

羽の先端に注目すると、ポッポは羽のギザギザが抽出されていて、ツツケラの丸くデフォルメされた羽は検出されていません。「そうそう、こういうことが言いたいんだよ」という声が聞こえてきます(幻聴)。

検出面積と検出個数です。

ポケモンの面積で割ると以下のようになります。

単純に検出面積に着目すると、初代のポッポがもっとも大きく、以降の世代はほんのり減少傾向と言えるでしょうか?ポケモンの面積で割るとツツケラがもっとも尖り率が大きいという結果に。

ブラックハット変換(N=2)

シルエット+差分(赤)

拡大

検出面積と検出個数

ポケモンの面積で割ると

N=1のときと同じ傾向でした。

まとめ

どうでしょう。「丸みを帯びてきているか?」に対する解析のヒントになったでしょうか?

なんかこう、もっと直感に合致する解析方法があると思うんです。説が立証できる方法をあれこれ探すのは本来はルール違反ではありますが(→t検定の有意水準は後から決めてはならない(そんなリンクはありません))、手法が不適切だったと言い張って、なんとか見つけたいと思います。曲線で近似した際の曲率はどうでしょうか?ヒントを募集していますので、SlackやTwitterで遠慮なくご連絡ください。

タイトルとURLをコピーしました