Pythonでお絵かき(カフェウォール錯視編)
PIL(Python Imaging Library)というものがある。これは、Pythonで画像関係のデータを扱う際に必要なものをまとめたライブラリなのだそうだ。何かしらの実験刺激を作る際に、決まったパターンで単純な図形を繰り返したいときというのがあり、そういう場合にこれは役に立つのではないかと思ったので、試しにカフェウォール錯視でも作ってみる。
カフェウォール錯視というのは、傾きの錯視の一つでリンク先を見てもらうか、googleで検索してもらえればどんなものかは分かるでしょう。
※北岡先生のサイトにはたくさんの錯視が紹介されていて見ているだけで楽しい。
手順としては、四角形の開始位置のリストを最初に作り、その位置情報に従い繰り返し処理で順々に描画していくという流れ。今回は2段しか四角形を描いていないのでそれぞれで繰り返し処理を行なっているが、y座標の開始位置のリストを作れば複数段重ねることも容易でしょう。位置情報のリストを作る際には、前の記事で紹介したnumpyのarray関数を使った。
#coding:utf-8 from __future__ import division from __future__ import unicode_literals from numpy import array from PIL import Image, ImageDraw #黒の四角の位置情報 black1 = array(range(5)) * 120 + 30 #描画オブジェクトとか image = Image.new("RGB", (620,123), color=(255,255,255)) draw = ImageDraw.Draw(image) for i in range(5): #上段の四角形を描く draw.rectangle(((black1[i],0),(black1[i]+60,60)), outline = None, fill = (0,0,0)) for j in range(5): #下段の四角形を描く draw.rectangle(((black1[j]+30,63),(black1[j]+90,123)), outline = None, fill = (0,0,0)) draw.line([(0,61),(620,61)], width = 2, fill = (128,128,128)) #真ん中の灰色の線 image.save("cafe.png")
完成品はこちら。
ちなみに水平線の灰色を明るい色にするとやや錯視量が大きくなる気がしますがどうでしょうかね。(最初のはRGB=(128,128,128)で2番目がRGB=(160,160,160))