• angciesun
    了解作者
  • matlab
    开发工具
  • 1.1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 5 积分
    下载积分
  • 0
    下载次数
  • 2022-05-29 14:01
    上传日期
罗曼iii型编码,用于编码全息片,matlab
romanhologram.zip
  • romanhologram.m
    1.8KB
内容介绍
clear clc %读入原始图像 Image1=imread('1.jpg'); Image=imresize(Image1,[1024,1024]); % imwrite(Image,'1.jpg'); % imshow(Image1); % Image=rgb2gray(Image); imshow(Image); %% N=1024; A=zeros(N,N); B=zeros(N,N); for I=1:1:N for J=1:1:N ImageNum=double(Image(I,J,1)); A(I,J)=ImageNum/255; % A(I,J)=Image/255; % B(I,J)=0; end end figure imshow(A); %% %罗曼III型编码方式 pi=3.1415926; F=zeros(N,N); for I=1:1:N for J=1:1:N R=rand(1,1);%生成一个元素在0,1之间均匀分布的随机矩阵R B(I,J)=A(I,J)*sin(R*2*pi);%每一个抽样数据乘以单位振幅指数exp(1i*2*pi*R),以平滑傅里叶变换谱 A(I,J)=A(I,J)*cos(R*2*pi); F(I,J)=A(I,J)+1i*B(I,J); end end%限制振幅的动态范围,提高编码的精度 F=fftshift(fft2(F));%作二维快速傅里叶变换FFT,求F的频谱 %以下是用matlab分别计算函数各抽样点的傅里叶变换谱的幅角与模,并对各点的模归一化 F1=abs(F); % fai_1=mod(angle(F),2*pi); Max1=max(max(F1)); F_m=F/Max1; A=real(F_m); B=imag(F_m); alpha=0.5;%定义载波参数aIpha for I=1:1:N for J=1:1:N Xcos=(J-1)/127; % Xcos=J/128; A1(I,J)=cos(2*pi*alpha*Xcos); B1(I,J)=sin(2*pi*alpha*Xcos); end end %全息图数据区 for I=1:1:N for J=1:1:N Holodata(I,J)=0.5+0.5*(A(I,J)*A1(I,J)+B(I,J)*B1(I,J)); % Holodata(I,J)=0.5*A(I,J)+0.5*(A(I,J)*A1(I,J)+B(I,J)*B1(I,J)); end end %% M=512;N=512;%定义全息图的大小 Hologram=zeros(M,N); S=1; % S=M/N;%定义每个抽样单元大小 for I=1:1:M for J=1:1:N Xa=(J-1)*S+1; Xb=J*S; Ya=(I-1)*S+1; Yb=I*S; for Ix=Xa:1:Xb for Iy=Ya:1:Yb Hologram(Iy,Ix)=Holodata(I,J); end end end end Max=max(max(Hologram)); Hologram=Hologram/Max; figure; imshow(Hologram);
评论
    相关推荐