猫も杓子も構造化

発達障害、特別支援などについて書いています。最近は心理学関係の内容が多めです。

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")


完成品はこちら。

f:id:nekomosyakushimo:20170905120835p:plain


ちなみに水平線の灰色を明るい色にするとやや錯視量が大きくなる気がしますがどうでしょうかね。(最初のはRGB=(128,128,128)で2番目がRGB=(160,160,160))

f:id:nekomosyakushimo:20170905121355p:plain