欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2016106092684
申请人: 长春理工大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2024-02-28
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.一种基于平面表面高动态范围图像的真实点光源位置测算方法,其特征在于:采用彩色数码相机与三角架相连,彩色数码相机与计算机相连,计算机中存有62个圆,并将其编号dt记为1,2,3,...62,这62个半径为10mm大正圆随机分布在一个平面上,做为随机点云标定模板,将随机点云标定模板印刷于210mm*297mm纯白色表面光滑不透光pvc板上,记作随机点云标记板;

具体的测算步骤如下:

步骤1、将三角架调至适当高度,并调整三脚架的云台部分,使得通过彩色数码相机的取景器目镜能够看到随机点云标记板的全部,将彩色数码相机调至M档,拍摄五张仅曝光时间不同的标记板照片,分别记为Pic0、Pic1、Pic2、Pic3、Pic4,对应的曝光时间依次记为Ev0、Ev1、Ev2、Ev3、Ev4,五张标记板照片的图像分辨率均为pix1*pix2;

步骤2、使用MATLAB R2012b中的makehdr函数和Ev0、Ev1、Ev2、Ev3、Ev4,将Pic0、Pic1、Pic2、Pic3、Pic4合成为一张随机点云标记板高动态范围图像,记为HDRI,存储于计算机中;

步骤3、在随机点云标记板上建立以随机点云标记板的几何中心为原点O、沿纸面向上为Z轴正方向的右手坐标系,记为世界坐标系;

步骤4、使用MATLAB R2012b将HDRI上所有像素点的亮度值存储到pix1*pix2的数组中,记为lum,其中lum(i,j)表示HDRI上坐标为(i,j)像素点的亮度值,在HDRI中随机点云标记板区域内的白色部分任意选取五个像素点,依次分别记为point0、point1、point2、point3、point4,并记它们在HDRI中的像素坐标依次分别为(x0,y0)、(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4),

同时,易获取point0、point1、point2、point3、point4所对应的亮度值,依次分别记为lum(x0,y0)、lum(x1,y1)、lum(x2,y2)、lum(x3,y3)、lum(x4,y4);

步骤5、使用OpenCV1.0中的cvThreshold函数,对随机点云标定模板图像进行二值化;

使用OpenCV1.0中的cvFindContours函数,在二值化后的模板图像中找出各圆形的轮廓的点集;使用OpenCV1.0中的cvCvtSeqToArray函数,依次将每一个圆形的轮廓的点集转换为一维数组,一维数组中元素的类型都为CvPoint;最后,使用OpenCV1.0中的cvFitEllipse函数,对每个一维数组进行圆拟合,得到每个圆拟合的圆心坐标,记为(Odt_x,Odt_y,1),并从rotatedrect数据结构中提取出每个圆拟合的二次曲线方程记为:Qdt(Odt_x,Odt_y)=A_qdt*Odt_x2+B_qdt*Odt_x*Odt_y+C_qdt*Odt_y2+D_qdt*Odt_x+E_qdt*Odt_y+F_qdt=0,其中A_qdt、B_qdt、C_qdt、D_qdt、E_qdt、F_qdt分别为编号为dt的圆二次曲线方程的多项式系数,令

并将P_qdt归一化记为P_qedt;

步骤6、将随机点云标定模板中的每一个圆的P_qedt,后文称做“中心圆”与其最近的4个圆的P_qedt后文称做“邻近圆”构成一个按照中心圆编号为次序的PN*5矩阵,记为YU,其中YU[dt][0]记录中心圆的P_qedt,YU[dt][ii]记录中心圆的最近4个邻近圆的P_qedt,ii=1,2,

3,4,计算出每个中心圆曲线与其邻近圆曲线间的PPdt_ii做为边长,其中PPdt_ii=Tr(YU[dt][ii]/YU[dt][0]);

将4个邻近圆P_qedt编号为邻近圆曲线1、邻近圆曲线2、邻近圆曲线3、邻近圆曲线4;定义Tr(YU[dt][2]/YU[dt][1])为邻近圆曲线1与邻近圆曲线2的边长,定义Tr(YU[dt][3]/YU[dt][2])为邻近圆曲线2与邻近圆曲线3的边长,定义Tr(YU[dt][4]/YU[dt][3])为邻近圆曲线3与邻近圆曲线4的边长,定义Tr(YU[dt][1]/YU[dt][4])为邻近圆曲线4与邻近圆曲线

1的边长;

根据余弦定理计算方法如下:

将每个中心圆的四个余弦值存储为62*4的数组,记为YXJ1,其中YXJ1(dt,0)、YXJ1(dt,

1)、YXJ1(dt,2)、YXJ1(dt,3)表示随机点云标定模板中编号为dt的圆的4个相关余弦值,记为[cosαdt_0,cosαdt_1,cosαdt_2,cosαdt_3];

步骤7、使用OpenCV1.0中的cvThreshold函数,对HDRI进行二值化;使用OpenCV1.0中的cvFindContours函数,找出每一个可见椭圆的轮廓点集;随后,需使用OpenCV1.0中的cvCvtSeqToArray函数,依次将每一个可以看到的椭圆的轮廓的点集转换为一维数组,一维数组中元素的类型都为CvPoint;最后,使用OpenCV1.0中的cvFitEllipse函数,对每个一维数组进行椭圆拟合,得到每个椭圆的圆心在世界坐标系下的坐标,记为(Tdt′_x,Tdt′_y,1),并从rotatedrect数据结构中提取出每个可见椭圆的二次曲线方程记为:Q′dt′(Tdt′_x,Tdt′_y)=A′_qdt′*Tdt′_x2+B′_qdt′*Tdt′_x*Tdt′_y+C′_qdt′*Tdt′_y2+D′_qdt′*Tdt′_x+E′_qdt′*Tdt′_y+F′_qdt′=0其中A'_qdt′、B'_qdt′、C'_qdt′、D'_qdt′、E'_qdt′、F'_qdt′分别为编号为dt′的椭圆二次曲线方程的多项式系数,令并将P′_qdt′归一化记为P′_qedt′,其中dt′表示HDRI中可见椭圆的编号;

