【物理应用】多种二维相位解包裹matlab算法
2021/7/9 14:36:23
本文主要是介绍【物理应用】多种二维相位解包裹matlab算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
二维相位解包裹根据Itoh方法,可以将一维相位解包裹推广到二维相位解包裹中,可以用以下式子来表示:
式中, 为 点的连续相位, 为起始的点的连续相位, 为相位图中连接点和点的任意路径, 为相位差。
拓展后的Itoh方法,要写成代码的话,逻辑其实和一维的情况是一样的,只是原来只遍历一个一维的矩阵(或者数组),现在变为了二维的矩阵(或数组),具体方法如下:
选取相位图中的某一行(列)作为起始行(列),遍历相位图的每一行(列),比较相邻两个点的相位值,若相邻两点的相位差大于 pi,则后一个点的相位加2pi ;若相邻两点的相位差小于-pi ,则后一个点的相位减2pi ;若相邻两点的相位差大于-pi且小于pi ,则不需要进行操作直接比较下一个位置。
二维相位解包裹路径问题
从二维相位解包裹的式子中可以看出来,这一个路径积分要保证每一次算出来的点连续相位都一样,那就应该是一个与路径无关的计算过程。但是在实际的相位解包裹的过程中可以发现,选择了不同的路径,往往得到的相位值也不一样,这是实际获取的相位图存在采样率不足导致的相位混叠、获取过程中引入的相位噪声、奇异点等因素导致的,这也导致了正确的二维相位解包裹,是一个与路径有关的问题。
正是因为解包裹过程与路径有关的问题,导致二维相位解包裹变得困难。
为了解决与路径有关的问题,相位解包裹其中一个大类也因此诞生了,空间(空域)相位解包裹(Spatial phase unwrapping),这类方法就是通过选择一条最优的路径去完成全图相位解包裹的,不过这留到以后的文章慢慢讲了。
fprintf('***************************************\n'); fprintf('2D Phase Unwrapping Demo\n'); fprintf('Please select the demo:\n'); fprintf('(1) No noise , no ignored region\n'); fprintf(' 2. With noise, no ignored region\n'); fprintf(' 3. No noise , with ignored region\n'); fprintf(' 4. With noise, with ignored region\n'); while (1) user_input = input('Your selection (1-4): ', 's'); user_input = strip(user_input); % if the user does not supply anything, select the default if strcmp(user_input, '') fprintf('Demo 1 is selected\n'); user_input = '1'; end if length(user_input) == 1 && sum(user_input == '1234') == 1 break; else fprintf('Invalid input\n'); end end [X, Y] = meshgrid(linspace(-1, 1, 512) * 5); img = -(X.*X + Y.*Y); fprintf('Image size: %dx%d pixels\n', size(img,1), size(img,2)); % add noise if any(user_input == '24') img = img + randn(size(X)) * 0.5; end % add an ignored region if any(user_input == '34') img(end/4:3*end/4,end/4:3*end/4) = nan; end % wrap the image wimg = wrapTo2Pi(img); tic; unwrap_img = unwrap_phase(wimg); toc; subplot(221); pcolor(img); shading flat; set(gca, 'ydir', 'reverse'); title('Original phase'); subplot(222); pcolor(wimg); shading flat; set(gca, 'ydir', 'reverse'); title('Wrapped phase'); subplot(223); pcolor(unwrap_img); shading flat; set(gca, 'ydir', 'reverse'); title('Unwrapped phase'); subplot(224); pcolor(wrapTo2Pi(unwrap_img)); shading flat; set(gca, 'ydir', 'reverse'); title('Rewrap of unwrapped phase');
这篇关于【物理应用】多种二维相位解包裹matlab算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22项目:远程温湿度检测系统
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南