陈邓安,沈培志,王子明
(海军航空工程学院,山东烟台 264001)
武器射击和战斗过程是随机过程,通过建立一个随机过程概率模型,使其参数等于问题的解,然后通过对随机过程概率模型的观察抽样试验,计算所求参数的统计特征,最后给出所示解的近似值[1],这就是蒙特卡罗模拟。目前,进行作战效能评估的仿真实验方法主要有两种:解析法和统计实验法。对于不规则目标或者复杂形状目标而言,很难甚至不能找到合适的解析方法进行计算。
结合像素点法进行蒙特卡罗模拟,是一种分析武器射击或者战斗过程的作战效能的新方法,既直观,又实用,而且易于仿真。在目标实物图像状态下,运用像素点法进行仿真射击,根据射弹的分布规律,结合蒙特卡罗方法仿真生成其弹着点位置,并将射击弹着点以某一区别于背景色的特定颜色直接在原目标图像上显示。这样,仿真射击后,在屏幕上就能显示本次射击弹着点的分布情况,凡是被击中的点都将显示出该种特定颜色,通过统计目标幅员内的显示该种特定颜色的像素点个数所占总射击次数的百分比,即可得到相对命中概率。
数字图像在计算机上以位图形式存在,位图是一个矩形点阵,第一点阵为一像素。像素是数字图像的基本单位,如一幅m×n大小的图像是由m×n个像素组成,对于灰度图像而言,各个像素的明确程度由一个称为灰度值的数值表示[2]。
图像中的每个像素取实值,记R为实数集合,X为定义域,则一幅图像p定义为:
其中:x为像素位置,p(x)为x处的像素值,[x,p(x)]是图像p的一个元素。
在Matlab软件中,作为Matlab基本数据类型的数值数组非常适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。
1)初步处理目标实物图像
通过光学侦察等手段,获取清晰度满足使用要求的目标实物图像。对图像进行初步处理,从背景中区分目标。为便于计算,将图像处理为灰度图像,或者处理为黑白位图。如果目标不同部位的重要性不同,可以使用不同灰度等级或者不同颜色表示目标不同部位的重要性。
2)在Matlab软件中导入图像数据
在Matlab软件中导入图像,并将图像数据存入数组中。在Matlab软件命令窗口中输入命令:A=imread(‘d:squre.bmp’),即导入计算机 D 盘根目录下squre.bmp 的图像[2],得到数组 A。
执行命令后,在命令窗口显示出许多数据,即数组A的元素值,这些数据同时也表示squre.bmp图片各个像素点的颜色。观察数组A,其元素值主要由0和255构成,表明该图像为黑白位图。如果是灰度图像,则数据表示各像素点的灰度等级。如果是彩色图像,则由3种颜色叠加而成[2]。
继续执行命令:S=size(A),得到 S=[50,50],表明该图像宽为50像素,高为50像素。
3)直接在目标实物图像中进行模拟射击
受随机因素的影响,模拟射击弹着点坐标服从正态分布。以该图像中心坐标为瞄准点进行模拟射击,运用蒙特卡罗方法仿真生成弹着点坐标,将每次射击的弹着点以区别于目标区域着色的特定颜色显示,每一次射击,均能在计算机屏幕上形象的显示射击的弹着点分布情况。
如使用火炮对目标O进行射击,其弹着点服从正态分布,利用正态分布的随机数来模拟确定弹着点坐标(xi,yi),直接在目标实物图像上以该坐标画点,并以规定的特定颜色显示,可以得到弹着点分布图。
4)统计分析模拟射击的命中概率
目标实物图像上,凡是命中区域都将显示出该种特定颜色。通过统计分析目标区域内显示该种颜色的像素点的分布,可以精确分析射击的命中情况。多次射击后,统计目标实物区域内的显示该种特定颜色的像素点个数,即为本轮射击的命中次数,计算其占总射击次数的百分比,得到相对命中概率。
光学侦察发现低空轰炸的敌机,将侦察得到的图片经初步处理后如图1所示。使用小口径高炮对敌机进行射击,设射击系统的系统误差为0,弹着点坐标因随机因素影响服从正态分布[3],中间偏差为σx和σy。该小口径高炮向敌机发现100发炮弹,试分析射击命中概率。
1)处理实物图片
为便于计算,将飞机图片处理为黑白位图,如图1所示。图像高700像素、宽1000像素。
图1 经过简单处理的飞机图片
2)导入图像数据
在Matlab软件中调用imread命令导入图像文件,并将数据存入数组A。
A=imread(‘d:plane.bmp’)
读入D盘根目录下命名为plane.bmp的位图,并将图像数据存入数组A中。观察数组A,各元素的数值非0即1,表示该图片为黑白位图。原图片中黑色部分像素对应数值为1,图像白色部分像素对应数值为 0[2]。
对数组A进行初步分析:
size(A)=[700,1000]
A为700×1000的矩阵,同时也表示该图像高700像素,宽1000像素。
A(350,500)=0
即数组A中,第350行第500列的数值为0。该位图中采用矩阵式坐标,原点在图像左上角,坐标单位为像素,则说明位置为(350,500)的像素点是黑色。
3)统计所有着黑色的像素点坐标
通过查找数组A中数值为1元素的对应下标,从而确定所有着黑色的像素点坐标。
调用find命令,查找数组A所有数值为1的元素双下标[4],并将存储在[y,x]中。
[y,x]=find(A==1);
令 Target=[y,x]。
4)瞄准图像中心坐标进行模拟射击
在矩阵式坐标系中,以plane图像中心坐标(350,500)为瞄准中心进行模拟射击。其弹着点服从正态分布,利用正态分布的随机数模拟确定弹着点坐标(xi,yi),在目标实物图片上直接以该坐标画点,并以规定的特定颜色显示。将每次射击的弹着点以区别于实物着色的特定颜色显示,得到射击弹着点分布图。
设射击系统的系统误差为0,弹着点坐标(xi,yi)由于随机因素引起的落点坐标散布服从正态分布[3],中间偏差为σx和σy,每射击一次,均要产生一组N(0,1)标准正态分布的随机数η1和η2,如模拟射击n次,则需产生n组随机数。
式中:i=1,2,3…,n 表示模拟射击次数。μx、μy表示选定坐标系中的瞄准点坐标,取 μx=350,μy=500。σx和 σy为中间偏差,令 σx=250、σy=250。η1和 η2为标准正态分布的随机数,在Matlab软件中,直接调用randn(10,2)产生服从标准正态分布的随机数组[5]。对于非标准正态分布的随机数,可以调用normrnd命令产生正态分布的随机数组,调用方式为R=normrnd(Mu,Sigma,m,n),其中 Mu 为均值,Sigma 是标准差,必须取正数,Mu、Sigma、X必须同维,或者其中任何一个是标量[5]。
5)统计分析模拟射击的命中概率
令 Pi=[xi,yi],Pi为每次模拟射击弹着点坐标,判断其是否包含于数组Target中,若“是”,则命中目标,“否”则没有命中目标,统计命中次数为m,除以此轮模拟射击总次数,得到命中概率。
在Matlab软件中进行仿真计算[5],模拟射击100次,即n=100,得m=27,命中概率为27%。
直接结合目标实物图片运用像素点法进行效能分析,并结合蒙特卡罗方法分析这一随机过程,通过对比分析射击前后目标实物图像上像素点的分布情况,可以绕过繁杂的公式推导,直接得到统计结果,特别是针对不规则目标,在无法用确切的函数关系来描述的情况下,这种方法更加具有优越性[6]。
如果导入彩色图片,可以通过不同着色来表示不同部位的重要程度。为全球计算,也可以将其处理为灰度图像,通过采用不同灰度等级来表示不同部位的重要性,同样也可以通过统计不同区域内显示特定颜色(弹着点)像素点数,得到相对命中概率。在此基础上,可以更加精确的分析射击的毁伤效果。
[1]张野鹏.作战模拟基础[M].北京:高等教育出版社,2004.
[2]于万波.基于MATLAB的计算机图形与动画技术[M].北京:清华大学出版社,2007.
[3]裴鹿成,王仲厅.蒙特卡罗方法及其应用[M].北京:海洋出版社,1998.
[4]张志涌.精通MATLAB 6.5版教程[M].北京:北京航天航空大学出版社,2003.
[5]邓薇.MATLAB函数速查手册[M].北京:人民邮电出版社,2010.
[6]薛文通,宋建社,沈涛,等.子母弹对复杂形状目标毁伤效果的计算机仿真[J].计算机仿真,2003,20(4):16-18.