步骤8、将HDRI中的每一个可见的椭圆的P′_qedt′后文称做“中心椭圆”与其最近的4个椭圆的P′_qedt′后文称做“邻近椭圆”构成一个按照中心椭圆编号为次序的TN*5矩阵,记为TU,其中TU[dt’][0]记录中心椭圆的P′_qedt′,TU[dt’][ii]记录中心椭圆的最近4个邻近椭圆的P′_qedt′,ii=1,2,3,4,计算出每个中心椭圆与其邻近椭圆间的PPd′t′_ii做为边长,其中PP′dt′_ii=Tr(TU[dt′][ii]/TU[dt′][0]);

将4个邻近椭圆P′_qedt′编号为邻近椭圆曲线1、邻近椭圆曲线2、邻近椭圆曲线3、邻近椭圆曲线4;定义Tr(TU[dt'][2]/TU[dt'][1])为邻近椭圆曲线1与邻近椭圆曲线2的边长,定义Tr(TU[dt'][3]/TU[dt'][2])为邻近椭圆曲线2与邻近椭圆曲线3的边长,定义Tr(TU[dt'][4]/TU[dt'][3])为邻近椭圆曲线3与邻近椭圆曲线4的边长,定义Tr(TU[dt'][1]/TU[dt'][4])为邻近椭圆曲线4与邻近椭圆曲线1的边长;

根据余弦定理计算方法如下:

将每个中心椭圆处的四个余弦值存储为TN*4的数组,记为YXJ2[TN][4],TN表示在HDRI中观察到的椭圆圆点的总数;其中YXJ2[dt’]表示摄影球图片中可见的编号为dt’的椭圆的

4个相关余弦值记为[cosα′dt′_0,cosα′dt′_1,cosα′dt′_2,cosα′dt′_3]步骤9、将数组YXJ2与YXJ1进行比较,找出其中相匹配的点,其满足:|[cosα′dt′_0,cosα′dt′_1,cosα′dt′_2,cosα′dt′_3][cosαdt_0,cosαdt_1,cosαdt_2,cosαdt_3]-1|≤0.01;

按照YXJ1中各点顺序将YXJ2中与YXJ1中相匹配的点存储于TN*4的数组中,记为YXJ3;

步骤10、将YXJ1中每个圆形的圆心的坐标(Odt_x,Odt_y,1)和YXJ3中对应的椭圆圆心的坐标(Tdt′_x,Tdt′_y,Tdt′_z)传递给OpenCV1.0中的摄像机标定函数CalibrateCamera2,便可得彩色数码相机的3*3旋转矩阵R和3*1平移矩阵T,从而可以计算得到point0、point1、point2、point3、point4在世界坐标系中的坐标(WN_1,WN_2,0),N=0,1,2,3,4:令

由(xN,yN,0,1)T=A*(WN_1,WN_2,0,1)T解出采样点point0、point1、point2、point3、point4在世界坐标系中的坐标;

步骤11、将point0、point1、point2、point3、point4中的任意四个点为一组,分为不重复的五组,并将这五组采样点所对应的在世界坐标系中的坐标和亮度值存储到一个5*4*4数组中,记为g_pi,其中g_pi[n][p][q]q=0,1,2表示第n组采样点中第p个采样点在世界坐标系中的坐标,g_pi[n][p][3]表示第n组采样点中第p个采样点的亮度值;

步骤12、分别假设n=0、1、2、3、4,对g_pi[n][p][3]执行步骤13、14、15操作;

步骤13、根据对实际点光源的位置,估计出大致测算范围M,使得欲测算的点光源能够位于以随机点云标记板所在平面为底面的M*M*M的立方体内,该立方体记为C,设该场景下环境光的亮度值为lum_amb,则针对每组采样点利用牛顿迭代法解如下方程组:设最终待求点光源在坐标系中的坐标为(Lx,Ly,Lz),,

该方程组记为“三球方程组”;

步骤14、每组采样点在解步骤13中涉及的方程组时所选取的初始值可采用如下方法确定:

由M*M*M立方体的各边中点,将M*M*M的待分割立方体分割为等大的八个较小的立方体,按照方位顺序将这八个较小立方体编号,并记为Cf,其中f=0,1,2,…,7,此八个较小立方体的体中心点在世界坐标系中的空间坐标记为(xf,yf,zf),并计算如下式子:,

该式记为“最小距离式”,其中Lx_f,Ly_f,Lz_f为步骤13中牛顿迭代法解方程组时以xf,yf,zf为初始值的估算结果;

步骤15、选取使得最小距离式成立的体中心点所在较小立方体作为新的待分割立方体,重复操作步骤14,直到最小距离式的结果值小于0.001或者待分割立方体的边长不大于

0.01,重复步骤14终止,至此,求得每组采样点所估算出的关于lum_amb的点光源坐标,记为(L′n_x,L′n_y,L′n_z);

步骤16、以步骤13中涉及的lum_amb为自变量,求解出满足下式的lum_amb值:步骤17、根据步骤16中所得的lum_amb值,依照步骤14、15的操作求解三球方程组,并将五个三球方程组的结果坐标取平均值;

通过以上步骤1到步骤17便可快速、高精度地估计实际空间中点光源的位置并且为后期在三维建模软件中将其虚拟化做准备。