本公开的实施例涉及一种二维户型图构建方法及装置、存储介质。
背景技术:
在房屋租赁、买卖及装修等领域,房屋的二维户型图(即平面户型图)是一个很重要的信息。二维户型图能让用户对房屋的功能间划分有清晰的认知,用户也可直观地看到各个功能间的面积、尺寸等信息。由此,用户无需进行实地看房便可以了解房屋的情况,提高了效率。
技术实现要素:
本公开至少一个实施例提供一种二维户型图构建方法,包括:获取户型的多个房间中每个房间的全景图片和房间位置信息;基于所述多个房间中每个房间的全景图片,得到该房间中房门的局部位置信息;基于所述多个房间中每个房间的房间位置信息以及每个房间中房门的局部位置信息,得到所述多个房间的链接关系;根据所述多个房间的链接关系以及所述多个房间中每个房间的全景图片,得到所述二维户型图。
例如,在本公开一实施例提供的方法中,所述房间位置信息包括对应的房间的全景图片的获取地点的位移坐标和欧拉角。
例如,在本公开一实施例提供的方法中,所述全景图片通过全景相机拍摄得到。
例如,在本公开一实施例提供的方法中,每个房间中房门的局部位置信息包括该房间中房门的第一坐标,所述第一坐标为归一化的数值。
例如,在本公开一实施例提供的方法中,基于所述多个房间中每个房间的房间位置信息以及每个房间中房门的局部位置信息,得到所述多个房间的链接关系,包括:对于所述多个房间中的每个房间,基于该房间的房间位置信息,得到对应于该房间的第一位移矩阵和第一旋转矩阵;选择所述多个房间中的一个房间作为参考坐标系,将所述多个房间中的每个房间的第一位移矩阵和第一旋转矩阵变换到所述参考坐标系,以对于所述多个房间中的每个房间得到第二位移矩阵和第二旋转矩阵;对于所述多个房间中的每个房间,根据该房间的第二位移矩阵、第二旋转矩阵以及该房间中房门的第一坐标,得到该房间中房门的第二坐标;根据所述多个房间中每个房间的房门的第二坐标,得到所述多个房间的链接关系。
例如,在本公开一实施例提供的方法中,对于所述多个房间中的每个房间,基于该房间的房间位置信息,得到对应于该房间的第一位移矩阵和第一旋转矩阵,包括:计算该房间的全景图片的相机角度;基于该房间的房间位置信息和所述相机角度,得到对应于该房间的第一位移矩阵和第一旋转矩阵。
例如,在本公开一实施例提供的方法中,所述第一位移矩阵的元素为归一化的数值。
例如,在本公开一实施例提供的方法中,所述相机角度为拍摄该房间的全景图片的全景相机与该房间的房间位置信息中的欧拉角在水平面上的相对角度。
例如,在本公开一实施例提供的方法中,对于所述多个房间中的每个房间,该房间的第二位移矩阵和第二旋转矩阵可采用如下公式计算:m1=m0*m1-1,其中,m1为该房间的第二位移矩阵和第二旋转矩阵的合并矩阵,m1为该房间的第一位移矩阵和第一旋转矩阵的合并矩阵,m0为作为参考坐标系的房间的第一位移矩阵和第一旋转矩阵的合并矩阵。
例如,在本公开一实施例提供的方法中,对于所述多个房间中的每个房间,该房间中房门的第二坐标可采用如下公式计算:p2=m1*p1,其中,p2为该房间中房门的第二坐标,p1为该房间中房门的第一坐标。
例如,在本公开一实施例提供的方法中,根据所述多个房间中每个房间的房门的第二坐标,得到所述多个房间的链接关系,包括:将所述第二坐标降维并旋转得到第三坐标,使所述第三坐标对应的房门与第一轴平行;依次判断并得到所述多个房间中房门的链接关系。
例如,在本公开一实施例提供的方法中,依次判断并得到所述多个房间中房门的链接关系包括:对于每个房门,根据所述第三坐标,选择与该房门距离最近的房门并判断两个房门的距离是否小于预设阈值;若所述距离小于所述预设阈值,则确定所述两个房门具有链接关系。
例如,在本公开一实施例提供的方法中,根据所述多个房间的链接关系以及所述多个房间中每个房间的全景图片,得到所述二维户型图,包括:对所述全景图片进行处理,得到所述多个房间中每个房间的二维平面图;根据所述多个房间的链接关系,将所述多个房间中每个房间的二维平面图进行组合,以得到所述二维户型图。
本公开至少一个实施例还提供一种二维户型图构建装置,包括:获取单元,配置为获取户型的多个房间中每个房间的全景图片和房间位置信息;局部位置信息生成单元,配置为,基于所述多个房间中每个房间的全景图片,得到该房间中房门的局部位置信息;链接关系确定单元,配置为,基于所述多个房间中每个房间的房间位置信息以及每个房间中房门的局部位置信息,得到所述多个房间的链接关系;二维户型图确定单元,配置为,根据所述多个房间的链接关系以及所述多个房间中每个房间的全景图片,得到所述二维户型图。
本公开至少一个实施例还提供一种二维户型图构建装置,包括:处理器;存储器,包括一个或多个计算机程序模块;其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于实现本公开任一实施例所述的二维户型图构建方法的指令。
本公开至少一个实施例还提供一种存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时可以实现本公开任一实施例所述的二维户型图构建方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为本公开一实施例提供的一种二维户型图构建方法的流程示意图;
图2a为一种户型的俯视图;
图2b为图2a所示的户型中第一房间的立体示意图;
图2c为图2a所示的户型中第一房间的俯视图;
图3为图1所示的方法的步骤s30的流程示意图;
图4为图2a所示的户型中房门的位置关系示意图;
图5为图1所示的方法的步骤s40的流程示意图;
图6为一种可用于实施本公开实施例提供的二维户型图构建方法的系统;
图7为本公开一实施例提供的一种二维户型图构建装置的示意框图;
图8为本公开一实施例提供的另一种二维户型图构建装置的示意框图;
图9为本公开一实施例提供的另一种二维户型图构建装置的示意框图;以及
图10为本公开一实施例提供的一种存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
通常情况下,二维户型图可以通过人工手动绘制或通过软件生成。当采用人工手动绘制时,得到的二维户型图的面积、尺寸等信息误差较大,并且所需时间较长,效率较低。当采用软件生成时,需要人工确定房间之间的链接关系,即房门之间的链接关系,基于该链接关系,软件根据各个房间彼此独立的房间平面图生成二维户型图。例如,用户通过观察各个房间的图片获取房间的信息,例如房门的位置、房间内的布置等信息,然后根据获取的信息综合判断以确定各个房间之间的链接关系。由于需要人工确定链接关系,因此所需时间较长,效率较低,并且,由于人工干预存在误判的可能,因此所确定的链接关系的准确率不够高。
本公开至少一个实施例提供一种二维户型图构建方法及装置、存储介质。该二维户型图构建方法可以自动确定房间之间的链接关系以生成二维户型图,无需人工确定,可以节约时间,提高效率,并且有助于提高准确率。
下面,将参考附图详细地说明本公开的实施例。应当注意的是,不同的附图中相同的附图标记将用于指代已描述的相同的元件。
本公开至少一个实施例提供一种二维户型图构建方法。该二维户型图构建方法包括:获取户型的多个房间中每个房间的全景图片和房间位置信息;基于多个房间中每个房间的全景图片,得到该房间中房门的局部位置信息;基于多个房间中每个房间的房间位置信息以及每个房间中房门的局部位置信息,得到多个房间的链接关系;根据多个房间的链接关系以及多个房间中每个房间的全景图片,得到二维户型图。
图1为本公开一实施例提供的一种二维户型图构建方法的流程示意图。如图1所示,在至少一个实施例中,该方法包括如下操作。
步骤s10:获取户型的多个房间中每个房间的全景图片和房间位置信息;
步骤s20:基于多个房间中每个房间的全景图片,得到该房间中房门的局部位置信息;
步骤s30:基于多个房间中每个房间的房间位置信息以及每个房间中房门的局部位置信息,得到多个房间的链接关系;
步骤s40:根据多个房间的链接关系以及多个房间中每个房间的全景图片,得到二维户型图。
例如,在步骤s10中,某一户型具有多个房间,多个房间具有不同的功能划分且彼此通过房门连通。例如,可以采用全景相机在每个房间内进行拍摄,从而得到每个房间的全景图片。全景相机可以实现360度全景拍摄,例如可以为光律式、节点式或棱镜扫描式等,本公开的实施例对此不作限制。
例如,全景图片为一组图片,包括多张拍摄地点的场景图片。例如,全景图片包括拍摄地点处的前、后、左、右、上、下等多个方位的场景图片。例如,在一些示例中,可以将全景相机设置于某一房间内的拍摄地点,并且拍摄得到该拍摄地点的前、后、左、右等四面墙的场景图片(即照片),并且拍摄得到该拍摄地点上方天花板的场景图片(即照片)以及下方地板的场景图片(即照片)。由此,可以得到该房间的全景图片。
需要说明的是,本公开的实施例中,全景图片的获取方式不受限制,可以根据实际需求而定。全景图片所包括的一组图片的数量不受限制,可以为6张(即对应于前、后、左、右、上、下等6个方位的图片,以呈现完整且全面的场景),也可以为5张(即对应于前、后、左、右、上等5个方位的图片,而省略了对应于下方的图片,以减少数据量),这可以根据实际需求而定。
例如,房间位置信息包括对应的房间的全景图片的获取地点(即拍摄地点)的位移坐标和欧拉角。例如,在进行全景图片的拍摄时,采用移动终端与全景相机配合工作。将移动终端与全景相机均设置在拍摄地点,且使移动终端与全景相机的相对位置固定。移动终端例如为手机、平板电脑等任意适用的设备,本公开的实施例对此不作限制。移动终端中运行有即时定位及建图软件,例如slam(simultaneouslocalizationandmapping),通过该软件即可得到该获取地点(即拍摄地点)的位移坐标和欧拉角。
例如,位移坐标为三维坐标,位移坐标代表了拍摄地点的位移信息。例如,欧拉角可以用四元数表示,欧拉角代表了拍摄地点的角度信息。这里,欧拉角例如可以为全景相机主视图拍摄方位的角度,通过使移动终端的朝向与全景相机的主视图拍摄方位一致,从而可以得到该欧拉角。例如,位移坐标和欧拉角均以实际环境为参考坐标系。关于位移坐标、欧拉角、利用即时定位及建图软件获取房间位置信息的详细说明,可参考常规设计,此处不再详述。
例如,如图2a所示,该户型有3个房间,分别为第一房间、第二房间和第三房间。通过采用全景相机对每个房间依次进行拍摄,拍摄地点分别为q1、q2和q3,并且使移动终端配合工作,由此可以得到每个房间的全景图片,并且得到每个房间的房间位置信息,即q1、q2和q3的位移坐标和欧拉角。
例如,在步骤s20中,每个房间中房门的局部位置信息包括该房间中房门的第一坐标。例如,如图2b所示,第一房间的拍摄地点为q1,第一房间中房门的位置通过四个棱角点表示,即a1-a4。例如,可以通过通常的三维编辑工具对第一房间的全景图片进行处理,例如进行建模、特征提取、计算等操作,从而可以得到第一房间中房门的四个棱角点a1-a4的坐标。关于得到a1-a4的坐标的详细说明可参考常规设计,此处不再详述。这里,四个棱角点a1-a4的坐标为局部坐标,也即是,a1-a4的坐标以第一房间为参考坐标系,而与其他房间(例如第二房间、第三房间)不存在关联性。如图2c所示,在俯视图中,由于a3与a2重叠,且a4与a1重叠,因此,在后续的处理过程中,仅对a1和a2进行处理,而不再考虑a3和a4。
例如,需要将a1和a2的坐标进行归一化。如图2c所示,对于a2点,其归一化后的y轴坐标可以为l1/l2,l1是指通过三维编辑工具得到的a2点的纵坐标,l2是指该第一房间的拐角点k的纵坐标。类似地,采用相似的方式对a1和a2的坐标进行归一化,从而得到两个归一化之后的坐标a1(x1,y1,z1)和a2(x2,y2,z2)。该第一房间中房门的局部位置信息包括该第一房间中房门的第一坐标,该第一坐标即为a1(x1,y1,z1)和a2(x2,y2,z2),该第一坐标为归一化的数值。
例如,图1所示的步骤s30可进一步包括如图3所示的如下操作。
步骤s31:对于多个房间中的每个房间,基于该房间的房间位置信息,得到对应于该房间的第一位移矩阵和第一旋转矩阵;
步骤s32:选择多个房间中的一个房间作为参考坐标系,将多个房间中的每个房间的第一位移矩阵和第一旋转矩阵变换到参考坐标系,以对于多个房间中的每个房间得到第二位移矩阵和第二旋转矩阵;
步骤s33:对于多个房间中的每个房间,根据该房间的第二位移矩阵、第二旋转矩阵以及该房间中房门的第一坐标,得到该房间中房门的第二坐标;
步骤s34:根据多个房间中每个房间的房门的第二坐标,得到多个房间的链接关系。
例如,在步骤s31中,首先计算该房间的全景图片的相机角度。例如,相机角度为拍摄该房间的全景图片的全景相机与该房间的房间位置信息中的欧拉角在水平面上的相对角度。由于房间位置信息中的欧拉角通过移动设备获取,因此该欧拉角即为该移动设备的角度。在实际操作中,全景相机与用于获取房间位置信息的移动设备的朝向可能不是完全一致的,两者之间存在误差。因此,为了消除该误差,需要计算该房间的全景图片的相机角度。
例如,可以在移动设备面向全景相机的一侧设置长条状色块,并使移动设备位于全景相机的下方,然后对拍摄得到的图片进行图像识别、特征提取等一系列处理和计算,从而得到该相机角度。例如,在一些示例中,可以从获取的图像中识别出长条状色块的投影,并计算长条状色块的投影的轮廓,并将该长条状色块的投影的轮廓的延伸方向作为移动设备的投影的轮廓的延伸方向。然后计算移动设备的投影的轮廓的延伸方向与全景相机在水平面内的朝向之间的夹角,该夹角即为相机角度。例如,全景相机在水平面内的朝向为全景相机主视图拍摄方位。
例如,在步骤s31中,在得到相机角度之后,基于该房间的房间位置信息和相机角度,得到对应于该房间的第一位移矩阵和第一旋转矩阵。例如,房间位置信息为该房间的全景图片的获取地点的位移坐标和欧拉角,相关说明可参考前文内容,此处不再赘述。例如,位移坐标可以表示为列向量,即表示为3*1的矩阵,将该矩阵称为初始位移矩阵。例如,欧拉角可以利用通常的数学运算方法转换为旋转矩阵,该旋转矩阵为3*3的矩阵,将该矩阵称为初始旋转矩阵。
例如,利用相机角度对初始位移矩阵和/或初始旋转矩阵进行修正,以消除全景相机与移动设备的朝向之间存在的误差,从而得到第一位移矩阵和第一旋转矩阵。例如,可以将相机角度转换为3*3的矩阵,然后与初始位移矩阵和初始旋转矩阵分别相乘,从而分别得到第一位移矩阵和第一旋转矩阵。当然,本公开的实施例不限于此,也可以根据实际需求,将相机角度转换为3*3的矩阵后与初始旋转矩阵相乘,以得到第一旋转矩阵,而不再使相机角度转换的矩阵与初始位移矩阵相乘,此时,第一位移矩阵等于初始位移矩阵。
例如,第一位移矩阵为3*1的矩阵,第一位移矩阵的元素为归一化的数值。关于归一化的方式可参考通常的矩阵归一化的方式,此处不再详述。例如,第一旋转矩阵为3*3的矩阵。
需要说明的是,本公开的实施例中,第一位移矩阵和第一旋转矩阵的计算方式不限于上文描述的方式,也可以省略计算相机角度的步骤,而直接将位移坐标和欧拉角转换为第一位移矩阵和第一旋转矩阵。例如,在其他示例中,当计算精度的要求较低,且需要提高计算效率时,可以直接将通过移动设备获取的位移坐标和欧拉角转换为第一位移矩阵和第一旋转矩阵,此时,第一位移矩阵为位移坐标的矩阵形式,第一旋转矩阵可根据通常的数学计算方法对欧拉角进行转换得到。
例如,在步骤s32中,为了将全部房间统一到同一个坐标系下,需要对每个房间的第一位移矩阵和第一旋转矩阵进行变换。例如,以图2a所示的户型为例,选择第一房间作为参考坐标系,将第二房间的第一位移矩阵和第一旋转矩阵以及第三房间的第一位移矩阵和第一旋转矩阵均变换到该参考坐标系,从而得到第二房间的第二位移矩阵和第二旋转矩阵,并且得到第三房间的第二位移矩阵和第二旋转矩阵。当然,还可以得到第一房间的第二位移矩阵和第二旋转矩阵,由于第一房间本身为参考坐标系,因此,第一房间的第二位移矩阵和第二旋转矩阵为单位矩阵。
例如,在一个示例中,第一房间的第一位移矩阵为tn1,第一房间的第一旋转矩阵为rn1,第一房间的第一位移矩阵tn1和第一旋转矩阵rn1的合并矩阵为m0。例如,m0可以为3*4的矩阵或者为4*4的矩阵。例如,当m0为4*4的矩阵时,将rn1和tn1拼接为3*4的矩阵后再补一行[0001],以构成4*4的矩阵,从而得到m0。通过引入合并矩阵m0,可以便于后续计算,简化计算流程。
类似地,第二房间的第一位移矩阵为tn2,第二房间的第一旋转矩阵为rn2,第二房间的第一位移矩阵tn2和第一旋转矩阵rn2的合并矩阵为m1。例如,m1可以为3*4的矩阵或者为4*4的矩阵。例如,当m1为4*4的矩阵时,将rn2和tn2拼接为3*4的矩阵后再补一行[0001],以构成4*4的矩阵,从而得到m1。
类似地,第三房间的第一位移矩阵为tn3,第三房间的第一旋转矩阵为rn3,第三房间的第一位移矩阵tn3和第一旋转矩阵rn3的合并矩阵为m2。例如,m2可以为3*4的矩阵或者为4*4的矩阵。例如,当m2为4*4的矩阵时,将rn3和tn3拼接为3*4的矩阵后再补一行[0001],以构成4*4的矩阵,从而得到m2。
对于第一房间,第一房间的第二位移矩阵和第二旋转矩阵可采用如下公式计算:m0=m0*m0-1=e。这里,m0为第一房间的第二位移矩阵和第二旋转矩阵的合并矩阵,m0-1为m0的逆矩阵,e为单位矩阵。当m0为4*4的矩阵时,m0也为4*4的矩阵,在m0中,第一行至第三行以及第一列至第三列的元素即为第二旋转矩阵,第四列中第一行至第三行的元素即为第二位移矩阵。
对于第二房间,第二房间的第二位移矩阵和第二旋转矩阵可采用如下公式计算:m1=m0*m1-1。这里,m1为第二房间的第二位移矩阵和第二旋转矩阵的合并矩阵,m1-1为m1的逆矩阵。当m1为4*4的矩阵时,m1也为4*4的矩阵,在m1中,第一行至第三行以及第一列至第三列的元素即为第二旋转矩阵,第四列中第一行至第三行的元素即为第二位移矩阵。
对于第三房间,第三房间的第二位移矩阵和第二旋转矩阵可采用如下公式计算:m2=m0*m2-1。这里,m2为第三房间的第二位移矩阵和第二旋转矩阵的合并矩阵,m2-1为m2的逆矩阵。当m2为4*4的矩阵时,m2也为4*4的矩阵,在m2中,第一行至第三行以及第一列至第三列的元素即为第二旋转矩阵,第四列中第一行至第三行的元素即为第二位移矩阵。
通过上述计算,可以将第一房间、第二房间和第三房间中每个房间的第一位移矩阵和第一旋转矩阵变换到参考坐标系,即变换到第一房间的坐标系,得到的每个房间的第二位移矩阵和第二旋转矩阵均在同一个坐标系下。
需要说明的是,在上述示例中,由于将第一房间作为参考坐标系,因此计算各个房间的第二位移矩阵和第二旋转矩阵时,均以第一房间的第一位移矩阵tn1和第一旋转矩阵rn1的合并矩阵m0为参考,也即是,上述计算公式中均需要引入m0。当然,本公开的实施例不限于此,在其他示例中,也可以选择任意一个房间作为参考坐标系,而不限于第一房间,相应地,上述计算公式中需要引入该房间的第一位移矩阵和第一旋转矩阵的合并矩阵。
例如,在步骤s33中,根据房间的第二位移矩阵、第二旋转矩阵以及该房间中房门的第一坐标,可以得到该房间中房门的第二坐标。
例如,对于第一房间,该房间中房门的第二坐标可采用如下公式计算:p2=m0*p1。这里,p2为第一房间中房门的第二坐标,p1为第一房间中房门的第一坐标。需要说明的是,当m0为4*4的矩阵时,为了便于计算,p1和p2均为4*1的列向量。此时,p1的前三行元素为第一坐标,p1的第四行元素可以补1或0,由此,p2的前三行元素为第二坐标,p2的第四行元素为无效值,该无效值可以舍弃。
类似地,对于第二房间,该房间中房门的第二坐标可采用如下公式计算:p2=m1*p1。这里,p2为第二房间中房门的第二坐标,p1为第二房间中房门的第一坐标。需要说明的是,当m1为4*4的矩阵时,为了便于计算,p1和p2均为4*1的列向量。此时,p1的前三行元素为第一坐标,p1的第四行元素可以补1或0,由此,p2的前三行元素为第二坐标,p2的第四行元素为无效值,该无效值可以舍弃。
类似地,对于第三房间,该房间中房门的第二坐标可采用如下公式计算:p2=m2*p1。这里,p2为第三房间中房门的第二坐标,p1为第三房间中房门的第一坐标。需要说明的是,当m2为4*4的矩阵时,为了便于计算,p1和p2均为4*1的列向量。此时,p1的前三行元素为第一坐标,p1的第四行元素可以补1或0,由此,p2的前三行元素为第二坐标,p2的第四行元素为无效值,该无效值可以舍弃。
通过上述计算,各个房间中房门的第一坐标均被转换到同一个坐标系下,也即是,各个房间中房门的第二坐标在同一个坐标系下,从而使得各个房间中的房门彼此之间具有了可比性。
需要说明的是,虽然上文中各个房间的房门的第一坐标均用p1表示,各个房间的房门的第二坐标均用p2表示,但是,各个房间的房门的第一坐标并不相同,各个房间的房门的第二坐标也并不相同,这里仅是为了使上述各个公式具有规律性而采用了同样的标号,这并不构成对本公开实施例的限制。
例如,每个房门的第二坐标包括两个点的坐标,这两个点即为图2b和图2c所示的a1和a2。在实际环境中,房间与房间之间的墙具有一定厚度,并且在实际采集房间位置信息时存在误差,因此,如图4所示,虽然第一房间与第二房间通过同一个房门s1连通,但是,通过上述计算得到的第一房间中房门s1的第二坐标与第二房间中房门s1’的第二坐标并不相同(也即s1与s1’并不重叠),两者之间存在一定的距离。类似地,在该户型的其他房门中,对于任意一个房门,该房门在不同的房间中得到的第二坐标也不相同。
例如,在步骤s34中,首先将第二坐标降维并旋转得到第三坐标,使第三坐标对应的房门与第一轴平行。例如,对于每个房门,第二坐标包括两个点的坐标,且每个点的坐标为三维坐标。因此,可以舍弃三维坐标中表示海拔高度的元素,仅保留其余两个表示水平面内位置的元素,从而将每个点的坐标降维为二维坐标。为了便于后续步骤中的比较,对于每一个房门,可以将其两个点的二维坐标在水平面内旋转,使这两个点表示的房门与第一轴平行,旋转后的两个点的坐标即为第三坐标。例如,第一轴可以为水平面内的x轴或y轴,也可以为用户定义的轴,这可以根据实际需求而定,本公开的实施例对此不作限制。例如,可以将两个点之间的中点作为旋转中心,使这两个点绕该旋转中心旋转,以得到第三坐标。
需要说明的是,本公开的实施例中,也可以不对第二坐标进行旋转,而仅对第二坐标降维以进行后续步骤的操作,也即是,此时的第三坐标等于第二坐标降维后的坐标,这可以根据实际需求而定,本公开的实施例对此不作限制。
在得到每个房门的第三坐标之后,依次判断并得到多个房间中房门的链接关系。例如,对于每个房门,根据该房门的第三坐标,选择与该房门距离最近的房门并判断两个房门的距离是否小于预设阈值。若这两个房门的距离小于预设阈值,则确定这两个房门具有链接关系,也即,这两个房门在实际环境中为同一个房门。
例如,在一个示例中,如图4所示,对于每个房门,都可以用该房门的两个点(即两个端点)来表示,因此可以根据这两个点的坐标(即第三坐标)计算该房门的中点的坐标。对于第一房间中的房门s1,根据该房门s1的第三坐标得到了中点的坐标,然后根据该中点的坐标,选择与该房门s1距离最近的房门,即第二房间的房门s1’。例如,可以计算出所有房门的中点,并在多个中点中选择距离最近的中点,该中点对应的房门即为距离最近的房门。然后,计算房门s1和房门s1’之间的距离,例如,计算房门s1的中点与房门s1’的中点之间的距离,并判断该距离是否小于预设阈值。若该距离小于预设阈值,则可以确定房门s1与房门s1’具有链接关系,也即是,房门s1与房门s1’在实际环境中为同一个门。采用上述方法遍历所有的房门,从而可以得到第一房间、第二房间、第三房间之间的链接关系,也即是,第一房间、第二房间、第三房间之间的连通关系。
需要说明的是,本公开的实施例中,预设阈值可以为任意数值,这可以根据经验值或根据用户需求确定,本公开的实施例对此不作限制。例如,选择最近的房门和计算房门之间的距离不限于根据房门的中点的坐标计算,也可以采用其他任意适用的方法,这可以根据实际需求而定,本公开的实施例对此不作限制。
例如,图1所示的步骤s40可进一步包括如图5所示的如下操作。
步骤s41:对全景图片进行处理,得到多个房间中每个房间的二维平面图;
步骤s42:根据多个房间的链接关系,将多个房间中每个房间的二维平面图进行组合,以得到二维户型图。
例如,在步骤s41中,可以通过通常的三维编辑工具对全景图片进行处理,例如进行建模、计算等操作,从而得到对应的房间的二维平面图。例如,在一些示例中,可以利用全景图片进行三维建模,然后对房间的三维模型降维,以生成房间的二维平面图。例如,在另一些示例中,可以利用全景图片进行房间轮廓提取和计算,从而可以绘制出房间的二维平面图。例如,在再一些示例中,由于在前文描述的步骤s20中,在计算房门的局部位置信息时,已经根据全景图片进行了建模,因此,在步骤s20中已经得到了该房间的二维平面图,在步骤s41中直接采用即可。当然,本公开的实施例不限于此,可以采用任意的方式得到每个房间的二维平面图。
例如,在步骤s42中,由于已经得到了多个房间的链接关系,也即,多个房间的连通关系,因此,根据多个房间的连通关系将多个房间中每个房间的二维平面图进行组合,从而可以得到二维户型图。
由此,通过上述二维户型图构建方法可以得到所需要的二维户型图。该二维户型图构建方法可以自动确定房间之间的链接关系,无需人工确定,因此可以节约时间,提高效率,并且有助于提高准确率,使得二维户型图更加准确地反映实际房间的情况。
图6为一种可用于实施本公开实施例提供的二维户型图构建方法的系统。如图6所示,该系统100可以包括用户终端110、网络120、服务器130以及数据库140。例如,该系统100可以用于实施本公开任一实施例所述的二维户型图构建方法。
用户终端110例如为电脑110-1或手机110-2。可以理解的是,用户终端110可以是能够执行数据处理的任何其他类型的电子设备,其可以包括但不限于台式电脑、笔记本电脑、平板电脑、智能手机、智能家居设备、可穿戴设备、车载电子设备、监控设备等。用户终端110也可以是设置有电子设备的任何装备,例如车辆、机器人等。
用户可以对安装在用户终端110上的应用程序进行操作,应用程序通过网络120将用户行为数据传输给服务器130,用户终端110还可以通过网络120接收服务器130传输的数据。用户终端110可以通过运行程序或线程的方式实施本公开实施例提供的二维户型图构建方法,并将得到的二维户型图通过网络120传输给服务器130。
在一些示例中,用户终端110可以利用其内置的应用程序执行二维户型图构建方法。在另一些示例中,用户终端110可以通过调用用户终端110外部存储的应用程序执行二维户型图构建方法。
网络120可以是单个网络,或至少两个不同网络的组合。例如,网络120可以包括但不限于局域网、广域网、公用网络、专用网络等中的一种或几种的组合。
服务器130可以是一个单独的服务器,或一个服务器群组,群组内的各个服务器通过有线的或无线的网络进行连接。一个服务器群组可以是集中式的,例如数据中心,也可以是分布式的。服务器130可以是本地的或远程的。
数据库140可以泛指具有存储功能的设备。数据库140主要用于存储用户终端110和服务器130在工作中所利用、产生和输出的各种数据。例如,数据库140中存储有大量房源信息,服务器130从数据库140中读取用户所需要的房源信息,并将该房源信息通过网络120发送至用户终端110,用户终端110显示该房源的二维户型图,从而便于用户浏览。数据库140可以是本地的或远程的。数据库140可以包括各种存储器、例如随机存取存储器(randomaccessmemory,ram)、只读存储器(readonlymemory,rom)等。以上提及的存储设备只是列举了一些例子,该系统100可以使用的存储设备并不局限于此。
数据库140可以经由网络120与服务器130或其一部分相互连接或通信,或直接与服务器130相互连接或通信,或是上述两种方式的结合。
在一些示例中,数据库140可以是独立的设备。在另一些示例中,数据库140也可以集成在用户终端110和服务器130中的至少一个中。例如,数据库140可以设置在用户终端110上,也可以设置在服务器130上。又例如,数据库140也可以是分布式的,其一部分设置在用户终端110上,另一部分设置在服务器130上。
例如,在一些示例中,用户终端110基于多个房间中每个房间的全景图片和房间位置信息,进行处理和计算后,得到多个房间的链接关系,然后进一步得到二维户型图。该二维户型图通过网络120传输给服务器130,并被保存至数据库140。当其他用户在该用户终端110或其他用户终端上使用看房软件时,服务器130通过网络120将用户浏览的房源信息传输给用户终端110,这些房源信息包括该房源的二维户型图。用户终端110上的看房软件显示房源的二维户型图,用户通过点击操作可以对该二维户型图进行缩放、挪动、标记等操作。
本公开至少一个实施例还提供一种二维户型图构建装置,该二维户型图构建装置可以自动确定房间之间的链接关系以生成二维户型图,无需人工确定,可以节约时间,提高效率,并且有助于提高准确率。
图7为本公开一实施例提供的一种二维户型图构建装置的示意框图。如图7所示,该二维户型图构建装置200包括获取单元210、局部位置信息生成单元220、链接关系确定单元230和二维户型图确定单元240。例如,该二维户型图构建装置200可以应用于应用程序中(例如二维户型图绘制软件中),也可以应用于任意的需要构建二维户型图的设备或系统中,本公开的实施例对此不作限制。
获取单元210配置为获取户型的多个房间中每个房间的全景图片和房间位置信息。例如,获取单元210可以执行如图1所示的二维户型图构建方法的步骤s10。局部位置信息生成单元220配置为,基于多个房间中每个房间的全景图片,得到该房间中房门的局部位置信息。例如,局部位置信息生成单元220可以执行如图1所示的二维户型图构建方法的步骤s20。链接关系确定单元230配置为,基于多个房间中每个房间的房间位置信息以及每个房间中房门的局部位置信息,得到多个房间的链接关系。例如,链接关系确定单元230可以执行如图1所示的二维户型图构建方法的步骤s30。二维户型图确定单元240配置为,根据多个房间的链接关系以及多个房间中每个房间的全景图片,得到二维户型图。例如,二维户型图确定单元240可以执行如图1所示的二维户型图构建方法的步骤s40。
例如,获取单元210、局部位置信息生成单元220、链接关系确定单元230和二维户型图确定单元240可以为硬件、软件、固件以及它们的任意可行的组合。例如,获取单元210、局部位置信息生成单元220、链接关系确定单元230和二维户型图确定单元240可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于上述各个单元的具体实现形式,本公开的实施例对此不作限制。
需要说明的是,本公开的实施例中,二维户型图构建装置200的各个单元与前述的二维户型图构建方法的各个步骤对应,关于二维户型图构建装置200的具体功能可以参考关于二维户型图构建方法的相关描述,此处不再赘述。图7所示的二维户型图构建装置200的组件和结构只是示例性的,而非限制性的,根据需要,该二维户型图构建装置200还可以包括其他组件和结构。
图8为本公开一实施例提供的另一种二维户型图构建装置的示意框图。如图8所示,该二维户型图构建装置300包括处理器310和存储器320。存储器320用于存储非暂时性计算机可读指令(例如一个或多个计算机程序模块)。处理器310用于运行非暂时性计算机可读指令,非暂时性计算机可读指令被处理器310运行时可以执行上文所述的二维户型图构建方法中的一个或多个步骤。存储器320和处理器310可以通过总线系统和/或其它形式的连接机构(未示出)互连。
例如,处理器310可以是中央处理单元(cpu)、图形处理单元(gpu)、数字信号处理器(dsp)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元,例如现场可编程门阵列(fpga)等;例如,中央处理单元(cpu)可以为x86或arm架构等。处理器310可以为通用处理器或专用处理器,可以控制二维户型图构建装置300中的其它组件以执行期望的功能。
例如,存储器320可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(rom)、硬盘、可擦除可编程只读存储器(eprom)、便携式紧致盘只读存储器(cd-rom)、usb存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块,处理器310可以运行一个或多个计算机程序模块,以实现二维户型图构建装置300的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
需要说明的是,本公开的实施例中,二维户型图构建装置300的具体功能和技术效果可以参考上文中关于二维户型图构建方法的描述,此处不再赘述。
图9为本公开一实施例提供的另一种二维户型图构建装置的示意框图。该二维户型图构建装置400例如适于用来实施本公开实施例提供的二维户型图构建方法。二维户型图构建装置400可以是终端设备等。需要注意的是,图9示出的二维户型图构建装置400仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
如图9所示,二维户型图构建装置400可以包括处理装置(例如中央处理器、图形处理器等)410,其可以根据存储在只读存储器(rom)420中的程序或者从存储装置480加载到随机访问存储器(ram)430中的程序而执行各种适当的动作和处理。在ram430中,还存储有二维户型图构建装置400操作所需的各种程序和数据。处理装置410、rom420以及ram430通过总线440彼此相连。输入/输出(i/o)接口450也连接至总线440。
通常,以下装置可以连接至i/o接口450:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置460;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置470;包括例如磁带、硬盘等的存储装置480;以及通信装置490。通信装置490可以允许二维户型图构建装置400与其他电子设备进行无线或有线通信以交换数据。虽然图9示出了具有各种装置的二维户型图构建装置400,但应理解的是,并不要求实施或具备所有示出的装置,二维户型图构建装置400可以替代地实施或具备更多或更少的装置。
例如,根据本公开的实施例,上述二维户型图构建方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述二维户型图构建方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置490从网络上被下载和安装,或者从存储装置480安装,或者从rom420安装。在该计算机程序被处理装置410执行时,可以执行本公开实施例提供的二维户型图构建方法中限定的功能。
本公开至少一个实施例还提供一种存储介质,用于存储非暂时性计算机可读指令,当该非暂时性计算机可读指令由计算机执行时可以实现本公开任一实施例所述的二维户型图构建方法。利用该存储介质,可以自动确定房间之间的链接关系以生成二维户型图,无需人工确定,可以节约时间,提高效率,并且有助于提高准确率。
图10为本公开一实施例提供的一种存储介质的示意图。如图10所示,存储介质500用于存储非暂时性计算机可读指令510。例如,当非暂时性计算机可读指令510由计算机执行时可以执行根据上文所述的二维户型图构建方法中的一个或多个步骤。
例如,该存储介质500可以应用于上述二维户型图构建装置300中。例如,存储介质500可以为图8所示的二维户型图构建装置300中的存储器320。例如,关于存储介质500的相关说明可以参考图8所示的二维户型图构建装置300中的存储器320的相应描述,此处不再赘述。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。