✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
ATM断层扫描(Airborne Topographic Mapper)是一种航空激光雷达测绘技术,用于获取地表高程数据和三维地形信息。下面是ATM断层扫描的基本工作原理:
- 数据采集:ATM系统安装在飞行器上,通常是飞机或直升机。它配备有激光雷达传感器和GPS/惯性导航系统。飞行器以一定的速度在目标区域上空飞行,同时激光雷达发射脉冲激光束。
- 激光测距:脉冲激光束从飞行器发射,经过大气层并照射到地面。当激光束与地面相交时,部分能量会被反射回传感器。
- 接收数据:ATM系统接收被反射回的激光脉冲,并记录相关信息,如时间、位置、激光强度等。
- 位置定位:通过GPS/惯性导航系统,获取飞行器在记录激光数据时的精确位置和姿态信息。
- 数据处理:将激光测得的高程数据与位置信息结合,在地球坐标系中生成点云数据集。此过程包括去除系统差、时间同步、辐射校正和地面特征提取等处理。
- 三维重建:基于点云数据集,可以进行三维地形重建。通过插值方法生成平滑的高程模型,并将其可视化为数字地图或影像。
ATM断层扫描技术具有较高的精度和分辨率,广泛应用于地质、地表变化监测、冰川测量、地形研究以及环境保护等领域。
⛄ 部分代码
clear all; close all%%%%%%%%%%%% Parameters %%%%%%%%%%%%%%%%% width = 1920; % width of original mask height = 1080; % height of original mask H = 500; % height of the side-lobe suppresed mask %%%%%%%%%%%% generating phase mask %%%%%% %pixel_y0 = 0;z = 1e+6;for i = 1:1080 for j = 1:1080 pixel_x(i,j) = (-540 + i); pixel_y(i,j) = (-540 + j); new_pixel_x(i,j)=cos(45/180*pi)*pixel_x(i,j)+sin(45/180*pi)*pixel_y(i,j); new_pixel_y(i,j)=cos(45/180*pi)*pixel_y(i,j)-sin(45/180*pi)*pixel_x(i,j); pixel_val(i,j) = 0.3*((new_pixel_x(i,j))^3 + (new_pixel_y(i,j))^3) ... - 0*(1*(pixel_x(i,j))^2 + 1*(pixel_y(i,j)-pixel_y0)^2) ... - 0 * pixel_y(i,j)^2; pixel_val(i,j) = pixel_val(i,j)/z; if (abs(pixel_val(i,j)) > (2*pi)) pixel_val(i,j) = mod(pixel_val(i,j), (2*pi)); else if (pixel_val(i,j) < 0) pixel_val(i,j) = (2*pi) + pixel_val(i,j); end end phasemask(i,j) = pixel_val(i,j)/2/pi; endendfigure(1);imshow(phasemask);%%%%%%%%%%%% side-lobe suppressed mask %%%%%%phasemask_b=phasemask(291:790,:);figure(2);imshow(phasemask_b);%%%%%%%%%%%% side-lobe suppressed mask with chirp %%%%%%lambda = 680e-9;focus = 20e-2;fsf = 8e-6;dx=1;dy=1;z0 =5e-3;[chirpX, chirpY] = meshgrid(((-539:1:540)+dx)/(lambda*focus/fsf),((-539:1:540)+dy)/(lambda*focus/fsf));chirp_angle = sqrt(max(0,lambda^(-2)-chirpX.^2-chirpY.^2));chirp_mask = phasemask*255/256*2*pi-2*pi*chirp_angle*z0;angle_total= (chirp_mask*256/2/pi-256*floor(chirp_mask/2/pi))/256;phasemask_c=angle_total(291:790,:);figure(3);imshow(phasemask_c);%}%%%%%%%%%%%% side-lobe suppressed mask with chirp with grating %%%%%% Grat_period=6; % period of grating for n=1:width % generating grating pixel(n)=mod(width-n,Grat_period)/Grat_period;end Grating=repmat(pixel,height,1); phasemask_d=phasemask_c+Grating(291:790,421:1500);for i=1:500 for j=1:1080 if phasemask_d(i,j)>1 phasemask_d(i,j)=phasemask_d(i,j)-1;end endendfigure(4);imshow(phasemask_d);%%%%%%%%%%%%%%%%%%%rotation for S2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Grat_period=50; % period of grating for n=1:width % generating grating pixel(n)=mod(width-n,Grat_period)/Grat_period;end Grating=repmat(pixel,height,1); theta=45; %%%% angel for rotation for i = 1:1530 for j = 1:1530 pixel_x(i,j) = (-765 + i); pixel_y(i,j) = (-765 + j); new_pixel_x(i,j)=cos((theta+45)/180*pi)*pixel_x(i,j)+sin((theta+45)/180*pi)*pixel_y(i,j); new_pixel_y(i,j)=cos((theta+45)/180*pi)*pixel_y(i,j)-sin((theta+45)/180*pi)*pixel_x(i,j); pixel_val(i,j) = 0.17*((new_pixel_x(i,j))^3 + (new_pixel_y(i,j))^3) ... - 0*(1*(pixel_x(i,j))^2 + 1*(pixel_y(i,j)-pixel_y0)^2) ... - 0 * pixel_y(i,j)^2; pixel_val(i,j) = pixel_val(i,j)/z; if (abs(pixel_val(i,j)) > (2*pi)) pixel_val(i,j) = mod(pixel_val(i,j), (2*pi)); else if (pixel_val(i,j) < 0) pixel_val(i,j) = (2*pi) + pixel_val(i,j); end end phasemask(i,j) = pixel_val(i,j)/2/pi; end end %%%%%%%%%%%%%%%cut the mask%%%%%%%%%%%%%%%%%%%%%%%%%%% phase_1=zeros(1920,1920); phase_1(421:1500,421:1500)=phasemask(226:1305,226:1305); phase_1=phase_1(421:1500,:);for i=1:height for j=1:width if phase_1(i,j)>1 phase_1(i,j)=phase_1(i,j)-1; end endend pixel_val2=ones(500,1530); piexl_val3= imrotate(pixel_val2,theta); [sizex,sizey]=size(piexl_val3); if sizex>1080 x1=floor((sizex-1080)/2); piexl_val3=piexl_val3(x1:x1+1080-1,:); end if sizey>1080 y1=floor((sizey-1080)/2); piexl_val3=piexl_val3(:,y1:y1+1080-1); end phasemask=piexl_val3;image_grating1 = zeros(1080,1920);[maskx,masky]=size(phasemask); XX=floor((1080-maskx)/2)+1; YY=floor((1920-masky)/2)+1;image_grating2=image_grating1(XX:XX+maskx-1,YY:YY+masky-1);SS=image_grating2.*(~logical(phasemask))+phasemask;image_grating1(XX:XX+maskx-1,YY:YY+masky-1)=SS;image_pm = zeros(1080,1920);image_pm =image_grating1;image_pm_not=not(image_pm);image_2=image_pm_not.*Grating;phasemask=phase_1.*image_pm+image_2;figure(5);imshow(phasemask);
⛄ 运行结果
⛄ 参考文献
[1] 陈宗桂,董晓军,管海辰,等.基于GUI的计算机断层成像仿真系统的研究与实现[J].实验技术与管理, 2022(009):039.
[2] 张汝楠,孙丽萍.利用Matlab实现原木CT断层图像的三维重建[J].木材加工机械, 2008, 19(4):4.DOI:10.3969/j.issn.1001-036X.2008.04.007.
[3] 张旭良,童隆正.X线机械断层的仿真系统一用MATLAB虚拟X线断层(二)[J].医疗装备, 2000, 13(12):2.DOI:CNKI:SUN:YLZB.0.2000-12-000.