計算機ホログラムの独学事始め

2019年度から少しずつ勉強を始めた計算機ホログラムおよびホログラフィー．
最近は[HODIC（ホログラフィック・ディスプレイ研究会）](http://www.hodic.org/)の学生会員にも数年ぶりに復帰し，数年越しにやっと実践と勉強の両立ができるポジションに立てたな，という感慨もあります．

一方，一から懇切丁寧に教えてくれる人がいたわけではなかったので，独学of独学状態でここまで来てしまいました（つらい）．
「ノウハウは公開してなんぼ」
「人に教えることで自分が成長する」
というもう一人の自分の声に向き合って，できる限りで書いていこうと思いますし，聞かれたら答えていこうと思います．

## 前提の前提
光学に関して全くの基礎知識or実践経験がないと流石にキツイので，そういった方は何かしらの教材で軽く勉強してからがいいと思います．

[『はじめての光学』](https://amzn.to/2Gygmvj)
<img width="300" alt="41VpJhHeryL._SX346_BO1,204,203,200_.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68689/00257d30-e5cd-deaa-0a8b-3fa60c235e95.jpeg">

僕はずいぶん昔にこの本を買って持っていたので，ここからスタートしました．
他には[『ヘクト光学』](https://amzn.to/2uB5kmr)や[『ファインマン物理学』〈2〉光・熱・波動](https://amzn.to/2Gt4vyO)も少し読みましたが，基本は何でもいいと思います．
相性が良さそうな本からスタートしてみてください．

## 絶対に読むべき本
[『ホログラフィ入門』](https://amzn.to/3101XBu)
<img width="300" alt="517MU9RWbIL._SX351_BO1,204,203,200_.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68689/635e0026-70b9-5c14-607f-cade6fbcb3e0.jpeg">


はい．この本を絶対買って読んでください．
計算機ホログラムを独習するなら，これ以上に役立つ教材は滅多にないことでしょう．

2017年発売の本です．
いやー，この本がある時期に勉強を開始できて良かった（伊藤先生・下馬場先生ありがとうございます）．


```
【主な内容】
第1章 光波とホログラフィの基礎
第2章 電子ホログラフィと3次元映像
第3章 回折
第4章 デジタルホログラフィと3次元計測
第5章 ホログラフィの応用事例
```

**第２章で点群ベースの計算機ホログラム**（Computer Generated Hologram）について，**第３章で回折伝搬**について扱われていて，勉強内容的にはかなり中核となります．
この本の特に嬉しいポイントは，要所要所にC言語ベースのプログラムが書いてあることです．

僕はC言語がそんなに得意でなく不慣れだったので，それらのコードを参考に全部pythonで書いていきました．
自分でシミュレーションコードを書いて，試しながら結果を見比べるのは何にも増して良い勉強方法の１つだと思います．
今後，タイミングがあればgithubで公開していきたいところですね．

## 世の中で配布されているソースコード類
計算機ホログラムやホログラフィー関連で，いくつかのソースコードやライブラリが世の中ではオープンに公開されています．
参考になったり，実際にそっちの方が使い勝手が良い場合もあると思うので，まとめておきます．

### ホログラム全般（国内）
#### CWO++library
『ホログラフィ入門』を執筆された伊藤先生・下馬場先生らが公開してくれているライブラリです．
以下のリンクにライブラリに関する公式ページがあり，各関数関連の説明もあります．
http://cwolibrary.sourceforge.net/

以下のリンクからダウンロードができるのですが，１点注意が必要です．
https://sourceforge.net/projects/cwolibrary/?source=directory

このリンク先からダウンロードしてVisual Studioのソリューションファイル等を手元に揃えられるのですが，.cpp, .h, .dll, .libのファイルが一見すると足りません．
https://sourceforge.net/projects/cwolibrary/files/cwo0.32/
こちらのページにあるように，サンプルのzipとそうでないzipの両方をダウンロードして，適切な相対リンク下に配置しないといけません．
ここだけ注意です．

ただ，そこを突破すればサンプルコードは動かせました．
環境としてはMacにVirtual BoxでWindows10環境を用意し，Visual Studio 2019で実行しました．

#### Wave Field Library (WFL)
関西大学の松島先生の研究室から公開されているライブラリです．
ここの研究室からはこのライブラリにとどまらず，様々なライブラリ・アプリケーションが公開されているので，手で動かしながら学ぶのに良いかもしれません．
http://www.laser.ee.kansai-u.ac.jp/WaveFieldTools/download/download.html

僕はいくつかのアプリケーションは触りましたが，まだWave Field Libraryを使った実装にまではたどり着けていないです．
Wave Field LibraryのドキュメントはPDFで丁寧に公開・配布されていたので凄く助かりそうな気配を感じています．

### デジタルホログラフィ（海外）
#### HoloPy
ここまでは国内のWindows環境ベースかつC言語ベースのライブラリを示してきましたが，一転Pythonのライブラリです．
https://github.com/manoharan-lab/holopy

githubでの開発もいまだにそこそこアクティブで，長くメンテナンス・改良が積み重ねられてきているのだなぁ，というところです．

"HoloPy Holograpy and Light Scattering in Python | SciPy 2014 | Tom Dimiduk, Rebecca Perry, Vinotha"
[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/uW6bMEcFX4A/0.jpg)](http://www.youtube.com/watch?v=uW6bMEcFX4A)

"How Interactive Visualization Led to Insights in Digital Holographic Microscopy | SciPy 2014 | Rebec"
[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/-IjIpX8QsAM/0.jpg)](http://www.youtube.com/watch?v=-IjIpX8QsAM)

2014年のSciPy ConferenceでGPU実装をした話がされていたのも面白いなぁと見ていました．
当該コード↓
https://github.com/RebeccaWPerry/holography-gpu/tree/master/holopy/scattering


ただし気をつけなければいけないのは，計算機ホログラム（CGH）用のライブラリではなく，デジタルホログラフィ用のライブラリだということです．

## その他勉強用にオススメする資料
### 書籍
#### ホログラフィ入門
久保田先生の本です．
この本は僕がホログラムに触れた最初の本でした．
しかもこれを読んで，「専門家に会って話を聞いてみたい！そうだ，著者に連絡してみよう！」と連絡を取り，何の研究もしたこともないただの文系大学生若造（大学２年生）の研究室見学を快諾してくださった恩人の本です．
計算機ホログラムというよりは，原始的なホログラムの話ですが，参考になると思います．
あと最初の数ページにある本物のホログラムを見るだけでも価値があります．

[『ホログラフィ入門』](https://amzn.to/2O4uctD)
<img width="300" alt="41JJ8WM64RL._SX298_BO1,204,203,200_.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68689/7dd6bdec-0914-a2ed-e750-ea342da8da80.jpeg">

#### フーリエ光学
回折関連の計算式の記述等，専門的な数式が出てくると頻繁に引用されているのがこの本です．
「詳しい導出はこの本に預けます」みたいな記述を何度見たことか．

しかしながら，一度手にとって読んでみるとその偉大さが身に染みるはずです．
確かに名著と言われるわけだ．

個人的には，瞳関数に位相を持たせて一般化瞳関数として扱う時の数式を探していた時にこの本で発見して最高の気分になりました．

ただ日本語版の新刊がもう出ていないのか，中古の値上がりしたものしかamazonにはないです...
早く僕も買いたいのですが，どこかで適正価格で売ってないですかね...

[『フーリエ光学』](https://amzn.to/37xH6rU)
<img width="300" alt="51bjZMlc4kL._SX355_BO1,204,203,200_.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68689/b2cff1df-2b5c-6f30-2a9b-710c74b793b4.jpeg">


#### ホログラフィ
何かで引用されているのを見て手にとってみたのですが，なぜこれを早くに手に取らなかったのかと後悔にかられた一冊です．
伊藤先生らの『ホログラフィ入門』は確かに入門とつくだけあって初学者の僕にも凄く取っつきやすかったのですが，「ホログラフィについてもっと細かいところを知りたい」となった時に助けてくれそうなのが，大越先生のホログラフィです．

まだあまり読み込めていないので，ざっくり見た上での感想しか書けていないですが，多分これから読み込んでいくことになりそうです．

（図書館とかにしかなさそうな雰囲気）

[『ホログラフィ』](https://amzn.to/38Hnd1z)


#### 光とフーリエ変換
フレネル回折を実装する時にフーリエ変換を用いた実装をしたりするわけですが，そうした光とフーリエ変換の関係にフォーカスした１冊です．
伊藤先生らの『ホログラフィ入門』と一部導出が異なる（異なる前提条件を定義）ので，そうした違いにも注目しながら理解を進めると勉強になると思います．

[『光とフーリエ変換』](https://amzn.to/36vXkR8)
<img width="300" alt="41-lodXieXL._SX341_BO1,204,203,200_.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68689/d6106c61-be27-d3a3-bf76-84753aedda90.jpeg">


### 卒論〜修論〜博論
「日本語でしっかり書かれた博論を読むことは，専門書を読むことと等しく勉強になる」
というのはよく聞く通説ですが，まさにその通りだと思います．

伊藤先生らの研究室や松島先生の研究室の卒業生の文献には度々お世話になっております．
その中から２つほど例として載せさせていただきます．

- [３次元映像システムの実現に向けた計算機合成ホログラム高速計算技術 (2016)](https://core.ac.uk/download/pdf/96948459.pdf)
- [ホログラフィックプロジェクタの画質改善アルゴリズムおよび投影手法の検討 (2017)](https://core.ac.uk/download/pdf/153145843.pdf)

### HODICの会報
会員になれないと読めないものではありますが，当該分野の研究室に所属していない人間が独学する上では大変勉強になる資料が多くあると思います．
それと，今の界隈の空気感が掴みやすかったり，その界隈のレジェンドが誰かわかったりもするのでオススメです．
http://www.hodic.org/circular/index.html


## 最後に
今回の記事では，勉強するために必要な情報をまとめてきたという感じになりました．
まあ，回折の数式の具体的な導出とかは本を読んでくれ，になってしまいますし，自分が書いたソースコードはまだ公開できるかわからないので，それを使った実践みたいなことにもできなかったので...

ただ，これから独習する人が少しでもいばら道を行かずに済むよう，これまでに得てきた情報をそれなりにまとめたつもりです．
僕もまだまだ力をつけないといけないし（例えばGPU実装しないとなぁ，とか），一緒に頑張っていきましょう．

あと，御指南ください．
仲間や師匠を欲している！！！