一种快速搜索海量数据集K_近邻空间球算法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
卫 炜, 张丽艳, 周来水
210016) ( 南京航空航天大学 CA D/ CA M 工程研究中心 , 江 苏 南京
A Spatial Sphere Algorithm for Searching K -Nearest Neighbors of Massive Scattered Points
WEI Wei, ZH ANG Li y an, ZH OU Lai shui
第5期
卫
炜等 : 一种快速搜索海量数据集 K - 近邻空间球算法
3
945
树, 利用根节 点和叶 节点 进行 K - 近邻 搜索 , 后 来 Whit e[ 2] 和 Kat ayama [ 3] 又分别 提出 了改良 的 SS - 树和 SR - 树 结 构; Good - sell[ 4] 提 出 利 用 点 集 Voronoi 图来 进行 K - 近邻 搜索 ; P iegl 研究 了 平面 点集 的 K 个 最 近 邻 域 搜 索 问 题; 周 儒 荣 等
对数据点集进行空间栅格划分, 并计算测点到所 在立方体栅格 6 个面的距离 , 对距离进行排序。 根据距离的大小确定空间球的半径, 考虑不同半 径的空间球与哪些立方体栅格发生干涉 , 结合搜 索终止条件, 在发生干涉的立方体栅格中进行搜 索。具体的算法描述如下 : ( 1) 对数据点集进行空间栅格划分, 即将每个 点存放到对应的立方体栅格中。在这一过程中, 要 根据点集的总点数、 空间包围盒的大小、 K 的取值 进行合理的空间栅格划分 , 即将包围盒划分为 m n l 个小立方体栅格。设数据点集中 X , Y, Z 坐标 的最 小、 最 大 值 分 别 为 X min , X max , Ym in , Ymax , Zmin , Zm ax ; 数据点集点的个数为 N ; 立方体栅格的 长度为 lc , 则 l c 由式( 1) 确定
( CAD/ CAM Resear ch Center, Nanjing U niver sity of A eronautics and A stro nautics, N anjing 摘 210016, China)
要 : 提出了一种快速搜索海量数据集 K - 近邻的空间球搜 索算法。将数 据点集进行 空间栅格 划分 , 假想
图1 Fig 1
sort 数据结构示意图
Illu st rat ion of data st ruct ur e sort
2
K- 近邻空间球搜索算法
采用逐步递加搜索立方体栅格的策略。首先
( 4) 判定该测点是否位于数据点集包围盒最 外面一圈立方体栅格。如果是, 则计算测点到数 据点集包围盒 6 个面的距离, 并按升序进行距离 排序 , 如果最短距离小于立方体栅格边长的一半, 表示该测点紧靠包围盒的外面 , 则改变 sort [ 0] 的 d t 值; 如果最短距离和次短距离均小于立方体栅 格边长的一 半, 则 改变 sort [ 0] 和 sort [ 1] 的 d t 值。 ( 5) 假设存 在一空 间球 , 其 半径 为 sort [ 0] 的 d t 值 , 该空间球应该被 包围在 p 点所在 的栅 格内 , 搜索该栅格 , 计算 栅格内每一点到 p 点的 距离 , 对所有点的距离进行升序 排列 , 检 查距离 链表 , 如果第 K 个点距离小于空间球半径 , 则表 示已经找到符合条件的 K- 近邻, 结束搜索 ; 如果 第 K 个点距离大 于空间球 的半径 , 或者该 栅格 里没有包含 K 个 测点 , 则修改空 间球的半 径为
, 其中
之间的欧氏距离。
1
相关研究工作
最简单的 K - 近 邻算法 是计 算数 据点集 中
所有点与某 一点的 欧氏 距离 , 通 过距 离的排 序 判断与之距离最近的 K 个点 , 该算法简单明了 , 但是 其 时间 复 杂度 为 O( N 2 ) ( N 为 数据 点 总 数) , 对于大数 据 集, 难以 满足 工程 要求。许 多 学者对 K - 近 邻算 法进 行了研 究。 Beckmann[ 1] 提出按数据点的分布区域 , 建立数据点集的 R* -
收稿日期 : 2005 -04 -04; 修订日期 : 2005 -09 -10 基金项目 : 国家自然科学基金 ( 50475041) 、 霍英东教育基金会高校青 年教师基金 ( 91053)
十分巨大 , 因此 K - 近邻搜索的 效率直接影响到 逆向建模的 效率 , 对此 进行 研究 有重 要的实 际 应用价值。在文 中 K - 近邻 搜索 是指 在给定 的 数据点集 P 中的某一点 p , 要求按顺序找出所有 距 p 点有最近距离的点 , 特别地, 要求搜索出 K 个最邻 近点。其数 学定 义为 : 设 数据 点 集 P = { p i , i= 1, 2, 据点的点集 Q p- q , n} , 对于 P , 使得 p- h p q P , 待求的 K 个数 Q, h P - Q, 则 表示点 与点
提出空间 划分 策略 , 该算 法将 数据 点集 看
作一个大的 数据包 围盒 , 根 据一 定的 原则划 分 为若干个小 的立方 体栅 格 , 这样 数据 点集中 的 每个点都位于相应的栅格中 , 在搜索一点的 K 近邻时 , 需 要在测 量点 所在 的立 方体 栅格及 其 相邻的上下、 左 右、 前后 共 27( 3 3 3) 个 小立 方体栅格中查找 K 个最邻近的点。熊邦书等 [ 7] 利用空间划分策略 , 考虑数据点 集的范围、 总点 数和 K 的取值 , 给出一 种估算立 方体栅格 边长 的方法 , 并在文献 [ 5] 的基础上 , 改进搜索范围 , 首先搜索测 点当前 所在 栅格 , 如 果满 足搜索 条 件, 则结束搜索 ; 反 之 , 搜索 范围 由当 前栅格 向 外扩充一圈。这种算法虽 然对搜索的范 围作了 改进 , 但还需要搜索较多的栅格 , 而且随 着测量 数据的增多 特别是 对于 海量 数据 , 利 用上述 算 法进行 K - 近邻搜 索的 时间 会越 来越 长。本 文 同样 基 于 空 间 划 分 的 策 略 , 对 搜 索 的 栅 格 范 围提出一种 改进 算法 , 即 空间 球搜 索算 法。该 算法每 次 搜索 立 方体 栅 格 的个 数 与 假想 空 间 球的半径有关 , 建立对应的搜索 终止原则 , 有效 减少 了 搜 索 立 方 体 栅 格 的 个 数, 提 高 了 算 法 效率。
K - 近邻广泛应用于逆向工程、 地理信息、 神 经网络、 计算几何学、 图像识别等 领域。本文主 要研究了一种面向逆向工程的快速搜索 K- 近邻 的方法。在 制造业 中 , 逆向 工程 是指 根据已 有 实物模型的 坐标测 量数 据 , 重新 建立 实物的 数 字化模型 , 进行 分析、 修 改 , 再通 过快 速成型 或 数控加工制造出样 品模型和模具。其中 基于散 乱数据点集的模型重建是 逆向工程重要 的研究 内容 之 一。 由于 散 乱 点集 缺 少 明 显的 拓 扑 关 系, 因此需要通过 K- 近邻搜索 , 建立散乱测点间 邻接关系的数据结构。利用每一测点的 K- 近邻 结构来反映出待重建曲面 在该测点处的 形状信 息, 如法矢和 曲率特 性等。 K- 近 邻搜 索是基 于 散乱数据点集模型 重建的关键步 骤。随 着测量 设备的不断发展 , 高效率、 高精度地采集 样件的 外形数据已 可以实 现 , 采集 的数 据点 数目常 常
存在空间球 , 并以当前测点为球心 , 半径分别取测点到所在 立方体栅 格 6 面的距 离。首先取半径 最小的空 间 球 , 在与之发生干涉的栅格中进行 K - 近邻搜索 , 若满足 所建立的搜索终止原则 , 则终止搜索 ; 否则 , 取更 大半 径的空间球 , 重复上述过程。实验结果表明 , 所提出的算法可 对海量数 据集进 行快速 K- 近邻 搜索 , 较已有 算 法明显提高搜索速度。 关键词 : K- 近邻 ; 海量数据 ; 逆向 工程 ; 空间划分 中图分类号 : T P391 文献标识码 : A Abstract: A spatial sphere alg or ithm is pro po sed for searching K- N ea rest N eig hbo rs ( K- N N ) of one measured po int in scatter ed po int set. At first, the scatter ed po ints ar e div ided into a set of unifor m cells. Suppose ther e ex ist a ser ies o f spatial spher es w ith the same center being the curr ent point, and the radii being the distances from the point t o one o f t he six cells planes respectiv ely . A spher e w ith the smallest r adius is first taken to de ter mine the cells that inter fere spatially w ith t he sphere. T hen a K- N N search is carr ied out within the inter fer ing gr ids until the sear ching termination co ndit ion is satisfied. O therw ise, the spher e with lar ger radius is taken, and abo ve searching pro cess is repeated. Ex periments show that the alg or ithm is v ery fast to search KNN o f scatter ed points in compariso n w ith ex isting alg or ithms. Key words: K- near est neig hbo r; massive scatt ered po int s; rev er se eng ineering; spat ial part itio n
第 27 卷 2006 年
第5期 9月
航 空 学 报 ACT A A ERON A U T ICA ET A ST RO N AU T ICA SIN ICA
Vo l 27 No 5 Sept. 2006
文章编号 : 1000 - 6893( 2006) 05 -0944 - 05
一种快速搜索海量数据集 K- 近邻空间球算法
[ 6] Biblioteka Baidu 5]
lc =
ak | X max - X min N
Ymax - Ymin
Zm ax - Zm in |
( 1) 式中 表示每个立方体栅格中平均数据点的个数 与 K 个邻近点之间的系数, 通过改变 值可以调 节立方体栅格边长的大小, 以便给定的立方体栅格 边长是一较合理的取值。文献[ 7] 通过大量实验给 出了 1 个 的经验值。本文实验取 = 1 31。 小立方体栅格在 X , Y, Z 3 个方向的个数由式 ( 2) 确定( [ . ] 表示向上取整) m = [ ( X m ax - X min ) / lc ] n = [ ( Y max - Y min ) / lc ] ( 2) l = [ ( Z max - Z min ) / lc ] ( 2) 读数据点集中的第 1 个点 p , 根据其空间 坐标值确定所在的栅格索引号。 ( 3) 计算该 点到其 所在 立方 体栅 格 6 个 面 的距离 , 考 虑算 法要判 定测 点在 立方 体栅格 中 的位置 , 即 该点 最靠近 立方 体 6 个面 中的哪 一 侧, 建立如图 1 所示 的 sort 数据 结构。其 中 d t 表示点到栅格 6 个面的距 离数值 ; ID 表示 该距 离的计算具体是 针对 6 个面中的 哪 1 个面。对 这 6 个距离进行升序排列 , 得到 1 个距离数组 sor t[ 0] , sort [ 1] , so rt[ 2] , sort [ 3] , sor t[ 4] , sort [ 5] 。
210016) ( 南京航空航天大学 CA D/ CA M 工程研究中心 , 江 苏 南京
A Spatial Sphere Algorithm for Searching K -Nearest Neighbors of Massive Scattered Points
WEI Wei, ZH ANG Li y an, ZH OU Lai shui
第5期
卫
炜等 : 一种快速搜索海量数据集 K - 近邻空间球算法
3
945
树, 利用根节 点和叶 节点 进行 K - 近邻 搜索 , 后 来 Whit e[ 2] 和 Kat ayama [ 3] 又分别 提出 了改良 的 SS - 树和 SR - 树 结 构; Good - sell[ 4] 提 出 利 用 点 集 Voronoi 图来 进行 K - 近邻 搜索 ; P iegl 研究 了 平面 点集 的 K 个 最 近 邻 域 搜 索 问 题; 周 儒 荣 等
对数据点集进行空间栅格划分, 并计算测点到所 在立方体栅格 6 个面的距离 , 对距离进行排序。 根据距离的大小确定空间球的半径, 考虑不同半 径的空间球与哪些立方体栅格发生干涉 , 结合搜 索终止条件, 在发生干涉的立方体栅格中进行搜 索。具体的算法描述如下 : ( 1) 对数据点集进行空间栅格划分, 即将每个 点存放到对应的立方体栅格中。在这一过程中, 要 根据点集的总点数、 空间包围盒的大小、 K 的取值 进行合理的空间栅格划分 , 即将包围盒划分为 m n l 个小立方体栅格。设数据点集中 X , Y, Z 坐标 的最 小、 最 大 值 分 别 为 X min , X max , Ym in , Ymax , Zmin , Zm ax ; 数据点集点的个数为 N ; 立方体栅格的 长度为 lc , 则 l c 由式( 1) 确定
( CAD/ CAM Resear ch Center, Nanjing U niver sity of A eronautics and A stro nautics, N anjing 摘 210016, China)
要 : 提出了一种快速搜索海量数据集 K - 近邻的空间球搜 索算法。将数 据点集进行 空间栅格 划分 , 假想
图1 Fig 1
sort 数据结构示意图
Illu st rat ion of data st ruct ur e sort
2
K- 近邻空间球搜索算法
采用逐步递加搜索立方体栅格的策略。首先
( 4) 判定该测点是否位于数据点集包围盒最 外面一圈立方体栅格。如果是, 则计算测点到数 据点集包围盒 6 个面的距离, 并按升序进行距离 排序 , 如果最短距离小于立方体栅格边长的一半, 表示该测点紧靠包围盒的外面 , 则改变 sort [ 0] 的 d t 值; 如果最短距离和次短距离均小于立方体栅 格边长的一 半, 则 改变 sort [ 0] 和 sort [ 1] 的 d t 值。 ( 5) 假设存 在一空 间球 , 其 半径 为 sort [ 0] 的 d t 值 , 该空间球应该被 包围在 p 点所在 的栅 格内 , 搜索该栅格 , 计算 栅格内每一点到 p 点的 距离 , 对所有点的距离进行升序 排列 , 检 查距离 链表 , 如果第 K 个点距离小于空间球半径 , 则表 示已经找到符合条件的 K- 近邻, 结束搜索 ; 如果 第 K 个点距离大 于空间球 的半径 , 或者该 栅格 里没有包含 K 个 测点 , 则修改空 间球的半 径为
, 其中
之间的欧氏距离。
1
相关研究工作
最简单的 K - 近 邻算法 是计 算数 据点集 中
所有点与某 一点的 欧氏 距离 , 通 过距 离的排 序 判断与之距离最近的 K 个点 , 该算法简单明了 , 但是 其 时间 复 杂度 为 O( N 2 ) ( N 为 数据 点 总 数) , 对于大数 据 集, 难以 满足 工程 要求。许 多 学者对 K - 近 邻算 法进 行了研 究。 Beckmann[ 1] 提出按数据点的分布区域 , 建立数据点集的 R* -
收稿日期 : 2005 -04 -04; 修订日期 : 2005 -09 -10 基金项目 : 国家自然科学基金 ( 50475041) 、 霍英东教育基金会高校青 年教师基金 ( 91053)
十分巨大 , 因此 K - 近邻搜索的 效率直接影响到 逆向建模的 效率 , 对此 进行 研究 有重 要的实 际 应用价值。在文 中 K - 近邻 搜索 是指 在给定 的 数据点集 P 中的某一点 p , 要求按顺序找出所有 距 p 点有最近距离的点 , 特别地, 要求搜索出 K 个最邻 近点。其数 学定 义为 : 设 数据 点 集 P = { p i , i= 1, 2, 据点的点集 Q p- q , n} , 对于 P , 使得 p- h p q P , 待求的 K 个数 Q, h P - Q, 则 表示点 与点
提出空间 划分 策略 , 该算 法将 数据 点集 看
作一个大的 数据包 围盒 , 根 据一 定的 原则划 分 为若干个小 的立方 体栅 格 , 这样 数据 点集中 的 每个点都位于相应的栅格中 , 在搜索一点的 K 近邻时 , 需 要在测 量点 所在 的立 方体 栅格及 其 相邻的上下、 左 右、 前后 共 27( 3 3 3) 个 小立 方体栅格中查找 K 个最邻近的点。熊邦书等 [ 7] 利用空间划分策略 , 考虑数据点 集的范围、 总点 数和 K 的取值 , 给出一 种估算立 方体栅格 边长 的方法 , 并在文献 [ 5] 的基础上 , 改进搜索范围 , 首先搜索测 点当前 所在 栅格 , 如 果满 足搜索 条 件, 则结束搜索 ; 反 之 , 搜索 范围 由当 前栅格 向 外扩充一圈。这种算法虽 然对搜索的范 围作了 改进 , 但还需要搜索较多的栅格 , 而且随 着测量 数据的增多 特别是 对于 海量 数据 , 利 用上述 算 法进行 K - 近邻搜 索的 时间 会越 来越 长。本 文 同样 基 于 空 间 划 分 的 策 略 , 对 搜 索 的 栅 格 范 围提出一种 改进 算法 , 即 空间 球搜 索算 法。该 算法每 次 搜索 立 方体 栅 格 的个 数 与 假想 空 间 球的半径有关 , 建立对应的搜索 终止原则 , 有效 减少 了 搜 索 立 方 体 栅 格 的 个 数, 提 高 了 算 法 效率。
K - 近邻广泛应用于逆向工程、 地理信息、 神 经网络、 计算几何学、 图像识别等 领域。本文主 要研究了一种面向逆向工程的快速搜索 K- 近邻 的方法。在 制造业 中 , 逆向 工程 是指 根据已 有 实物模型的 坐标测 量数 据 , 重新 建立 实物的 数 字化模型 , 进行 分析、 修 改 , 再通 过快 速成型 或 数控加工制造出样 品模型和模具。其中 基于散 乱数据点集的模型重建是 逆向工程重要 的研究 内容 之 一。 由于 散 乱 点集 缺 少 明 显的 拓 扑 关 系, 因此需要通过 K- 近邻搜索 , 建立散乱测点间 邻接关系的数据结构。利用每一测点的 K- 近邻 结构来反映出待重建曲面 在该测点处的 形状信 息, 如法矢和 曲率特 性等。 K- 近 邻搜 索是基 于 散乱数据点集模型 重建的关键步 骤。随 着测量 设备的不断发展 , 高效率、 高精度地采集 样件的 外形数据已 可以实 现 , 采集 的数 据点 数目常 常
存在空间球 , 并以当前测点为球心 , 半径分别取测点到所在 立方体栅 格 6 面的距 离。首先取半径 最小的空 间 球 , 在与之发生干涉的栅格中进行 K - 近邻搜索 , 若满足 所建立的搜索终止原则 , 则终止搜索 ; 否则 , 取更 大半 径的空间球 , 重复上述过程。实验结果表明 , 所提出的算法可 对海量数 据集进 行快速 K- 近邻 搜索 , 较已有 算 法明显提高搜索速度。 关键词 : K- 近邻 ; 海量数据 ; 逆向 工程 ; 空间划分 中图分类号 : T P391 文献标识码 : A Abstract: A spatial sphere alg or ithm is pro po sed for searching K- N ea rest N eig hbo rs ( K- N N ) of one measured po int in scatter ed po int set. At first, the scatter ed po ints ar e div ided into a set of unifor m cells. Suppose ther e ex ist a ser ies o f spatial spher es w ith the same center being the curr ent point, and the radii being the distances from the point t o one o f t he six cells planes respectiv ely . A spher e w ith the smallest r adius is first taken to de ter mine the cells that inter fere spatially w ith t he sphere. T hen a K- N N search is carr ied out within the inter fer ing gr ids until the sear ching termination co ndit ion is satisfied. O therw ise, the spher e with lar ger radius is taken, and abo ve searching pro cess is repeated. Ex periments show that the alg or ithm is v ery fast to search KNN o f scatter ed points in compariso n w ith ex isting alg or ithms. Key words: K- near est neig hbo r; massive scatt ered po int s; rev er se eng ineering; spat ial part itio n
第 27 卷 2006 年
第5期 9月
航 空 学 报 ACT A A ERON A U T ICA ET A ST RO N AU T ICA SIN ICA
Vo l 27 No 5 Sept. 2006
文章编号 : 1000 - 6893( 2006) 05 -0944 - 05
一种快速搜索海量数据集 K- 近邻空间球算法
[ 6] Biblioteka Baidu 5]
lc =
ak | X max - X min N
Ymax - Ymin
Zm ax - Zm in |
( 1) 式中 表示每个立方体栅格中平均数据点的个数 与 K 个邻近点之间的系数, 通过改变 值可以调 节立方体栅格边长的大小, 以便给定的立方体栅格 边长是一较合理的取值。文献[ 7] 通过大量实验给 出了 1 个 的经验值。本文实验取 = 1 31。 小立方体栅格在 X , Y, Z 3 个方向的个数由式 ( 2) 确定( [ . ] 表示向上取整) m = [ ( X m ax - X min ) / lc ] n = [ ( Y max - Y min ) / lc ] ( 2) l = [ ( Z max - Z min ) / lc ] ( 2) 读数据点集中的第 1 个点 p , 根据其空间 坐标值确定所在的栅格索引号。 ( 3) 计算该 点到其 所在 立方 体栅 格 6 个 面 的距离 , 考 虑算 法要判 定测 点在 立方 体栅格 中 的位置 , 即 该点 最靠近 立方 体 6 个面 中的哪 一 侧, 建立如图 1 所示 的 sort 数据 结构。其 中 d t 表示点到栅格 6 个面的距 离数值 ; ID 表示 该距 离的计算具体是 针对 6 个面中的 哪 1 个面。对 这 6 个距离进行升序排列 , 得到 1 个距离数组 sor t[ 0] , sort [ 1] , so rt[ 2] , sort [ 3] , sor t[ 4] , sort [ 5] 。