matlab仿真实现单峰物体复原–光栅投影-多频外差

多频外差

关于多频外差上一章已经讲到,其中关于处理步骤不太详细,这里会结合代码来进行讲解.代码是在理想环境下模拟调制后的图像,并用多频外差进行求解主项位值。

%  目标  条栅三维重建并用三频四相法解包裹相位
% 参数设置
% 画布大小
W = 1024;
H = 1140;% 三个不同的频率  保证最后计算出来的等效周期大于整幅图像
f = [70 64 59];
%T = [1/70 1/64 1/59];
T = [H/70 H/64 H/59];
A = 1; % 背景光强
B = 1; % 调制光强
% 模型参数
d = 20; % 投影仪与相机的距离
l = 100; % 相机与参考面之间的距离% 生成条纹图像
Ce1 = cell(3,4);   % 用来存储调制前的条纹图像
for i = 1:3for j = 1:4Ce1{i,j} = zeros(W,H);end
end
for i=1:3pha = linspace(0,f(i)*2*pi,H);pha = repmat(pha' ,1, W);for j = 0:3I0 = A + B * cos( pha' + j*pi/2 ); %光强Ce1{i,j+1}=I0;%记录光强end
end
% 归一化处理
for i = 1:3for j = 1:4Ce1{i,j} = mat2gray(Ce1{i,j});end
end
% 打印条纹图像
% for i = 1:3
%     for j = 1:4
%          tmp=Ce1{i,j};
%          if i==1
%            figure(j); %弹出窗口
%            imshow(Ce1{i,j},[]); %图像显示
%          elseif i>1
%            figure(2.^(i)+j); % 弹出窗口
%            imshow(Ce1{i,j},[]);  %图像显示
%
%          end
%     end
% end% 生成物体
h = halfball(65,512,570); % m  球半径150m心坐标(256,256)仿真假设一个像素为1mm
figure(2);mesh(h);colormap(jet);set(gcf,'Name','原半球物体','NumberTitle','off');shading interp;
% 计算调制后的图像
% 因为是仿真,所以这里调制后的条纹图像表达式可以根据第一章的高度相位公式进行反推 将高度当成  %  已知量
Ce2 = cell(3,4);
for i = 1:3for j = 1:4Ce2{i,j} = zeros(W,H);end
end
de = zeros(W,H);
for i=1:3pha = linspace(0,f(i)*2*pi,H);pha = repmat(pha' ,1, W);    de = 2*pi*d*h ./((l-h)*T(i));for j = 0:3Ir = A + B * cos( pha'+j*pi/2  + de ); %光强Ce2{i,j+1}=Ir;end
end% 打印条纹图像
% for i = 1:3
%     for j = 1:4
%          tmp=Ce2{i,j};
%          if i==1
%            figure(j); %弹出窗口
%            imshow(Ce2{i,j},[]); %图像显示
%          elseif i>1
%            figure(2.^(i)+j); % 弹出窗口
%            imshow(Ce2{i,j},[]);  %图像显示
%
%          end
%     end
% end% 求解参考面的包裹相位
pha_C1 = atan2(Ce1{1,4}-Ce1{1,2}, Ce1{1,1}- Ce1{1,3});
pha_C2 = atan2(Ce1{2,4}-Ce1{2,2}, Ce1{2,1}- Ce1{2,3});
pha_C3 = atan2(Ce1{3,4}-Ce1{3,2}, Ce1{3,1}- Ce1{3,3});
% 求解物品面的包裹相位
pha_W1 = atan2(Ce2{1,4}-Ce2{1,2}, Ce2{1,1}- Ce2{1,3});
pha_W2 = atan2(Ce2{2,4}-Ce2{2,2}, Ce2{2,1}- Ce2{2,3});
pha_W3 = atan2(Ce2{3,4}-Ce2{3,2}, Ce2{3,1}- Ce2{3,3});
% figure(30);
% mesh(pha_W2);% 求解等效周期
T12 = (T(1) * T(2)) / (T(2) - T(1));
T23 = (T(2) * T(3)) / (T(3) - T(2));
T123 = (T12 * T23) / (T23 - T12);% 将参考面的截断相位映射到0-2pi
pha_C1(pha_C1 < 0) = pha_C1(pha_C1 < 0) + 2*pi ;
pha_C2(pha_C2 < 0) = pha_C2(pha_C2 < 0) + 2*pi ;
pha_C3(pha_C3 < 0) = pha_C3(pha_C3 < 0) + 2*pi ;pha_W1(pha_W1 < 0) = pha_W1(pha_W1 < 0) + 2*pi ;
pha_W2(pha_W2 < 0) = pha_W2(pha_W2 < 0) + 2*pi ;
pha_W3(pha_W3 < 0) = pha_W3(pha_W3 < 0) + 2*pi ;% 计算参考面外差
pha_C12 = pha_C1 - pha_C2;
pha_C12(pha_C12 < 0) = pha_C12(pha_C12 < 0) + 2*pi;
pha_C23 = pha_C2 - pha_C3;
pha_C23(pha_C23 < 0) = pha_C23(pha_C23 < 0) + 2*pi;
pha_C123 = pha_C12 - pha_C23;
pha_C123(pha_C123 < 0) = pha_C123(pha_C123 < 0) + 2*pi;% 计算物品面
pha_W12 = pha_W1 - pha_W2;
pha_W12(pha_W12 < 0) = pha_W12(pha_W12 < 0) + 2*pi;
pha_W23 = pha_W2 - pha_W3;
pha_W23(pha_W23 < 0) = pha_W23(pha_W23 < 0) + 2*pi;
pha_W123 = pha_W12 - pha_W23;
pha_W123(pha_W123 < 0) = pha_W123(pha_W123 < 0) + 2*pi;% 求解参考面的绝对相位选择频率最高的那个
% 这里要注意求解顺序,要先用求的得pha_W123这个绝对相位对pha_W23或者pha_W12进行展开,%再利用已经展开的绝对相位展开pha_W1,pha_W2,pha_W3  对参考平面的展开也是如此
K_C23 = round((pha_C123*T123/T23 - pha_C23)/ (2*pi) );
pha_TC23 = pha_C23 + 2*pi*K_C23;
% figure(18);
% mesh(pha_TC23);K_C1= round((pha_TC23*T23/T(1) - pha_C1)/ (2*pi));
pha_TC1 = pha_C1 + 2*pi*K_C1;
figure(18);
mesh(pha_TC1);K_W23 = round(((pha_W123*T123)/T23 - pha_W23)/ (2*pi));
pha_TW23 = pha_W23 + 2*pi*K_W23;
% figure(19);
% mesh(pha_TW23);K_W1 = round(((pha_TW23*T23)/T(1)- pha_W1)/ (2*pi));
pha_TW1 = pha_W1 + 2*pi*K_W1;
figure(19);
mesh(pha_TW1);% 求解实际物体高度
ph =   pha_TW1-pha_TC1;
Th = (ph*T(1)*l)./(ph*T(1)+(2*pi)*d);
figure(20);
mesh(Th);bb = h - Th;
sum = 0;
for i = 1:Wfor j = 1:Hsum = sum + bb(i,j);end
end
sum;function output = halfball(r,x,y)  % 半球绘制函数temp = zeros(1024,1140);for m = 1:1024for n = 1:1140if((m-x)^2 + (n-y)^2 < r^2)temp(m,n) = sqrt(r^2 - (x-m)^2 - (y-n)^2);endendendoutput = temp;end

