主要内容

光学传感器图像生成

从模拟生成一个光学传感器图像运动数据

这个例子展示了如何生成一个电影64帧和当前帧大小为64×64像素(10帧每秒)。这部电影包含了一个模拟的一个移动的目标通过一个结构化的背景,本身就是运动。抖动运动引起的随机振动也生成(在仿真软件®模型称为“aero_vibrati”)和抖动运动添加到整个传感器运动。金宝app最后,通过高斯模糊图像光学点扩散函数。

注意:改变解决还需要改变参数设置对话框的“振动”仿真软件模型。金宝app

解决= 0.1;%样本时间序列生成的num_frames = 64;%的帧数来生成framesize = 64;%广场帧大小(以像素为单位)= 0 (framesize、framesize num_frames);%初始化数组存储作为3 d电影

生成一个目标和定义它的运动

第一阶段是定义的形状和运动目标对象。选择的形状是一个大型的加号,图像被定义为一个矩阵表示图像的强度在每个像素位置。从中心到定义的目标是图片的右下角。

目标= [0 (11)0 (1、5)6 0 (1、5)0 (1、5)6 0 (1、5)0 (1、3)6 6 6 6 6 0 (1、3)%的目标是一个加号5 5像素0 (1、5)6 0 (1、5)%的强度6 ~ 4(信噪比)。0 (1、5)6 0 (1、5)%的总目标图像是由11 x11网格0 (11)];%允许插值图像没有错误。target_velx = 1;%的目标速度在x方向上像素每秒target_vely = 1;%的目标速度在y方向上像素每秒target_x_initially = framesize / 2;%的目标是最初在x框架的中心target_y_initially = framesize / 2;%和y图(1);colormap (“灰色”);图像(目标* 32);标题(目标图像的)

构建背景和目标的复合图像

生成一个呈现正弦相关背景和给它一个漂移运动。然后,覆盖目标到背景图像上。

backsize = framesize + 36;%的背景所以当它大于帧%飘有新的像素可以漂移。xygrid = (1: backsize) / backsize;B = 2 * sin(2 *π* xygrid) ^ 2”* cos(2 *π* xygrid) ^ 2;psd = fft2 (B);psd =真正的(psd。*连词(psd));背景= B + 0.5 * randn (backsize);%添加高光高斯白%序列结构%的方差0.25(0.5σ)。发送葡开= 10;yoff = 10;%传感器位置偏移0,0的背景driftx = 1;drifty = 1;%漂移率的背景和y方向沥青/秒。minout =最小(最小(最小(背景)));maxout = max (max (max(背景)));colormap (“灰色”);图像((background-minout) * 64 / (maxout-minout))标题(背景图像与镜面加性白噪声的)

模拟跟踪器的旋转振动

跟踪器的旋转振动模拟aero_vibrati使用模型。模拟所需的数据跟踪器的振动是通过运行仿真软件模型生成“aero_vibrati”。金宝app

