基于Android的二维住房户型识别和三维呈现方法与流程

文档序号:13935288
基于Android的二维住房户型识别和三维呈现方法与流程

本发明涉及二维图像识别和三维建模的技术领域,具体涉及一种基于Android的二维住房户型识别和三维呈现方法。



背景技术:

随着计算机软、硬件技术的突飞猛进,计算机图形学在各个行业的应用也得到迅速普及和深入。目前,计算机图形学已进入三维时代,三维图形在人们生活中无所不在。三维图形的虚拟和展示具有直观性强,展示度高,体验感好等特点。同时,计算可视化和计算机动画也成为近年来计算机图形学的热门话题,而这些热门话题的技术核心均为三维图形。建模技术是三维图形最重要的一个技术领域。建模技术是目前计算机图形学中最热门的方向之一,并在各行各业中发挥着重要的作用,如建筑、雕刻、军事、娱乐等。

中国地产市场快速发展,地产市场目前主要还是以住宅市场为主,拥有87.2%的市场份额,商业地产占7.5%,其它为办公、文化教育、旅游、养老地产等。当前,人们在买房过程中,主要通过开发商提供的二维户型图来选择合适的住房户型。从整个市场调研来看,户型图的展示主要是以纸质媒介为主的二维户型图。二维户型图主要有成本较低,展示媒介简单,易于建模等特点。但相比于三维户型图又存在不够直观,展示度低等缺点。三维户型建模由于技术复杂,需要专业的工程技术人员,其没有在房地产行业得到广泛的应用。然而在房地产精细化发展的今天,三维户型建模既是一种趋势,也是新的行业发展所在。特别是能和当前移动互联网结合起来的终端应用,是未来的发展潮流。住宅这个偌大的市场中期待有一个能从户型图纸直接转换为三维场景的手机应用。

经过调研,市场上没有住房户型三维呈现的手机端应用。一些大公司,如Autodesk等做过相关软件,是使用给定房间和家具模型进行组合拼装,操作复杂,建立一个房间耗时较多,主要功能是用作家具摆设的设计参考。这些软件没有以实际户型为基础构建房间,得到的房间户型不真实。

三维建模技术的崛起以及虚拟现实技术的出现为设计和创新提供了一种极好的工作平台。各种建模方法大致可分为几何建模技术、参数化建模技术、变量化建模技术、以及特征建模技术等。

常用的三维几何建模技术类型有线框建模、表面建模、实体建模。

1、线框建模:线框建模所关注的是形体边界上的棱线。主要是为了解决自动化绘图中的形体在计算机内部的表示问题。线框建模对于平面形体是十分有效的。但对于含有曲面的形体却又明显的不足,因为含有曲面的形体其轮廓线并非都是棱线。凡不为棱线的轮廓线都是不能确定的,它随着观察者的视点和视角的变化而变化。

2、表面建模:表面建模在线框建模的基础上,增加了物体中面的信息,用面的几何来表示物体,而用环来定义面的边界。表面客服了线框模型的很多缺点,比较完整的定义了三维立体的表面,无法解析和非解析的目标均可用表面模型来描述。但表面模型也存在一些不足,这主要是它只能表示物体的表面边界,而没有表达出真实体属性,如质量、转动惯量、质心等。

3、实体建模:实体建模是目前最高级的三维物体模型,它能完整地表示物体的所有形状信息。可以无歧义地确定一个点在物体外部、内部或表面上,这种模型能够进一步满足物性计算、有限元分析等应用的要求。

参数化建模和变量化建模是基于约束的设计方法的两种主要形式。其共同点在于:他们都能处理设计人员通过交互方式添加到零件模型中的约束关系,并具有在约束参数变动时自动更新图形的能力,使得设计人员不再用自己考虑如何更新几何模型符合设计上要求的约束关系。

变量化建模为设计对象的修改提供更强大的自由度,允许存在尺寸约束。

特征建模从实体建模技术发展而来,是根据产品的特征进行建模的技术。特征建模不仅可以提供产品的几何信息,还可以提供产品的各种功能性信息。

综上所述,以上几种三维建模方法用于三维户型的建模时,具有以下缺点:

1.建模专业性强,设计复杂,难度高,需要熟练的建模工程人员。

2.操作繁杂,参数众多,学习成本非常高。

3.需要专业的建模桌面软、硬件,无法满足在移动终端上的快速建模需求。



技术实现要素:

本发明的目的是为了解决现有技术中的上述缺陷,提供一种基于Android的二维住房户型识别和三维呈现方法。

本发明的目的可以通过采取如下技术方案达到:

