qdmagi 发表于 2006-3-24 12:31

[求助]matlab来编码计算全息图

我现在正在做自己的论文:是要用matlab来编码计算全息图。有没有这方面的专家?
[此贴子已经被aspen于2006-3-25 9:01:55编辑过]

happy 发表于 2006-3-25 09:01

计算全息编码及再现程序

关键词: 迂回位相编码,傅里叶变换全息,全息再现
close all;clc;clear
A=zeros(64);
A(15:20,20:40)=1;A(15:50,20:25)=1;
A(45:50,20:40)=1;A(30:34,20:35)=1;
% ppp=exp(rand(64)*pi*2*i);A=A.*ppp;
% Author's email: zjliu2001@163.com
figure;imshow(abs(A),[]);
Fa=fft2(fftshift(A));Fs=fftshift(Fa);
Am=abs(Fs); % amplitude
Ph=angle(Fs); % phase
s=11;
cgh=zeros(64*s);
th=max(max(abs(Fs)));
qq=th/1.2;
Am(Am>qq)=qq;
q=1:s;w=(s+1)/2;
for m=1:64;
for n=1:64;
h=round(Am(m,n)/qq*(w-1)-0.5);
md=zeros(s);
if h>0;
td=ones(h*2+1,3);
Pm=round(Ph(m,n)/pi*3);
kz=Pm+w;
md(w-h:w+h,kz-1:kz+1)=td;
end
cgh((m-1)*s+q,(n-1)*s+q)=md;
end
end
figure;imshow(cgh,[]); % 迂回位相编码结果
Re=ifft2(cgh); Re=fftshift(Re);
figure;imshow(abs(Re),[]); % 再现图像
来自萝卜驿站

qdmagi 发表于 2006-3-26 09:26

谢谢教授!真的,非常感谢!

qdmagi 发表于 2006-3-26 17:51

把某幅图像利用imread函数读入后,想对该幅图像进行抽样?该怎么办呢?

happy 发表于 2006-3-26 18:18

把某幅图像利用imread函数读入后,想对该幅图像进行抽样?该怎么办呢?
那就要看你要按照什么抽样了

qdmagi 发表于 2006-3-26 18:25

谢谢教授的帮助。
其实,听起来挺简单的,就是一幅图像在matlab中是个矩阵,然后怎样改变这个矩阵的大小呢。
我是matlab的初学者,请教授多多帮助。
还有上面的程序中,
Am=abs(Fs); % amplitude
Ph=angle(Fs); % phase
s=11;
cgh=zeros(64*s);
th=max(max(abs(Fs)));
qq=th/1.2;
Am(Am>qq)=qq;
q=1:s;w=(s+1)/2;
for m=1:64;
for n=1:64;
h=round(Am(m,n)/qq*(w-1)-0.5);
md=zeros(s);
if h>0;
我感觉,h一定是大于0的。
很是不解?

happy 发表于 2006-3-26 18:39

如果是缩放的可以用命令imresize

如果是裁剪的话,可以用imcrop

如果是求图像中的部分点的话可以按照下面的例子

比如图像A是210*160*3

我要隔点取其中的点

=size(A);
B=A(1:2:m,1:2:n,:)

happy 发表于 2006-3-26 18:40

第二个问题我没仔细研究过,这个程序不是我写的

qdmagi 发表于 2006-3-26 18:40

好的
我知道了
谢谢教授!
页: [1]
查看完整版本: [求助]matlab来编码计算全息图