
Matlab程序用于处理数字全息图像。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
N设为512;A是一个维度为N×N的零矩阵,B也是一个维度为N×N的零矩阵。程序从1循环到256,在每次迭代中,I作为图像索引,ImageNum表示图像中第I行第J列像素的灰度值(以double类型存储),并将其除以255进行归一化处理,存储在A(I,J)中。同时,B(I,J)初始化为0。
随后,程序绘制了矩阵A的图像。π定义为3.1415926。
程序再次从1循环到N,内部循环从1循环到N。在每次迭代中,R为一个元素在0到1之间均匀分布的随机矩阵。B(I,J)计算公式为A(I,J)乘以sin(R*2*π),用于平滑函数的傅里叶变换谱。同时,A(I,J)乘以cos(R*2*π)。F(I,J)定义为A(I,J)加上j倍的B(I,J),其中j是虚数单位。
为了限制振幅的动态范围并提高编码精度,程序对F进行了二维快速傅里叶变换(FFT)。
最后,程序提取F的实部和虚部分别赋值给A和B。aIpha定义为0.5作为载波参数。
程序又一次从1循环到N,内部循环从1循环到N。在每次迭代中计算Xcos=(J-1)/127并将结果存储在A1(I,J)中;同时计算Xb=J*S、Ya=(I-1)*S+1、Yb=I*S等参数用于生成载波函数B1(I,J)。
接下来,程序定义了一个全息图数据区HoIodata,其值为0.5加上0.5乘以A(I,J)*A1(I,J)和B(I,J)*B1(I,J)的结果。
全息图的大小M和N都设置为512。
程序定义了每个抽样单元的大小S = M/N. 随后开始构建全息图Hologram矩阵:从1循环到N,内部循环从1循环到N. 遍历Xa到Xb以及Ya到Yb范围内的所有像素点Iy和Ix时,将HoIodata(I, J)的值赋给Hologram(Iy, Ix)。
全息图Hologram的最大值Max被计算出来并用于归一化处理:HoIogram的值除以Max进行缩放操作后绘制出来。
接着使用MATLAB分别计算该全息图各抽样点的傅里叶变换谱幅角与模值,并对各点的模值进行归一化处理。object变量存储了经过移谱后的频谱信息。利用fftshift函数将频谱中心移动至频谱中心位置以避免再现时像分散在边缘现象发生. 然后对object中的每个元素取绝对值并乘以一个系数 1000 ,最后除以最大模值 Max 以实现归一化处理. 最后绘制出归一化的频谱图像显示结果.
全部评论 (0)