一种基于Android的二维住房户型识别和三维呈现方法,所述方法包括下列步骤:

S0、提取与分类二维户型图信息,构建三维户型图建模元素;

S1、通过拍照或加载相册中的图片,选取图像格式的二维户型图;

S2、对图片进行纠正、裁剪、图像处理,得到墙体的二值图;

S3、提取进行3D绘制的数据,通过交互界面,在用户滑动选取房间位置后自动识别房间,待所有房间都选取完毕后进行3D绘制;

S4、将选取的房间绘制到三维空间,呈现三维户型;

S5、实现在移动终端上的手势操作,并通过手势操作来对三维户型图进行漫游操作,包括:a)通过单指手势操作实现视线向量的整体水平移动、b)通过双指手势操作实现视线向量的向量方向平移、c)通过双指手势操作实现视线向量绕点的旋转。

进一步地,所述步骤S2包括以下步骤:

S201、对图片的非图形部分进行剪切;

S202、基于全局阈值的图像二值化,根据图像灰度的空间分布确定一个阈值,并根据该阈值实现灰度图像到二值化图像的转化;

S203、形态学图像处理,通过膨胀操作使图像中的亮区域增长,通过腐蚀操作使图像中的亮区域减小。

进一步地,所述步骤S202包括以下步骤:

S2021、获取图片中出现的每个灰度值及其出现的概率,用二维数组中的第一堆存放灰度值,第二堆存放对应灰度值出现的概率,PPjx(0,j)存放图像中第j个像素的灰度值,PPjx(1,j)存放第j个灰度值出现的概率;

S2022、求取灰度值的离散函数分布F(i):

其中,i为从0开始到图像中灰度值的种类总数;

S2023、求取前i种灰度值出现的概率之和PSum(i):

其中,i为从0开始到图像中灰度值的种类总数;

S2024、求整体图像的灰度平均值AGray,即对图像中所有像素的灰度值求和,然后除以像素的总数;

S2025、求取不同灰度值下的阈值权重WValue(i):

其中,i为从0开始到图像中灰度值的种类总数;

S2025、求得最大WValue(i)的i值对应的灰度值作为最优的二值化阈值。

进一步地,所述步骤S3包括以下步骤:

S301、边缘检测,首先采用离散化的高斯函数产生一组归一化的高斯核,然后基于高斯核函数对图像灰度矩阵的每一点进行加权求和,然后通过增强算法将图像灰度点邻域强度值有显著变化的点凸显出来,接着通过通过阈值化方法来检测边缘点;

S302、霍夫变换,运用笛卡尔坐标和极坐标两个坐标空间之间的变换将在笛卡尔坐标空间中具有相同形状的曲线或直线映射到极坐标空间的一个点上形成峰值,把检测任意形状的问题转化为统计峰值问题;

S303、已提取信息的优化;

S304、场景树的构建。

进一步地,所述步骤S303包括以下步骤:

S3031、对所有线段进行分类,将所有线段化分为垂直线段,水平线段和其它线段,然后只保留垂直线段和水平线段,对于平面上的一条直线AB,如果A,B的坐标满足关系|xA-xB|<Factor,那么直线是垂直的,如果A,B的坐标满足|yA-yB|<Factor,那么直线是水平的,其中Factor是误差因子;

S3032、对分类后的线段根据直线段的起点坐标排序,其中,排序使用归并排序;

S3033、对排序后的线段进行优化,将一些无用的线段剔除,多余的线段合并。

进一步地,所述步骤S3033中对排序后的线段进行优化具体为:

根据排序后的直线段,相邻两直线段之间的关系的具体优化处理方式如下:若两直线段之间是包含或者相同关系时,则保留较长的线段;

若两直线段之间是相交关系时,则将相邻的两个线段合并;

若两直线段之间是相离关系时,则保留两个线段,并继续处理。

进一步地,所述步骤S304包括以下步骤:

S3041、加载图像;

S3042、选中房间区域;

S3043、根据选中区域,运用插入排序,得到该区域最近的直线范围;

S3044、确定一个矩形框,扩大该矩形框的x方向和y方向到得到的范围,在这个范围内检测是否有直线,如果有,那么返回一个记录了结果的对象,如果没有,那么在x或者y方向上继续增长,直到有直线落在矩形框确定的边内;

S3045、再次扩大矩形框得到第二个边界,先对得到的两个矩形框,即innner和outter之间的距离进行排序,用相邻两个距离值作为纵坐标,横坐标距离为1,求得两相邻距离之间的斜率,使用这个斜率对得到的结果进行筛选和优化;

