技术领域
[0001] 本发明涉及计算机技术领域,具体地涉及一种模型检测方法及系统。
相关背景技术
[0002] 目前,很多平台都提供有查看对象全景图的功能,例如房屋展示平台,其向用户提供了查看房源各点位的全景图的功能,并能模拟从一个点位行走至另一个点位的过程。以房屋展示平台为例,在对房屋进行三维建模的过程中,需要通过深度相机来采集各点位的深度图像,后续将各点位的深度图像转换为各点位的点云图像,基于各点位的所述点云图像拼接成用于复原出整个虚拟三维空间的点云模型。当任一点位所拍摄的深度图像空洞较多时,所述点云模型的最终展现效果也会较差。因此,需要检测点云模型对应的每一点位的深度图像。
[0003] 目前,对于点云模型的每一点位对应的深度图像的检测均采用人工观察主观判断的方式,即人工观察每一点位对应的深度图像中的空洞的情况,根据所有点位的深度图像的观察结果决定是否采用所述深度图像来拼接生成点云模型。目前的人工观察判断点云模型质量的方式主观性较大,且检测效率较低。
具体实施方式
[0030] 以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
[0031] 实施例1
[0032] 图1是实施例1的一种模型检测方法的流程图。如图1所示,所述模型检测方法包括:
[0033] S101,获取问题拍摄点占比及空洞面积占比。
[0034] 其中,所述问题拍摄点占比被配置为指定对象的点云模型中超过空洞阈值的拍摄点数与所有拍摄点数的比值,所述空洞面积占比被配置为所述点云模型中总空洞面积(可以是空洞的像素点面积)与总拍摄面积(可以是拍摄图片的像素点面积)的比值,上述两者可以通过相机拍摄获得。其中,所述指定对象可以为房源对象,所述空洞主要是因为在所述点位拍摄时在阳光的照射下造成反光情况,在所述深度图像中反映的情况为mesh无三角面片。
[0035] 在计算机中,可以通过直接调用预设定的代码串计算所述问题拍摄点占比及空洞面积占比,所述问题拍摄点对应的代码串的标记为“hole_point”,所述空洞面积占比对应的代码串的标记为“hole_point_prop”。
[0036] 其中,所述点云模型中的空洞指代的是没有采集到的彩色或深度图像区域,所述空洞在所展示的全景图像中会呈现一个无法显示(黑色)的区域,如果空洞较大,则表示所述点位的图像存在一定的问题。在本实施例中,确定空洞的方式可以采用基于像素数判断的方法,即判断是否存在连续的像素超过预设定的100,若存在,则空洞数加1。其中,主要通过空洞检测模块获取当前深度图像的空洞数,所述空洞检测模块如上所述,通过上述规则统计出所述当前深度图像的空洞数的总值。其中,所述空洞检测模块为系统自带的检测单元,所述空洞检测模块的工作原理是:判断是否存在连续的超过预设定的100的像素的区域不存在像素点,若存在,则认为所述区域为一个空洞。采用深度图像来判断空洞的方式包括:所述深度图像可以通过二维像素矩阵的方式来表示,所述像素矩阵中的每个矩阵元素(像素点)的值表示相应的深度值,即所述矩阵元素(像素点)在三维空间中距拍摄点位的距离。可以通过确定深度图像的像素矩阵中深度值为0且在位置上相邻的矩阵元素(像素点)的集合,来得到所述深度图像中的空洞。
[0037] 而在所述步骤中,判定某个拍摄点位超过空洞阈值的拍摄点的方式包括下述A1)-A3)的步骤:
[0038] A1)针对所述点云模型中每一拍摄点所拍摄的深度图像,执行:获取当前拍摄点所拍摄的深度图像对应的当前空洞数;若所述当前空洞数超过所述空洞阈值的情况下,判定所述当前空洞数对应的拍摄点为问题拍摄点;A2)统计所述点云模型中所有拍摄点数及所确定的问题拍摄点数;以及A3)计算所述问题拍摄点数与所述所有拍摄点数的比值以得到所述问题拍摄点占比。
[0039] 举例而言,判定所述当前拍摄点为问题拍摄点的方法包括:预设定所述空洞阈值为s。针对各拍摄点所拍摄的深度图像X、Y、Z,分别获取各深度图像的空洞数的x、y、z。判断所述x与所述s的比较大小,x小于s,则判定X对应的拍摄点为正常拍摄点;判断所述y与所述s的比较大小,y大于s,则判定Y对应的拍摄点为问题拍摄点;判断所述z与所述s的比较大小,z大于s,则判定Z对应的拍摄点为问题拍摄点。对每一个深度图像所对应的拍摄点进行判定之后,统计的所有拍摄点数为3,统计的所确定的问题拍摄点数为2,所述问题拍摄点数与所有拍摄点数的比值为2/3。
[0040] 其中,所述空洞面积占比的获取方式与上述内容类似,主要采用上述的基于像素数判断的方法,确定所有空洞所占有的像素数即为总空洞面积,再获取总拍摄面积的像素数即为总拍摄面积,然后基于所有空洞所占有的像素数与所述总拍摄面积的像素数两者的比值确定空洞面积占比。
[0041] S102,基于所述问题拍摄点占比及所述空洞面积占比计算示出点云模型完整度的模型分数。
[0042] 其中,所述模型分数与所述问题拍摄点占比及所述空洞面积占比两者均相关联,其关联关系可以为随着问题拍摄点占比的增大及所述空洞面积占比的增大,所述点云模型的模型分数应该越低,两者的对应关系可以是线性关系。
[0043] 具体地,上述的计算方式包括:获取与所述问题拍摄点占比对应的第一权重值、与所述空洞面积占比对应的第二权重值;以及基于所述问题拍摄点、所述第一权重值、所述空洞面积占比以及所述第二权重值计算示出所述点云模型的完整度的模型分数。
[0044] 其中,所述第一权重值及第二权重值可以根据需要进行预设定。举例而言,第一权重值设为d,第二权重值也设为e,两者可以具有同样的权重,也可以具有不同的权重。所述计算方式可以是,将所述问题拍摄点占比与e相乘,且所述空洞面积占比与所述e相乘,相乘之后的数值与总分数的和称之为模型分数。其中,所述第一权重值及第二权重值均为负值,所述总分数为预先设定的分数,可以根据实际需要进行设定。
[0045] S103,根据所述模型分数与预设定分数阈值的比较结果,判断所述点云模型是否检测合格。
[0046] 其中,所述分数阈值可以根据实际需要进行设置,且与所述权重值的选取相关,用户对点云模型的要求越高,预设定的分数阈值也越高。
[0047] 具体地,若所述比较结果示出所述模型分数大于预设定的分数阈值,则判定所述点云模型检测合格;以及若所述比较结果示出所述模型分数小于预设定的分数阈值,则判定所述点云模型检测不合格。
[0048] 换句话说,当所述模型分数大于预设定的分数阈值,则判定所述点云模型检测合格,否则判定所述点云模型不合格。基于上述步骤,完成了点云模型的检测。
[0049] 进一步优选地,在判定所述点云模型不合格之后,所述模型检测方法还包括:B1)获取针对所述问题拍摄点拍摄的新的深度图像;以及B2)响应于用户的点击事件,控制模型拼接控件基于所述新的深度图像重新拼接所述点云模型。其中,所述模型拼接控件主要借助于开源库中对点云进行拼接融合的函数计算得到,例如,点云库(PCL,Point Cloud Library),其具体的操作步骤在此不再赘述,主要包括2步,第1步,将所述深度图像转换成点云图像,将所述点云图像进行拼接得到点云模型。
[0050] 其中,所述新的深度图像可以通过摄像机重新采集,对于采集后的深度图像采用与在先采用的算法不同的算法进行转换,对于多个点位的点云图像进行拼接以得到最终的点云模型。其中,所述模型拼接控件较多,利用可以通过手动操作所述模型拼接,也可以通过自动操作进行拼接,所述自动拼接的方式为根据所述每一点位的点云图像及与其相邻点位的点云图像的关联关系,将对应位置的点云图像进行拼接,所述关联关系位置关系及图像内容关系。
[0051] 通过本实施例中上述的模型检测方法,可以基于所获取的问题拍摄点占比及空洞面积占比计算示出点云模型完整度的模型分数。所述模型分数可以用于判断点云模型的检测结果即合格或不合格。整个过程,用户需要进行额外的操作,只需要通过检测模块直接获取问题拍摄点占比及空洞面积占比,然后根据预设定的计算规则及判断规则即可实现模型的自检测。
[0052] 实施例2
[0053] 图2是实施例2的一种模型检测系统,所述模型检测系统包括:占比获取单元1,用于获取问题拍摄点占比及空洞面积占比,其中所述问题拍摄点占比被配置为指定对象的点云模型中超过预设空洞阈值的拍摄点数与所有拍摄点数的比值,所述空洞面积占比被配置为所述点云模型中总空洞面积与总拍摄面积的比值;分数计算单元2,用于基于所述问题拍摄点占比及所述空洞面积占比计算示出点云模型完整度的模型分数;以及结果判断单元3,用于根据所述模型分数与预设定分数阈值的比较结果,判断所述点云模型是否检测合格。
[0054] 优选地,所述占比获取单元用于获取问题拍摄点占比包括:判定模块11,用于针对所述点云模型中每一拍摄点所拍摄的深度图像,执行:获取当前拍摄点所拍摄的深度图像对应的当前空洞数;若所述当前空洞数超过所述预设空洞阈值的情况下,判定所述当前空洞数对应的拍摄点为问题拍摄点;数量统计模块12,用于统计所述点云模型中所有拍摄点数及所确定的问题拍摄点数;以及比值计算模块13,用于计算所述问题拍摄点数与所述所有拍摄点数的比值以得到所述问题拍摄点占比。
[0055] 优选地,所述分数计算单元2包括:权值获取模块21,用于获取与所述问题拍摄点占比及对应的第一权重值、与所述空洞面积占比对应的第二权重值;以及分数计算模块22,用于基于所述问题拍摄点占比、所述第一权重值、所述空洞面积占比以及所述第二权重值计算示出所述点云模型的完整度的模型分数。
[0056] 优选地,所述结果判断单元3用于根据所述模型分数与预设定的分数阈值的比较结果,判断所述点云模型是否检测合格包括:所述结果判断单元3用于若所述比较结果示出所述模型分数大于预设定的分数阈值,则判定所述点云模型检测合格,并用于若所述比较结果示出所述模型分数小于预设定的分数阈值,则判定所述点云模型检测不合格。
[0057] 优选地,所述模型检测系统还包括:新图像获取单元4,用于在所述判定所述点云模型检测不合格之后,获取所述问题拍摄点所拍摄的新的深度图像;以及模型拼接控件5,用于响应于用户的点击事件,基于所述新的深度图像重新拼接所述点云模型。
[0058] 其中,所述模型检测系统能够与现有技术相比具有与实施例1相同的技术方案及技术效果,在此不再赘述。
[0059] 所述模型检测系统包括处理器和存储器,上述占比获取单元1、分数计算单元2、结果判断单元3和新图像获取单元4等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
[0060] 处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现模型的自检测。
[0061] 存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
[0062] 本发明实施例提供了一种存储介质,其上存储有程序,所述程序被处理器执行时实现所述模型检测的方法。
[0063] 本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述模型检测的方法。
[0064] 本发明实施例提供了一种设备,如图3所示,设备30包括至少一个处理器301、以及与处理器301连接的至少一个存储器302、总线303;其中,所述处理器301、所述存储器302通过所述总线303完成相互间的通信;所述处理器301用于调用所述存储器302中的程序指令,以执行所述的模型检测方法。
[0065] 本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有实施例1中的方法步骤的程序。
[0066] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0067] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0068] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在所述计算机可读存储器中的指令产生包括指令装置的制造品,所述指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0069] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0070] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0071] 存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
[0072] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0073] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0074] 以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。