フーリエ変換CGHの計算

Octave には2次元のフーリエ変換が組み込まれています. これを利用してフーリエ変換ホログラムを生成できます. 下記の例では,画像を読み込んでフーリエ変換ホログラムを計算しています. 画像は png 形式の 8 ビットグレースケールで 256 x 256 ピクセルの場合です. ランダム位相の行列部分はどうすればいいか考えてみてください.


m ファイルの例

% 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

実行例


元画像(moto.png)


CGHの計算結果(cgh.png)

上記のCGHを見てもなんだか分かりません.像再生のシミュレーションをするとどんな画像が再生されるか分かります.

 

解説
 (準備中)


戻る