运行仿真金宝app软件振动模型使用sim命令(注意,如果解决从0.1秒,仿真软件模型也必须改变以确保样品的样品时间振动一致时间跟踪图像模型。

由此产生的随机旋转如图1所示。

ω= 2 *π* 5;%的结构频率5、10和15赫兹在模型中。ζ= 0.01;%所有模式的阻尼比open_system (“aero_vibrati”)simout = sim卡(“aero_vibrati”,“SrcWorkspace”,“当前”);vibdat = simout.get (“vibdat”);%的仿真软件金宝app模型“aero_vibrati”%生成振动数据%一个示例0.01秒的时间。vibx = vibdat (1:10:1000);%仿真的输出%作为变量simout返回%变量simout包含viby = vibdat (1001:10:2000);%的vibdat包含数组%的振动数据levarmx = 10;x %转动杠杆臂的振动噪声levarmy = 10;%,在y。次要情节(211);图(0.01 * (1:10:1000),vibx);网格;标题(“时间随机跟踪器旋转的历史”)包含(“时间”);ylabel (“x方向”)次要情节(212);图(0.01 * (1:10:1000),viby);网格;包含(“时间”);ylabel (“y方向”)

模拟运动影响的背景,目标,和抖动

帧,将电影现在创建并存储在一个多维数组(了)。每一帧的背景和目标在不同位置由于目标运动,背景漂移,跟踪器振动。电影的第一帧将图1所示。

clf;drawnow;t = 1: num_frames%漂移率driftx和drifty背景%(像素/秒)和添加振动:xshift = t + levarmx driftx *解决* * vibx (t, 1);yshift = t + levarmy drifty *解决* * viby (t, 1);%插入2 d图像使用MATLAB (R)函数interp2:[xgrid, ygrid] = meshgrid (1: backsize);[xindex, yindex] = meshgrid (xshift: 1: xshift + backsize yshift: 1: yshift + backsize);outtemp = interp2 (xgrid、ygrid、背景、xindex yindex);%截断漂移图像从backsize framesize:(:,:,t) = outtemp(发送葡开:发送葡开+ framesize-1发送葡开:发送葡开+ framesize-1);%现在也让目标:tpixinx =地板(target_velx *解决* t);tpixiny =地板(target_vely *解决* t);%之前插值提取像素移动的数量txi = target_velx *解决* t - tpixinx;tyi = target_vely *解决* t - tpixiny;%插入在分配原点[txgrid tygrid] = meshgrid (1:11);% meshgrid这里生成一个网格元素的矩阵[txi tyi] = meshgrid (tyi txi + 1: txi + 11 + 1: tyi + 11);% meshgrid生成2 x和y网格矩阵%插入强度值首先使用interp2——建在MATLAB命令temp = interp2 (txgrid tygrid,目标,txi tyi);%插入目标由初始位置偏移,和整个像素的数量tx = tpixinx + target_x_initially-1;泰= tpixiny + target_y_initially-1;(tx: tx + 6,泰:泰+ 6,t) = temp(9: 1:3, 9: 1:3) +出(tx: tx + 6,泰:泰+ 6,t);结束minout = min (min (min ()));maxout = max (max (max ()));colormap (“灰色”);图像(((:,:1)-minout) * 64 / (maxout-minout));标题(第一帧的目标和背景图像相结合。”)

图像通过光学——使用高斯“孔径函数”

这个代码段可以使用一个测量孔径函数很容易——简单地替换下五行“负载measured_aperture”measured_aperture测量函数存储在measured_aperture ASCII和存储的数据文件。垫是一个MATLAB®.mat apfunction文件包含矩阵。(在MATLAB类型“帮助负载”如何使用加载和看c和fortran的代码显示了如何读和写MATLAB .mat文件)。

(注意:当高斯点扩散函数,那么孔径函数)

模拟光学跟踪的效果,现在电影的每一帧模糊使用二维FFT(快速傅里叶变换)。第一帧的图像如图1所示。

x = 1: framesize;y = 1: framesize;σ= 120;apfunction = exp (- (x-framesize / 2) ^ 2 /(2 *σ))的* exp (- (y-framesize / 2) ^ 2 /(2 *σ));apfunction = fftshift (apfunction);%旋转符合FFT公约j = 1: num_frames (:,:, j) =实际(ifft2 (apfunction。* fft2 ((:,:, j))));结束minout = min (min (min ()));maxout = max (max (max ()));colormap (“灰色”);图像(((:,:1)-minout) * 64 / (maxout-minout));标题(第一帧的模糊图像。)

生成MATLAB®电影和玩

电影帧,这样规模有64从最小到最大强度值作为图像,然后显示结果。看到MATLAB帮助moviein和getframe是如何工作的。

minout = min (min (min ()));maxout = max (max (max ()));M = moviein (num_frames);j = 1: num_frames图像(((:,:,j) -minout) * 64 / (maxout-minout)) drawnow M (:, j) = getframe;结束% colormap(灰色)%的电影(M);

可选:保存电影.mat文件中

您可以选择保存在垫子上生成的跟踪电影文件也保存psd的背景与电影供以后使用。

保存trackerimage保存psdbackpsd保存moviedat
bdclose (“aero_vibrati”);

相关的话题