Octave には2次元のフーリエ変換が組み込まれています. これを利用してフーリエ変換ホログラムを生成できます. 下記の例では,画像を読み込んでフーリエ変換ホログラムを計算しています. 画像は png 形式の 8 ビットグレースケールで 256 x 256 ピクセルの場合です. ランダム位相の行列部分はどうすればいいか考えてみてください.
% read file BMP = imread('moto.png'); % fft % ランダム位相の行列を計算する X = (要素がランダムに -1 または 1 の行列); BMP = sqrt(BMP); W0 = BMP .* X; W1 = real(ifftn(fftshift(W0))); fmax = max(W1(:)); fmin = min(W1(:)); W1 = (W1 - fmin) / (fmax - fmin) * 255.5; % write file imwrite(uint8(W1),'cgh.png'); % End of file
CGHの計算結果(cgh.png)
上記のCGHを見てもなんだか分かりません.像再生のシミュレーションをするとどんな画像が再生されるか分かります.
解説
(準備中)