代码和注释应该比较详细,相信对照原理可以顺着读下来。
学习注定是个漫长的过程,如有错误欢迎指正,留下博客更多的是对自己的学习过程进行梳理和总结。禁止转载哦!

matlab实现单峰物体复原--光栅投影-多频外差相关推荐

  1. matlab 控制投影仪 正弦光栅,一种基于投影仪散焦解相位的光栅投影三维快速测量方法...

    一种基于投影仪散焦解相位的光栅投影三维快速测量方法 [技术领域] [0001] 本发明涉及三维信息重构领域,尤其是一种基于投影仪散焦解相位的光栅投影三 维快速测量方法. [背景技术] [0002] 光 ...

  2. 3.6总结半年来的专业学习——图像处理、光栅投影、四步相移、多频外差,从matlab入门到opencv入门

    2019.9.17 研究生导师定了,老师给了一些论文,并推荐了几本书 1.计算机辅助光学测量/金观昌著 作者是在美国奥克兰大学杨老师实验室做过访问学者,所以书的内容和实验室的研究方向非常切合 2.基于 ...

  3. 基于光栅投影的三维重建

    基于光栅投影的三维重建 客观物体在空间上是三维的,但是人们从客观景物上得到的图像往往是二维的.光栅投影就是通过获取的二维信息来反映并还原物体的三维信息. 一.三维形貌测量技术的发展 三维形貌测量技术又 ...

  4. 基于数字光栅投影的结构光三维测量技术

    概述 欢迎访问 持续更新:https://cgabc.xyz/posts/fb344124/ 本文是在读了论文<基于数字光栅投影的结构光三维测量技术与系统研究>[1]之后做的学习总结,方便 ...

  5. 结构光三维测量(数字光栅投影)

    结构光三维测量(数字光栅投影) 结构光三维测量系统 单目测量系统 双目测量系统 单目系统测量实例 光栅生成 三维点云重建 结构光三维测量系统 目前对于三维视觉来说,有很多种技术,例如双目/多目视觉法. ...

  6. 基于数字光栅投影的结构光三维测量技术与系统研究

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文末福利:按描述操作,可获取原书籍电子版. [摘要] 相位测量轮廓术是目前使用最为广泛的一种结构光三维 ...

  7. 光栅投影中Gamma校正

    学习 郑东亮 达飞鹏 <提高数字光栅投影测量系统精度的gamma校正技术>一文后,对其中的关键技术进行了解析. 摄像机获得的实际灰度图像: 其中是整个系统的gamma值,是预编码值(需要根 ...

  8. matlab中投影,MATLAB在极射赤平投影中的应用

    文章编号: 100926825 (2010) 360357202 MATLAB在极射赤平投影中的应用 收稿日期: 20100822 作者简介:潘冀川 (1988) ,男 ,石家庄经济学院本科生 ,河北 ...

  9. 生成多频外差的光栅图像【Matlab】

    背景介绍 在matlab中生成多频外差的光栅图像,其中3种频率的选择参考如下文献: Liu S , Feng W , Zhang Q , et al. Three-dimensional shape ...

  10. 快速三维重建 快速光栅投影

    以前做的三维扫描设备的打光速度不高,主要受限于HDMI的数据传输和非触发相机采集的关系. 最近搞了一款可以带触发的投影仪终于可以实现快速光栅投射了,投影仪帧率120,相机帧率36.具体如下: 1:将光 ...

最新文章

  1. 归档程序错误。在释放之前仅限于内部连接
  2. PE文件感染和内存驻留
  3. java中rhino什么用_使用require.js和Java / Rhino解析模块
  4. Linux系统编程二:字符设备控制之点亮LED灯、控制蜂鸣器
  5. 重放攻击与中间人攻击
  6. 一键修改QQ运动刷步助手 V3.0
  7. 看了它就能看懂心电图室大部分心电图
  8. jpeg图片的exif信息
  9. .bat 常用命令
  10. TensorFlow学习(11)——卷积神经网络
  11. 2023轻薄投影仪首选:极米Z6X Pro入手超值!
  12. 名帖35 吴叡 隶书《离骚》
  13. 工程师的基本功是什么?听听美团技术大咖怎么说
  14. Python制作日历
  15. 宣传片制作的十大步骤
  16. 高德地图开发(一、引入地图)
  17. python如何实现歌单 黑胶品质?
  18. 怎么保证在多线程任务都执行完后再执行某一动作 CountDownLatch
  19. 硬盘安装SnowLeopard(Mac OS)
  20. #230 指针练习之最值问题

热门文章

  1. cadence 617工艺库安装以及相关问题解决
  2. matlab检验数据异方差,怀特异方差检验方法在matlab中的实现,以及广义最.....
  3. Windows 7无法启用网络发现的处理办法
  4. android多开技术,多开常见配置 - 技术交流 - 逍遥安卓论坛 - Powered by Discuz!
  5. 大模型落地实践:同花顺大模型技术应用及优化
  6. matlab电磁铁磁场,Matlab在电磁铁设计计算中的应用
  7. 开发人员聚焦:布兰登·里德(Brandon Reid)
  8. PowerDesigne 建立概念数据模型
  9. Linux中出现 xxx is not in the sudoers file.This incident will be reported.
  10. 苹果mac系统在文件栏添加文件夹的方法