Mathematica を使って画像や光学に関する面白い現象をシミュレーションしてみました

はじめに

趣味として表記の内容の光学現象を Mathematica を使ってシミュレーションし HP を立ち上げました。 具体的テーマはオリジナルなものもありますが OSA (アメリカ光学会) が無償で公開している OpticsExpress (アメリカ光学会の学術雑誌) 等から取り上げています。

Mathematica の利用歴は長いですが、用いたコマンドも限られていますので深く理解しているとは言い難いです。 HP は分かっている結果がきちんと出てそれが視覚に訴えることを第一にプログラミングしました 。 そのため code は単純で速度等も考慮されていませんが、かえって初学者には分かり易いかも知れません。 これまで HP 上に載せたシミュレーションテーマの一覧を記しておきます。

また、いくつかのテーマで私がよく使った手続きとコードも載せておきます。

シミュレーションテーマ

  1. ディープラーニングによるフーリエ変換像から画像復元
  2. ゴーストイメージングによる光検出器から画像検出
  3. おもしろマンデルブロ集合を描く
  4. 画像から音を復元する
  5. 光をあやつる
  6. 究極のクリヤ化画像検出方法
  7. エアリービーム、不思議な光を体験する
  8. ディープラーニングを使ってラドン変換像から元画像を予測する
  9. 文字画像の位相情報をディープラーニングで推定する:その1,その2
  10. 光渦を使って極端な低コントラスト画像を大きく改善する
  11. すりガラスを透過したボケ画像の元画像をディープラーニングで推測する
  12. 文字画像のフレネルホログラムをディープラーニングで推定する
  13. 焦点深度が超長いレンズを回折レンズで実現する
  14. 画像を使ってステガノグラフィを作ってみる
  15. ディープラーニングで色を学習し各色を分類する
  16. 画像の暗号化と復号化;暗号化の強さをディープラーニングで検証する
  17. 拡散板を使ったレンズレスカメラの動作を検証する
  18. 散乱体の中で光を集光させる
  19. ChatGPTを使ってアスキーアートを作ってみる
  20. 経路中の擾乱が時間変化しても可能な画像の記録復元
  21. ピンホールアレイを使った立体カメラ
  22. スーモース配列を使ったゾンプレートレンズの2重焦点
  23. ディープラーニングを使ってエッジ画像から物体像を再生する
  24. 低コヒーレンス干渉法による物体内部の計測シュミレーション
  25. タイムオブフライトカメラで物体の形状や距離を測定する
  26. カラーホログラフィ

よく使った手続きとcode

繰り返し処理

繰り返し処理の方法はたくさんありますが条件を入れやすく使いやすかったのが次に示す Label を入れて条件を満たすまで GotoLabel に戻すものでした。 例として次のコードはレンズからの出射光を横から見た画面を得るものです。レンズからの距離をステップで変えその点の像を加算して作りました。

直径 180 の Disk レンズを含む矩形 fnar の Dimensions = {360, 360}, 波長 λ = 1, 波数 k = 2 Pi/λ, 焦点距離 ff = 200*λ, 距離の最小値 zmin = 50*λ, 最大値 zmax = 400*λ, ステップ値 dz = 20*λ, 画像の中央値 k1 = 180 として

レンズは下にあり、くびれが焦点です。

ディープラーニング

ディープラーニングは WOLFRAM NEURAL NET REPOSITORY に掲載の "Pix2pix Photo - to - Street - Map Translation" のコードを主に利用して行いました。

その他テーマの名称から推定されますようにいろいろ面白い働きをするプログラミングを載せています。公開されている Wolfram Research の REPOSITORY や Google Colaboratory から借用したものもありますが、その他はほぼ独自に試行錯誤しながら作りました。それについては私の HP を見ていただきたいと思います。

おわりに

Mathematica の良さの一つはコマンドが意味のある言葉でできているため、他の人が書いたプログラムを理解するのが比較的容易であることと思います。このことを前提に私の HP には使ったコードをすべて載せています。Mathematica に対して初学者の皆さんに使ってみようとする動機づけになれば幸いと思います。

※編集者注:本ブログ掲載に関して、畠山巖様のご協力に感謝いたします。