S3046、根据最近的直线范围、房间内边界和房间外边界、已确定的柱子大小,确定最终范围,再根据内外边界未相交空白区域大小,确定门或窗的位置,最后根据所得计算出所有墙和地面。

进一步地,所述步骤S3045中使用斜率对得到的结果进行筛选和优化具体为:

设内矩形框inner(p1,p2,p3,p4),外矩形框outter(p1,p2,p3,p4);

求上、下、左、右的边界值并排序;

对得到的距离进行排序,排序过程不改变原来数组的值,使用新数组记录排序后的原数组下标值,假设得到的排好序的四个距离值为d1,d2,d3,d4;

对相邻两个距离求倾斜角θ=(d4-d3)*π/180;

根据倾斜角的大小,做筛选,设定的范围大小为:

如果倾斜角θ∈(π/6,+∞),那么说明得到的距离最大值过于大,应该被淘汰,此时将outter作为内边界,外边界使用d2,d3的平均值;

如果θ∈(π/10,π/6],那么说明此时的内外边界之间包含大柱子,进行柱子位置判断之后,将柱子存储,并将边缘继续扩大,将outter作为内边界,外边界使用d2,d3的平均值;

如果θ∈(0,π/10],那么说明在正常误差范围内,不做处理。

进一步地,所述步骤S5包括以下步骤:

S501、通过单指操作的视线向量的整体水平移动:

在屏幕上单指手势的每次移动都产生一组变量(dx,dy),设这个变量的起点为A,终点为B,则的移动是基于当前位置的,而不是x轴和z轴,该步骤具体如下:

S5011、计算在x0z平面投影的单位向量计算方式如下式所示

S5012、求得x0z平面内与垂直的单位向量

S5013、求平移后的向量

S5014、将平移后的向量应用到摄像机;

S502、通过双指操作的视线向量的向量方向平移:

在屏幕上双指每次移动两指头之间都产生一个距离变化量ds,ds的求解方式如下式所示:

根据这个距离变化量ds计算得到向量平移后的位置,该步骤具体如下:

S5021、计算的单位向量

S5022、求平移后的向量

S5023、将平移后的向量应用到摄像机;

S503、通过双指操作的视线向量绕点A点旋转:

将向量放置在球中,让摄像机位于球心A点,视点B位于球面上,在屏幕上,双指距离保持不变时,双指相当于一指,每次移动产生两组相同的变量(dx,dy),再设置一个投影参数α之后,将屏幕的坐标变化投影为球面上角度的变化,其中,球的参数方程如下式所示:

上式中为经度,θ∈(0,180)为纬度,a,b,c为球心坐标,该步骤的具体操作如下:

S5031、将(dx,dy)投影为球参数方程中的角度变化:

S5032、计算球的球径

S5033、重新计算B点坐标计算过程如下式所示:

S5034、求平移后的向量的计算方法如下式所示:

S5035、将平移后的向量应用到摄像机。

本发明相对于现有技术具有如下的优点及效果:

1)本发明将复杂的三维户型建模过程转化为一个自动化的建模过程,上手简单,用户学习起来的简单方便,特别是没有专业知识的普通用户只需要经过简单的几个步骤即可实现三维户型的构建。

2)本发明使用移动终端完成二维户型图片的识别和三维户型的呈现,并实现场景内漫游,特别适用于远程看房等业务场景。移动设备以其便携,易用等特点,突破了传统方法要在台式电脑或专用设备上展示的局限,大大提高了用户的体验。

3)本发明方法可以用于三维户型展示、家居产品的展示、房屋销售广告、等领域,应用范围相当广阔。

附图说明

图1是本发明公开的一种基于Android的二维住房户型识别和三维呈现方法的流程步骤图;

图2是边缘检测结果图;

图3是球的参数方程示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例

如附图1所示,本实施例公开了一种基于Android的二维住房户型识别和三维呈现方法,该方法通过将给定的户型图生成维的户型场景并实现室内漫游;同时还依托于Android移动设备,解决了依赖专有设备对建模结果的展示,简单方便。

该方法包括下列步骤:

S0、二维户型图信息提取与分类,三维户型图建模元素的构建。

S1、通过拍照或加载相册中的图片,选取图像格式的二维户型图:首先打开一张户型图或者用相机拍摄一张户型图。

S2、对图片进行适当纠正,裁剪:打开剪切软件进行裁剪,裁剪完成后,点击识别按钮后,会进行一系列的图像处理,得到墙体的二值图。

