1.一种用于脑功能康复训练的虚拟场景三维重建方法,其特征在于,所述方法包括以下步骤:
S100,获取目标物体,通过摄像机以多个角度拍摄目标物体得到多张目标图像;
S200,对摄像机进行摄像机标定,得到单应性矩阵;
S300,通过单应性矩阵对多张目标图像进行修正得到多张修正图像;
S400,通过多张修正图像进行三维重建,得到三维模型;
其中,步骤S300,通过单应性矩阵对多张目标图像进行修正得到多张修正图像的方法具体为:
S301,将多张目标图像依次输入到opencv中的warpPerspective(src, h, size)函数得到多张修正图像,其中,src为目标图像,h为单应性矩阵,size=(width,height),width和height分别为多张目标图像中任意一张图像的宽度和高度,转至S302;
S302,记多张修正图像的数量为N,将N张修正图像按拍摄时间从前到后进行排列构成格图序列Cs,记Cs(i)为格图序列中的第i张图像,i∈[1,N],计算格图序列中每张图像的重建修复度,记重建修复度最小的图像为重建图像,初始化一个滑动窗口winSize,滑动窗口的宽度=重建图像的宽度/(t*N),滑动窗口的高度=重建图像的高度/(t*N),t设定为[3,5]中的整数,转至S303;其中,重建图像的宽度和高度的单位为像素;
S303,初始化整数变量j1=1,j1∈[1,N],设置整数变量j2,j2∈[1,N],令j2的初始值为j1+1,转至S304;
S304,记Cs(j1)的宽度和高度分别为W1和H1,通过winSize对Cs(j1)进行滑动切分得到多个子图像块并以序列Sib储存,记Sib(k)为序列Sib中的第k个子图像块,k∈[1,M],M为所有子图像块的数量,初始化整数变量j3,j3∈[1,M],令j3的初始值为1,转至S305;
S305,记Cs(j2)的宽度和高度分别为W2和H2,记变量VA1=(W2/W1),记变量VA2=(H2/H1),转到S306;
S306,记Sib(j3)的左上角的点的像素坐标为Tlp=(x1,y1),记Sib(j3)的左下角的点的像素坐标为Dlp=(x2,y2),记Sib(j3)的右上角的点的像素坐标为Trp=(x3,y3),记Sib(j3)的右下角的点的像素坐标为Drp=(x4,y4);令Cs(j1)的重建修复度为CG1,Cs(j2)的重建修复度为CG2;
当W1
当H1
在Cs(j2)中依次连接像素坐标为Tlp、Dlp、Trp、Drp的四个像素,构成图像子块TemSib,转至S307;
S307,若图像子块TemSib的重建修复度小于Sib(j3)的重建修复度,将Sib(j3)放大S倍得到放缩图像子块RiSib,在Cs(j2)中将子图像块TemSib替换为放缩图像子块RiSib得到替换后的Cs(j2);若j3的值小于M,令j3的值增加1,转至S306,若j3的值大于等于M,转至S308;
其中,S=(Sib(j3)的面积)/(TemSib的面积),所述面积即图像的宽度乘以高度;
S308,若j2的值小于N,令j2的值增加1,重置j3的值为1,转至S305;若j2的值大于等于N,令j1的值增加1,清空序列Sib中的所有元素,重置j2的值为j1+1,转至S309;
S309,若j1的值小于等于N,转至S304,若j1的值大于N,转至S310;
S310,输出格图序列Cs;
其中,图像或图像子块的重建修复度的计算方法为:
,
式中,Rsd代表图像或图像子块的重建修复度, 代表图像或图像子块中所有像素点的像素值的平均值,W为图像或图像子块的宽度,L为图像或图像子块的高度,a、b为变量,g(a,b)为图像或图像子块中像素坐标为(a,b)的像素点的像素值。
2.根据权利要求1所述的一种用于脑功能康复训练的虚拟场景三维重建方法,其特征在于,步骤S100中,所述目标物体为参与脑功能康复训练的患者所熟悉的物品或模型,所述模型为患者所熟悉的建筑或车辆的一比一高精度还原模型。
3.根据权利要求1所述的一种用于脑功能康复训练的虚拟场景三维重建方法,其特征在于,步骤S400中,通过多张修正图像进行三维重建,得到三维模型的方法具体为:读取格图序列中的所有修正图像,将所有修正图像输入到三维建模软件中,完成三维重建,所述三维建模软件为Autodesk 123d catch、Tinkercad、VisualSFM、Meshlab、Autodesk ReCap
360 photo中的任意一个。
4.根据权利要求1所述的一种用于脑功能康复训练的虚拟场景三维重建方法,其特征在于,将所述三维模型用于脑功能康复训练时使用的显示器端的画面输出。
5.一种用于脑功能康复训练的虚拟场景三维重建系统,其特征在于,所述一种用于脑功能康复训练的虚拟场景三维重建系统包括:处理器、存储器及存储在所述存储器中并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1所述的一种用于脑功能康复训练的虚拟场景三维重建方法中的步骤,所述一种用于脑功能康复训练的虚拟场景三维重建系统运行于桌上型计算机、笔记本电脑、掌上电脑或云端数据中心的计算设备中;
其中,步骤S300,通过单应性矩阵对多张目标图像进行修正得到多张修正图像的方法具体为:
S301,将多张目标图像依次输入到opencv中的warpPerspective(src, h, size)函数得到多张修正图像,其中,src为目标图像,h为单应性矩阵,size=(width,height),width和height分别为多张目标图像中任意一张图像的宽度和高度,转至S302;
S302,记多张修正图像的数量为N,将N张修正图像按拍摄时间从前到后进行排列构成格图序列Cs,记Cs(i)为格图序列中的第i张图像,i∈[1,N],计算格图序列中每张图像的重建修复度,记重建修复度最小的图像为重建图像,初始化一个滑动窗口winSize,滑动窗口的宽度=重建图像的宽度/(t*N),滑动窗口的高度=重建图像的高度/(t*N),t设定为[3,5]中的整数,转至S303;其中,重建图像的宽度和高度的单位为像素;
S303,初始化整数变量j1=1,j1∈[1,N],设置整数变量j2,j2∈[1,N],令j2的初始值为j1+1,转至S304;
S304,记Cs(j1)的宽度和高度分别为W1和H1,通过winSize对Cs(j1)进行滑动切分得到多个子图像块并以序列Sib储存,记Sib(k)为序列Sib中的第k个子图像块,k∈[1,M],M为所有子图像块的数量,初始化整数变量j3,j3∈[1,M],令j3的初始值为1,转至S305;
S305,记Cs(j2)的宽度和高度分别为W2和H2,记变量VA1=(W2/W1),记变量VA2=(H2/H1),转到S306;
S306,记Sib(j3)的左上角的点的像素坐标为Tlp=(x1,y1),记Sib(j3)的左下角的点的像素坐标为Dlp=(x2,y2),记Sib(j3)的右上角的点的像素坐标为Trp=(x3,y3),记Sib(j3)的右下角的点的像素坐标为Drp=(x4,y4);令Cs(j1)的重建修复度为CG1,Cs(j2)的重建修复度为CG2;
当W1
当H1
在Cs(j2)中依次连接像素坐标为Tlp、Dlp、Trp、Drp的四个像素,构成图像子块TemSib,转至S307;
S307,若图像子块TemSib的重建修复度小于Sib(j3)的重建修复度,将Sib(j3)放大S倍得到放缩图像子块RiSib,在Cs(j2)中将子图像块TemSib替换为放缩图像子块RiSib得到替换后的Cs(j2);若j3的值小于M,令j3的值增加1,转至S306,若j3的值大于等于M,转至S308;
其中,S=(Sib(j3)的面积)/(TemSib的面积),所述面积即图像的宽度乘以高度;
S308,若j2的值小于N,令j2的值增加1,重置j3的值为1,转至S305;若j2的值大于等于N,令j1的值增加1,清空序列Sib中的所有元素,重置j2的值为j1+1,转至S309;
S309,若j1的值小于等于N,转至S304,若j1的值大于N,转至S310;
S310,输出格图序列Cs;
其中,图像或图像子块的重建修复度的计算方法为:
,
式中,Rsd代表图像或图像子块的重建修复度, 代表图像或图像子块中所有像素点的像素值的平均值,W为图像或图像子块的宽度,L为图像或图像子块的高度,a、b为变量,g(a,b)为图像或图像子块中像素坐标为(a,b)的像素点的像素值。