[matplotlibで錯視] 3. きらめき格子錯視

その他

matplotlibできらめき格子錯視を作成する

きらめき格子錯視とは?

きらめき格子錯視(Scintillating grid illusion)は、白い点が黒い格子の交点に配置された画像において、視線を動かすと交点に存在しない黒い点がちらつくように見える錯視現象です。本記事では、Pythonのmatplotlibライブラリを使って、このきらめき格子錯視を再現する方法を解説します。コードの実装手順や調整可能なパラメータについても詳しく説明します。

コード

解説

モジュールのインポートと図の作成

figsize=(8,8)で四角の図を作成します。

背景色の設定

fig.patch.set_facecolor(‘white’) で図を含めた画像全体の背景を白にしています。ax.patch.set_facecolor(‘k’) で図の背景を黒にしています。

目盛と目盛ラベルを非表示

目盛ラベルを非表示にするには、plt.tick_params(labelbottom=False, labelleft=False)を使用しています。 別の方法として、ax.xaxis.set_major_formatter(plt.NullFormatter())でも同様に非表示にできます。

plt.tick_params(color=’white’)を使うと、目盛を白色にして視覚的に見えなくしています。 目盛の詳細設定については下記を参照してください。

[matplotlib] 12. 目盛り
matplotlibのグラフにおける目盛りの設定方法を解説。主目盛りと副目盛りの調整、ラベルのカスタマイズ、対数目盛りの適用など、Pythonでデータ可視化を行う際に役立つテクニックを紹介しています。

図の枠線の設定

図の枠線は、ax.spines[‘right’].set_visible(False)のようにすることで非表示にできます。

グリッドの設定

黒背景に灰色のグリッドを表示します。グリッドの表示する間隔は、set_major_locator(plt.MaxNLocator(10))とすることで、0.1刻みでグリッドが表示されます。

白丸の表示

白丸は、データをプロットすることで表示しています。np.meshgridを使用して0.1から0.9までの格子状データを作成し、それをグリッドの交差点上に配置することで、きらめき格子錯視を生成しています。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

まとめ

本記事では、matplotlibを使用してきらめき格子錯視を作成する方法を紹介しました。黒い格子の交点に白い点を配置することで、視線を動かした際に存在しない黒い点がちらつくように見える不思議な現象を再現できました。この錯視は人間の視覚処理システムの特性によるものであり、コードを少し調整するだけで様々な視覚効果を生み出せることがわかりました。Pythonとmatplotlibを活用することで、簡単に視覚的に興味深い錯視図形を作成できることが示されました。

参考

錯視と視機能

コメント