S3、在二值化后的二维户型图片基础上,提取进行3D绘制的各建模元素的基本数据。

点击继续之后会进入到一个需要交互的界面,用户滑动选取房间位置后,系统会自动识别房间,待所有房间都选取完毕,点击绘制。

该步骤在应用中对二维户型图片进行尺寸上的适当裁剪和修正,并对二维户型图片进行二值化操作和形态学操作包括:对二维户型图片进行二值化操作采用基于全局阈值的图像二值化;对二维户型图片进行形态学操作包括二种:膨胀与腐蚀。

S4、呈现三维户型:软件会将选取的房间绘制到三维空间。

该步骤在应用中二维户型图的三维呈现方法采用基于Android平台的移动终端的多点触控交互与自动化结合的构建方式。

S5、实现在三维户型图内漫游:在三维空间中,可以使用单指和双指操作模型实现漫游。

该步骤在应用中户型图的在三维状态下进行建筑物或户型漫游时,在基于Android平台的移动终端上可根据视点位置动态切换并展示不同的场景。

其中,所述步骤S0中二维户型图信息提取与分类包括:(1)平面黑白手绘线框型(无家具)---墙体黑色或者空心框;(2)平面黑白手绘线框型---墙体黑色或者空心框;(3)平面黑白手绘线框型---墙体都为空心框;(4)平面彩色模拟实物线框型---墙体黑色或者空心框;(5)立体彩色模拟实物线框型---墙体黑色或者空心框。

其中,所述步骤S2具体过程如下:

S201、对图片的非图形部分进行剪切;

S202、基于全局阈值的图像二值化:根据图像灰度的空间分布确定一个阈值,并根据该阈值实现灰度图像到二值化图像的转化。对二维户型图片进行二值化操作采用基于全局阈值的图像二值化,使整个图像呈现出明显的黑白效果,可以最大限度的将图象中感兴趣的部分保留下来,使图像中数据量大为减少。

其中,全局最优二值化阈值选取的步骤如下:

S2021、获取图片中出现的每个灰度值及其出现的概率。

首先,对图片中出现的灰度值进行排序。

其次,计算所有出现的灰度值的个数及统计每个灰度值出现的次数。

最后,求每个灰度值出现的次数所占所有灰度值个数的百分比(离散概率)。用二维数组中的第一堆存放灰度值,第二堆存放对应灰度值出现的概率,例如PPjx(0,j)存放图像中第j个像素的灰度值,PPjx(1,j)存放第j个灰度值出现的概率。

S2022、求取灰度值的离散函数分布F(i):

其中,i为从0开始到图像中灰度值的种类总数。

S2023、求取前i种灰度值出现的概率之和PSum(i):

其中,i为从0开始到图像中灰度值的种类总数。

S2024、求整体图像的灰度平均值AGray,即对图像中所有像素的灰度值求和,然后除以像素的总数。

S2025、求取不同灰度值下的阈值权重WValue(i):

其中,i为从0开始到图像中灰度值的种类总数。

S2025、求得最大WValue(i)的i值对应的灰度值作为最优的二值化阈值。

S203、形态学图像处理:通过膨胀操作可以使图像中的亮区域增长,通过腐蚀操作可以使图像中的亮区域减小。

对二维户型图片进行形态学操作包括二种:膨胀与腐蚀。膨胀与腐蚀能实现多种多样的功能,主要如下:消除噪声;分割出独立的图像元素,在图像中连接相邻的元素;寻找图像中的明显的极大值区域或极小值区域;求出图像的梯度。

其中,所述步骤S3具体过程如下:

S301、边缘检测:

滤波:边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。常见的滤波方法主要有高斯滤波,即采用离散化的高斯函数产生一组归一化的高斯核,然后基于高斯核函数对图像灰度矩阵的每一点进行加权求和。

增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将图像灰度点邻域强度值有显著变化的点凸显出来。

检测:经过增强的图像,往往邻域中有很多点的梯度值比较大,而在特定的应用中,这些点并不是我们要找的边缘点,所以应该采用某种方法来对这些点进行取舍。实际工程中,常用的方法是通过阈值化方法来检测,如图2展示的是边缘检测的结果图。

S302、霍夫变换:运用两个坐标空间(笛卡尔坐标和极坐标)之间的变换将在笛卡尔坐标空间中具有相同形状的曲线或直线映射到极坐标空间的一个点上形成峰值,从而把检测任意形状的问题转化为统计峰值问题。

S303、已提取信息的优化:

