从计算机读取图片设置 System Generator 一个优势是可以从计算机读取图像来进行仿真测试,这是我们需要使用“FromWorkspace”这个模块,以及编写相应的 “.M文件”,“FromWorkspace”这个模块我们在之前提及过,下面我们对编写 “.M文件”来进行阐述。 我们首先编写从计算机读取图像的 “.M”文件,从“New”菜单找到“Script”项,然后就保存为LoadImage_coinsgray.M 文件,编写下面的代码: %读取原始图像数据 SourceImage2D =imread('coins.png'); %得到图像的长宽尺寸 ImageWidth =size(SourceImage2D,2); ImageHeight =size(SourceImage2D,1); %将二维数组转换成一维数组 SourceImage1D = reshape(SourceImage2D',1,ImageWidth*ImageHeight); SourceImage1D =[SourceImage1D]; %按照格式形成Simulink的ToWorkspace模块要求的数据格式 SourceImage1D = [double(0:ImageWidth*ImageHeight-1)' double(SourceImage1D)']; %设置整个模块的输入到输出延时 DesignLatency = 1; 这里需要注意的是: 1. 图片coins.png必须在当前目录,否则必须加上路径来标注该文件; 2. SourceImage1D用来从FromWorkspace传输数据,其格式必须是多行两列的格式,而且必须是 double 类型,而且第一个列向量是从0开始的顺序索引; 3. Reshape 这里对SourceImage2D 进行了转置。 从Xilinx处理模块写入计算机设置 编写从Xilinx模块中读出的图像的“.M”文件,从“New”菜单找到“Script”项,然后就保存为ShowImage_coinsgray.M文件,编写下面的代码: %将DestImage1D一维数组转换成规定大小的DestImage2D二维数组 DestImage2D =reshape(DestImage1D(DesignLatency:DesignLatency+ImageHeight*ImageWidth-1),ImageWidth,ImageHeight); DestImage2D =DestImage2D'; %按照格式显示输入图像和输出图像 h = figure; clf; colormap(gray(256)); set(h,'Name','Results'); image(DestImage2D), axis off; 这里需要注意的是: 1. reshape中DestImage1D因为前面的处理的延迟,因此其数据索引从DesignLatency开始; 2. SourceImage2D 的转置,导致DestImage2D应该转置; ModelProperties 我们在搭建模型的空白处右键,选择“ModelProperties”,其模型属性窗口如下: Main是其主要信息介绍;
Callbacks是核心项,PreLoadFcn是预加载函数项,我们在其右侧添加我们预先写好的“.M文件”LoadImage_coinsgray。只要打开我们建好的模型,就执行LoadImage_coinsgray文件,从而可以从计算机中加载我们的图像;StopFcn是我们运行完仿真后的停止自动加载项,我们同样添加预先写好的ShowImage_coinsgray文件,从而在仿真结束时候自动执行ShowImage_coinsgray文件。当我们设置好Callbacks时,左侧的对应项里会有※号来作标志。
|