複雑なものから複雑なものを生成する




perlinnoise.jpg

上の画像は左がPhotoshopで「ノイズを加える」でノイズを描画したもので、右が「描画」から「雲模様」っていうのをやると生成されるパターン。雲模様というのはパーリンノイズ (perlin noise)と呼ばれる技法を使っていて、これは1997年にKen Parlinという人が発明した、より自然な...つまり確かにランダムで規則性は見えないけど完全ランダムよりもうちょっと連続しているような乱数を発生させるアルゴリズムで、これはCGの世界で自然なテクスチャの質感を生成したり、地形を生成したりするのに使われたりする。パーリンノイズについて詳しくはこことかこことかここ参照。

パーリンノイズを利用して最近たまたま見た面白いプログラムを見つけたのでいろいろメモ。

kenperlin.jpg
Ken Perlin generated from Perlin Noise

これは何をしているかというと、元となるKen Perlin氏の写真をn×nのグリッドで分割し、それぞれのグリッド内でPerlinNoiseを生成して、元となる画像の各グリッドと一定の近似値になった時に画像を固定する、という作業を繰り返していくと、元の画像に近い、おぼろげなKen Perlin氏のポートレートが出来上がるというモノ。

これに近い面白いアプローチをしているものとして、こんなプログラムがある。

pareidoloop.jpg
pareidoloop

これは、顔認識技術を逆手につかって「顔らしき画像」を生成するプログラム。ランダムなポリゴンを生成しつつ生成する毎に顔認識をかけて顔認識精度があがるまで何度も同じ作業を行いながら、顔認識で顔が認識されるまで画像を繰り返していく。(顔認識は基本的に画像の特徴点抽出をベースにしていて、それを知っていると、いろいろ間違った使い方が展開できて面白い。例えば顔認識のアルゴリズムを使って膨大な画像の中から心霊写真を大量に抽出することも可能だろう。)


これらの考え方を展開すると、例えばこんな考え方もできるかも知れない。

例えば音楽のジャンル分けアルゴリズムをつくるとする。たとえば大量にダブステップと呼ばれる楽曲を解析して「特徴点d」を抽出して学習させる。すると、こんどはそのアルゴリズムに何かしらの楽曲情報を与えると、楽曲の中に含まれる「特徴点d」(ダブステ指数)が何%か、という情報を得ることができる。

で、さらにこのアルゴリズムを逆手に使って、そのアルゴリズムにランダムに、生成した音の要素を積み重ねて行って毎回認識アルゴリズムに解析させていき、75%程度まで認識されるまで繰り返すとそこで、「おぼろげなダブステップ的な音楽」が生成できるんじゃないか。こういうことを考えていくとワクワクするよね。

※こういうアプローチのことを、メタヒューリスティックスとか遺伝的アルゴリズムとかいうのかしら。おしえてくわしいひと!

Facebook Comments
Twitter Comments