S3031、对所有线段进行分类:将所有线段分为垂直线段,水平线段和其它线段,其它线段被舍弃。对于平面上的一条直线AB,如果A,B的坐标满足关系|xA-xB|<Factor,那么直线是垂直的,类似的如果A,B的坐标满足|yA-yB|<Factor,那么直线是水平的,其中Factor是误差因子。

S3032、对分类后的线段根据直线段的起点坐标排序。排序使用归并排序,归并排序是一种稳定排序,其复杂度为O(nlgn),空间复杂度为O(n)。

S3033、对排序后的线段进行优化。主要是将一些无用的线段剔除,多余的线段合并。排序后的直线段,相邻两直线段之间的关系有三种:

a.包含/相同:只保留较长的线段;

b.相交:将相邻的两个线段合并;

c.相离:保留两个线段,并继续处理。

S304、场景树的构建:

S3041、加载图像。

S3042、选中房间区域。

S3043、根据选中区域,运用插入排序,得到该区域最近的直线范围。

S3044、确定一个矩形框,扩大该矩形框的x方向和y方向到得到的范围,在这个范围内检测是否有直线,如果有,那么返回一个记录了结果的对象,如果没有,那么在x或者y方向上继续增长,直到有直线落在矩形框确定的边内。

S3045、再次扩大矩形框(选用比得到的矩形框稍大的矩形框)可以得到第二个边界。这时候先对得到的两个矩形框(innner和outter)之间的距离进行排序,如果用相邻两个距离值作为纵坐标,横坐标距离为1,那么可以求得两相邻距离之间的斜率。使用这个斜率对得到的结果进行筛选和优化。

设内矩形框inner(p1,p2,p3,p4),外矩形框outter(p1,p2,p3,p4);

求上、下、左、右的边界值并排序。因为是垂直或者水平直线,所以计算方法直接用两个点的横坐标或者纵坐标相减;

对得到的距离进行排序,排序过程不改变原来数组的值,使用新数组记录排序后的原数组下标值,假设得到的排好序的四个距离值为d1,d2,d3,d4;

对相邻两个距离求倾斜角θ=(d4-d3)*π/180;

根据倾斜角的大小,做筛选,本实施例中设定的范围大小为:如果倾斜角θ∈(π/6,+∞),那么说明得到的距离最大值过于大,应该被淘汰,此时将outter作为内边界,外边界使用d2,d3的平均值;如果θ∈(π/10,π/6],那么说明此时的内外边界之间包含大柱子,进行柱子位置判断之后,将柱子存储,并将边缘继续扩大,将outter作为内边界,外边界使用d2,d3的平均值;如果θ∈(0,π/10],那么说明在正常误差范围内,不做处理。

S3046、根据最近的直线范围、房间内边界和房间外边界,和步骤S3045中确定的柱子大小,确定最终范围,再根据内外边界未相交空白区域大小,确定门或窗的位置,最后根据所得计算出所有墙和地面。

其中,所述步骤S5具体过程如下:

S501、视线向量的整体水平移动(单指):

在手机屏幕上,手势的每次移动都产生一组变量(dx,dy),的移动是基于当前位置的,而不是x轴和z轴,所以每次移动时候都是基于当前向量新建的“临时x轴z轴”。具体操作步骤整理如下:

S5011、计算在x0z平面投影的单位向量计算方式如下式所示

S5012、求得x0z平面内与垂直的单位向量(根据);

S5013、求平移后的向量

S5014、将平移后的向量应用到摄像机。

S502、视线向量的向量方向平移(双指):

在手机屏幕上,双指每次移动两指头之间都产生一个距离变化量ds,ds的求解方式如下式所示。

可以根据这个距离变化量ds计算得到向量平移后的位置,具体操作步骤整理如下:

S5021、计算的单位向量

S5022、求平移后的向量

S5023、将平移后的向量应用到摄像机。

S503、视线向量绕点A旋转(双指):

该步骤的操作思路是将向量放置在球中,让摄像机位于球心A点,视点B位于球面上,在手机屏幕上,双指距离保持不变时,这时候双指相当于一指,每次移动产生两组相同的变量(dx,dy),再设置一个投影参数α之后,将手机屏幕的坐标变化投影为球面上角度的变化,如图3所示。

球的参数方程如下式所示:

上式中为经度,θ∈(0,180)为纬度,a,b,c为球心坐标。

该步骤的具体操作如下:

S5031、将(dx,dy)投影为球参数方程中的角度变化:

S5032、计算球的球径

S5033、重新计算B点坐标计算过程如下式所示:

S5034、求平移后的向量的计算方法如下式所示:

S5035、将平移后的向量应用到摄像机。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1