首页> 中国专利> 使用单应性变换的点云编码

使用单应性变换的点云编码

摘要

使用单应性变换的点云编码方法发送3D面片的单应性变换,而不是明确的投影值(例如边界框和面片定向、旋转)。该方法具有更紧凑的表示法,在传输方面更高效,并且允许更快的解码,特别是在3D点将被重新投影的情况下。

著录项

  • 公开/公告号CN113302940A

    专利类型发明专利

  • 公开/公告日2021-08-24

    原文格式PDF

  • 申请/专利权人 索尼集团公司;

    申请/专利号CN202080008578.5

  • 发明设计人 D·格拉兹斯;

    申请日2020-01-08

  • 分类号H04N19/597(20060101);H04N19/46(20060101);H04N19/60(20060101);

  • 代理机构11038 中国贸促会专利商标事务所有限公司;

  • 代理人曹瑾

  • 地址 日本东京

  • 入库时间 2023-06-19 12:19:35

说明书

相关申请的交叉引用

本申请按照35 U.S.C.§119(e)要求于2019年1月18日提交的序列号为62/794,091的美国临时专利申请“POINT CLOUD CODING USING HOMOGRAPHY TRANSFORM”的优先权,该申请通过引用整体包含在本文中以用于所有目的。

技术领域

本发明涉及三维图形。更具体地,本发明涉及三维图形的编码。

背景技术

点云已被视为或者由3D扫描仪、LIDAR传感器捕捉,或者在诸如虚拟现实/增强现实(VR/AR)之类流行应用中使用的3D数据的候选传输格式。点云是3D空间中的一组点。除空间位置(X,Y,Z)之外,每个点通常具有关联的属性,比如颜色(R,G,B),或者甚至反射率和时间戳(例如,在LIDAR图像中)。为了获得目标3D对象的高保真表示,设备捕捉大约数千个甚至数百万个点的点云。此外,对于在VR/AR应用中使用的动态3D场景,每一帧通常具有独特的密集点云,这导致每秒数百万个点云的传输。对于这种大量数据的可行传输,通常采用压缩。

在2017年,MPEG发布了关于点云的压缩的提案征集(call for proposal,CfP)。在评估了几种提案之后,MPEG正在考虑用于点云压缩的两种不同技术:3D原生编码技术(基于八叉树和类似的编码方法),或者3D到2D投影,随后是传统的视频编码。在动态3D场景的情况下,MPEG正在使用基于面片(patch)表面建模,面片从3D图像到2D图像的投影,以及用诸如HEVC之类的视频编码器对2D图像编码的测试模型软件(TMC2)。该方法已被证明比原生3D编码更高效,并且能够在可接受的质量下实现有竞争力的比特率。

当对点云编码时,TMC2对与面片投影相关的辅助信息(比如2D画布图像中的面片位置和边界框大小)编码。对于辅助信息的时间编码,来自当前点云的面片和来自即刻解码的点云的面片之间的面片匹配被用于预测。该过程限于相邻帧,并且包括对序列中的所有帧进行增量(delta)编码。

发明内容

使用单应性变换的点云编码方法发送3D面片的单应性变换,而不是明确的投影值(例如,边界框和面片定向、旋转)。该方法具有更紧凑的表示法(notation),在传输方面更高效,并且允许更快的解码,特别是在3D点将被重新投影的情况下。

在一个方面,一种在设备的非临时性存储器中编程的方法包括获取三维内容,并使用单应性变换对三维内容编码。使用单应性变换对三维内容编码包括将三维内容转换为二维内容。使用单应性变换对三维内容编码包括传送三维到二维变换的单应性变换系数。使用单应性变换对三维内容编码包括计算单应性矩阵。单应性矩阵是从三个矩阵计算的。所述三个矩阵包括观察矩阵、投影矩阵和视口矩阵。观察矩阵表示相机,投影矩阵表示相机的传感器中的像素,而视口矩阵表示相机中的像素到图像中的像素的变换。

在另一个方面,一种设备包括:用于存储应用的非临时性存储器,所述应用用于:获取三维内容,并使用单应性变换对三维内容编码;和耦接到所述存储器的处理器,所述处理器配置为处理所述应用。使用单应性变换对三维内容编码包括将三维内容转换为二维内容。使用单应性变换对三维内容编码包括传送三维到二维变换的单应性变换系数。使用单应性变换对三维内容编码包括计算单应性矩阵。单应性矩阵是从三个矩阵计算的。所述三个矩阵包括观察矩阵、投影矩阵和视口矩阵。观察矩阵表示相机,投影矩阵表示相机的传感器中的像素,而视口矩阵表示相机中的像素到图像中的像素的变换。

在另一个方面,一种系统包括用于获取三维内容的一个或多个相机,和用于使用单应性变换对三维内容编码的编码器。使用单应性变换对三维内容编码包括将三维内容转换为二维内容。使用单应性变换对三维内容编码包括传送三维到二维变换的单应性变换系数。使用单应性变换对三维内容编码包括计算单应性矩阵。单应性矩阵是从三个矩阵计算的。所述三个矩阵包括观察矩阵、投影矩阵和视口矩阵。观察矩阵表示相机,投影矩阵表示相机的传感器中的像素,而视口矩阵表示相机中的像素到图像中的像素的变换。

附图说明

图1图解说明按照一些实施例的点云映射的方法的流程图。

图2图解说明按照一些实施例的用于分割的投影的示图。

图3图解说明按照一些实施例的对数据进行编码的表示。

图4图解说明按照一些实施例的基于相机投影的面片(patch)生成的示图。

图5图解说明按照一些实施例的如何构造单应性变换的示图。

图6图解说明按照一些实施例的实现使用单应性变换方法的点云编码的图形流水线的流程图。

图7图解说明按照一些实施例的例证V-PCC比特流结构。

图8图解说明按照一些实施例的例证面片帧层单元语法。

图9图解说明按照一些实施例的例证面片帧头语法。

图10图解说明按照一些实施例的例证面片帧数据单元语法。

图11图解说明按照一些实施例的例证面片信息数据语法。

图12图解说明按照一些实施例的例证面片数据单元语法。

图13图解说明按照一些实施例的增量(delta)面片数据单元语法。

图14图解说明按照一些实施例的例证PCM面片数据单元语法。

图15图解说明按照一些实施例的例证单应性面片数据单元语法。

图16图解说明按照一些实施例的用于从单应性面片重构点云的矩阵。

图17图解说明按照一些实施例的配置成实现使用单应性变换的点云编码的例证计算设备的方框图。

具体实施方式

使用视频编码器的点云压缩的现有技术将点云表示为3D面片,并将通过几何和属性的投影形成的2D图像编码到2D画布中。3D点到2D点的映射是考虑到几个不同的选项,比如方向平面和面片定向来进行的。目前,点云压缩标准将所有这些选项编码在辅助数据结构中,并将其发送到解码器,解码器重构3D点。由于这些点将被用于渲染,因此将对这些点应用另一个变换以重新投影它们。本文中描述的方法直接传送单应性变换,这可以实现点云的快速渲染。此外,该方法在压缩效率方面更加紧凑。

与以前的点云压缩方案相比,本文中描述的方法发送3D面片的单应性变换,而不是明确的投影值(例如,边界框和面片定向、旋转)。该方法具有更紧凑的表示法,在传输方面更高效,并且允许更快的解码,特别是在3D点将被重新投影的情况下(例如,当在移动电话中生成视频时)。

本文中描述了一种用于将3D点云数据编码为2D表面的新方法。该方法利用3D表面面片来表示点云,并将3D点的一系列单应性变换传送到2D面片表面。

在使用视频编码器的3D点云编码中,使用从3D到2D的投影来生成将表示该点云的视频。生成这些视频的最高效方式是使用3D面片,3D面片分割对象的表面,并使用正交投影来生成被捆绑在一起并用作视频编码器的输入的分割深度图像。然而,指示如何在3D中重构投影点的一些辅助信息连同视频图像一起被传送。目前在比特流中明确地发送诸如边界框和面片定向、位移之类的值。

如本文中所述,用于将点从2D重新投影到3D的辅助数据被表示为单应性变换。单应性变换被广泛用于投影几何中,用于定义3D点和2D面之间的投影。通过发送投影矩阵,辅助数据表示能够被更高效地编码。此外,该单应性变换能够与其他单应性变换结合使用,以将点直接从2D面片重新投影到观察投影,避免了与目前的使用确切值的2D到3D投影关联的高成本操作。

图1图解说明按照一些实施例的点云映射的方法的流程图。获取3D点云100(例如,由相机/摄像机捕捉、接收自另一设备、下载)。在步骤110,对于3D点云估计法线。估计法线包括建立kd树,检查本地邻域(例如,k最近邻),计算最佳的近似切平面(使用协方差分析),实现法线平滑,并确定法线定向(最小生成树传播)。在步骤112,实现初始分割。初始分割包括按照6个定向(+X、-X、+Y、-Y、+Z、-Z)对点进行分类。初始分割按照固定定向对点进行分类。在分类之后,定向被投影到平面上。一旦确定了一簇点,就将这些点投影在同一平面上。投影这些点限定了这些点的边界框。在步骤114,细化分割。细化分割包括使用邻域来平滑像素分类(例如,使指定的分数最大化)。在步骤116,分割面片。分割面片包括计算邻接信息,提取面片,实现深度过滤和定位遗漏点。3D点云映射导致2D图像102。在一些实施例中,实现较少或额外的步骤。在一些实施例中,步骤的顺序被更改。

图2图解说明按照一些实施例的用于分割的投影的示图。与以前的只允许在平行于x、y、z轴的表面上的投影的实施不同,本文中描述的方法能够通过使用单应性变换,在任何位置投影到平面上。单应性变换(或转换)将3D点映射成2D(反之亦然)。

用于正射投影的矩阵能够由定义裁剪平面的6元组(左、右、下,上,近、远)定义。这些平面形成最小拐角在(左、下、-近)和最大拐角在(右、上、-远)的框。

图3图解说明按照一些实施例的对数据进行编码的表示。表示300示出了以前的实现如何表示固定投影信息,所述固定投影信息包括每个面片的诸如U

图4图解说明按照一些实施例的基于相机投影的面片生成的示图。使用相机402捕捉3D模型/目标400的点云。在一些实施例中,相机402是沿着x、y和z轴放置的。获取点云,然后分割面片。定位具有相似特性的点(例如,投影图像404中的网格406之中的所有点),并将其投影到同一平面上。3D位置是从点到在投影图像404中编码的表面或网格406的距离。发送指示平面中的哪些平面(例如+X平面)被选择的索引,所述平面用于生成边界框。所有的信息能够被表示为单应性变换。

图5图解说明按照一些实施例如何构造单应性变换的示图。单应性变换是相乘的三个矩阵(例如,观察矩阵、投影矩阵和视口矩阵)。所述矩阵是基于与各个相机矩阵关联的相机(例如R

观察矩阵(ViewMat)表示相机,投影矩阵(ProjMat)表示相机传感器中的像素,视口矩阵(ViewportMat)表示相机中的像素到图像中的像素的变换。单应性变换能够应用于3D像素以将像素映射到2D表面。也能够实现诸如缩放、剪切、透视投影之类的操作。

图6图解说明按照一些实施例的实现使用单应性变换方法的点云编码的图形流水线的流程图。在步骤600,输入模型(x,y,z)顶点。在步骤602,应用模型视图变换。在步骤604,应用投影变换。在步骤606,应用归一化和裁剪变换。在步骤608,应用视口变换。在步骤610,实现栅格化。在步骤612,应用明暗处理。在步骤614,应用合成来生成2D表示。在一些实施例中,实现较少或者额外的步骤。在一些实施例中,步骤的顺序被更改。

在一些实施例中,对单应性变换编码包括使用算术编码器分别对每个系数(浮点)编码。

图7图解说明按照一些实施例的例证V-PCC比特流结构。图8图解说明按照一些实施例的例证面片帧层单元语法。图9图解说明按照一些实施例的例证面片帧头语法。

图10图解说明按照一些实施例的例证面片帧数据单元语法。pfdu_patch_mode[frmIdx][p]指示对于索引为frmIdx的面片帧中的索引为p的面片的面片模式。对于pfh_type[frmIdx]=I的面片帧,pfdu_patch_mode[frmIdx][p]的允许值在1000中指定,而对于pfh_type[frmIdx]=P的面片帧,pfdu_patch_mode[frmIdx][p]的允许值在1002中指定。

图11图解说明按照一些实施例的例证面片信息数据语法。

图12图解说明按照一些实施例的例证面片数据单元语法。pdu_lod[frmIdx][p]指定将应用于面片帧frmIdx的索引为p的面片的LOD缩放因子。帧frmIdx中的面片p的重构点3D位置在它们从2D投影之后,并在应用任何进一步的变换之前将按2

等于0的pdu_projection_mode[frmIdx][p]指定面片帧frmIdx的索引为p的面片被投影到近投影平面上。等于1的pdu_projection_mode[frmIdx][p]指定该面片被投影到远投影平面上。当不存在pdu_projection_mode[frmIdx][p]时,其值应被推断为等于0。

图13图解说明按照一些实施例的增量(delta)面片数据单元语法。

图14图解说明按照一些实施例的例证PCM面片数据单元语法。ppdu_patch_in_pcm_video_flag[frmIdx][p]指定与帧内和帧间编码面片的几何和属性数据相比,与索引为frmIdx的面片帧中的PCM编码面片p关联的几何和属性数据是否是在单独的视频中编码。如果ppdu_patch_in_pcm_video_flag[frmIdx][p]等于0,那么与索引为frmIdx的面片帧中的PCM编码面片p关联的几何和属性数据是在与帧内和帧间编码面片的几何和属性数据相同的视频中编码的。如果ppdu_patch_in_pcm_video_flag[frmIdx][p]等于1,那么与索引为frmIdx的面片帧中的PCM编码面片p关联的几何和属性数据是在与帧内和帧间编码面片的几何和属性数据分离的视频中编码的。ppdu_pcm_points[frmIdx][p]指定存在于索引为frmIdx的面片帧中的PCM编码面片p中的pcm点的数量。ppdu_pcm_points[frmIdx][p]的值应在0~(Patch2dSizeU[frmIdx][p]*Patch2dSizeU[frmIdx][p]/3)(含端点)的范围之中。

图15图解说明按照一些实施例的例证单应性面片数据单元语法。hpdu_2d_shift_u[frmIdx][p]指定索引为frmIdx的面片帧中的面片p的表示为ops_occupancy_packing_block_size的倍数的面片边界框大小的左上角的x坐标。hpdu_2d_shift_u[frmIdx][p]的值应在0~Min(2pfh_2d_shift_u_bit_count_minus1[frmIdx]+1-1,sps_frame_width/ops_occupancy_packing_block_size-1)(含端点)的范围之中。hpdu_2d_shift_v[frmIdx][p]指定表示为ops_occupancy_packing_block_size的倍数的索引为frmIdx的面片帧中的面片p的面片边界框大小的左上角的y坐标。hpdu_2d_shift_v[frmIdx][p]的值应在0~Min(2pfh_2d_shift_v_bit_count_minus1[frmIdx]+1-1,sps_frame_height/ops_occupancy_packing_block_size-1)(含端点)的范围之中。当p等于0时,hpdu_2d_delta_size_u[frmIdx][p]指定索引为frmIdx的面片帧中索引为0的面片的宽度值。当p大于0时,hpdu_2d_delta_size_u[frmIdx][p]指定索引为p的面片与索引为(p-1)的面片的宽度值之差。当p等于0时,hpdu_2d_delta_size_v[frmIdx][p]指定索引为frmIdx的面片帧中索引为0的面片的高度值。当p大于0时,hpdu_2d_delta_size_v[frmIdx][p]指定索引为p的面片与索引为(p-1)的面片的高度值之差。hpdu_orientation_swap_flag[frmIdx][p]指示按照表格是否使用面片帧frmIdx的索引为p的面片的面片定向。如果不存在pdu_orientation_swap_flag[frmIdx][p],那么其值应被推断为等于0。hpdu_homography_transform[frmIdx][patchIndex][i][j]指定4×4单应性矩阵的系数[i][j]。单应性变换允许对于面片的变换,比如不同的面片定向、不同的相机方向等。

实现对于以单应性模式编码的面片单元的解码处理。该处理的输入是当前面片帧索引frmIdx和当前面片索引p。给定面片数据单元中的被解析元素,首先分配以下与面片相关的变量:

Patch2dShiftU[frmIdx][p]=pdu_2d_shift_u[frmIdx][p]

*ops_occupancy_packing_block_size (8-6)

Patch2dShiftV[frmIdx][p]=pdu_2d_shift_v[frmIdx][p]

*ops_occupancy_packing_block_size (8-7)

随后如下导出变量Patch2dSizeU[frmIdx][p]和Patch2dSizeV[frmIdx][p]:

如果p等于0,那么:

Patch2dSizeU[frmIdx][p]=pdu_2d_delta_size_u[frmIdx][p]*ops_occupancy_packing_block_size (8-8)

Patch2dSizeV[frmIdx][p]=pdu_2d_delta_size_v[frmIdx][p]*ops_occupancy_packing_block_size (8-9)

否则,如果(p>0),那么:

Patch2dSizeU[frmIdx][p]=Patch2dSizeU[frmIdx][p-1]+pdu_2d_delta_size_u[frmIdx][p]*ops_occupancy_packing_block_size (8-10)

Patch2dSizeV[frmIdx][p]=Patch2dSizeV[frmIdx][p-1]+pdu_2d_delta_size_v[frmIdx][p]*ops_occupancy_packing_block_size (8-11)

图16图解说明按照一些实施例的用于从单应性面片重构点云的矩阵。通过将单应性变换乘以由画布中的位置和深度值形成的齐次坐标表示法中的向量,简单地生成输出点云。

用信号通知单应性变换的另一种方式是向面片数据单元添加标志,并用信号通知将发送更多信息,即单应性变换系数。

图17图解说明按照一些实施例的配置成实现使用单应性变换的点云编码的例证计算设备的方框图。计算设备1700能够用于获取、存储、计算、处理、通信和/或显示诸如包括3D内容的图像和视频之类的信息。计算设备1700能够实现点云编码的任何方面。通常,适合于实现计算设备1700的硬件结构包括网络接口1702、存储器1704、处理器1706、一个或多个I/O设备1708、总线1710和存储设备1712。处理器的选择并不重要,只要选择具有足够速度的适当处理器即可。存储器1704能够是本领域已知的任何常规计算机存储器。存储设备1712能够包括硬盘驱动器、CDROM、CDRW、DVD、DVDRW、高清光盘/驱动器、超高清驱动器、闪存卡或任何其他存储设备。计算设备1700能够包括一个或多个网络接口1702。网络接口的例子包括连接到以太网或其他类型的LAN的网卡。I/O设备1708能够包括以下中的一个或多个:键盘、鼠标、监视器、屏幕、打印机、调制解调器、触摸屏、按钮接口和其他设备。用于实现点云编码的点云编码应用1730可能存储在存储设备1712和存储器1704中,并且按照通常处理应用的方式被处理。计算设备1700中能够包括图17中所示的更多或更少的组件。在一些实施例中,包括点云编码硬件1720。尽管图17中的计算设备1700包括用于点云编码的应用1730和硬件1720,但点云编码能够在计算设备上用硬件、固件、软件或它们的任何组合来实现。例如,在一些实施例中,点云编码应用1730被编码在存储器中,并使用处理器来执行。在另一个例子中,在一些实施例中,点云编码硬件1720是编程的硬件逻辑,包括专门为实现点云编码而设计的逻辑门。

在一些实施例中,点云编码应用1730包括几个应用和/或模块。在一些实施例中,模块还包括一个或多个子模块。在一些实施例中,能够包括更少或额外的模块。

在一些实施例中,点云编码硬件1720包括诸如镜头、图像传感器和/或任何其他相机组件之类的相机组件。

适当的计算设备的例子包括个人计算机、膝上型计算机、计算机工作站、服务器、大型计算机、手持式计算机、个人数字助手、蜂窝/移动电话、智能家电、游戏机、数字相机、数字摄像机、照相手机、智能电话、便携式音乐播放器、平板计算机、移动设备、视频播放器、视频光盘刻录机/播放器(例如,DVD刻录机/播放器、高清光盘刻录机/播放器、超高清光盘刻录机/播放器)、电视机、家庭娱乐系统、增强现实设备、虚拟现实设备、智能珠宝(例如智能手表)、车辆(例如自动驾驶车辆)或任何其他适当的计算设备。

为了利用使用单应性变换方法的点云编码,设备获取或接收3D内容,并且以优化的方式处理和/或发送所述内容,以使得能够适当、高效地显示3D内容。点云编码能够在用户帮助下实现,或者可以在没有用户参与的情况下自动实现。

操作中,使用单应性变换方法的点云编码发送3D面片的单应性变换,而不是明确的投影值(比如边界框和面片定向、旋转)。该方法具有更紧凑的表示法,在传输方面更高效,并且允许更快的解码,特别是在3D点将被重新投影的情况下(例如,当在移动电话中生成视频时)。测试表明,与以前的实现相比,使用利用单应性变换方法的点云编码提高了性能。

使用单应性变换(面片)的其他优点包括:利用任何方向(不仅仅是6个轴对准的定向)(例如,利用单应性变换能够对10个投影建模);能够使用不同类型的相机(在深度和纹理上使用的正射X透视相机),生成与2D纹理(仅解码属性),2D+深度纹理(解码属性和单应性面片)和点云(解码全部)兼容的向后兼容的比特流;并且单应性面片与当前的面片定义(例如,使用当前表示法能够获得单应性变换)、帧内/帧间能力兼容。

使用单应性变换的点云编码的一些实施例

1、一种在设备的非临时性存储器中编程的方法,所述方法包括:

获取三维内容;和

使用单应性变换对三维内容编码。

2、按照条款1所述的方法,其中使用单应性变换对三维内容编码包括将三维内容转换为二维内容。

3、按照条款1所述的方法,其中使用单应性变换对三维内容编码包括传送三维到二维变换的单应性变换系数。

4、按照条款1所述的方法,其中使用单应性变换对三维内容编码包括计算单应性矩阵。

5、按照条款4所述的方法,其中单应性矩阵是从三个矩阵计算的。

6、按照条款5所述的方法,其中所述三个矩阵包括观察矩阵、投影矩阵和视口矩阵。

7、按照条款6所述的方法,其中观察矩阵表示相机,投影矩阵表示相机的传感器中的像素,而视口矩阵表示相机中的像素到图像中的像素的变换。

8、一种设备,包括:

用于存储应用的非临时性存储器,所述应用用于:

获取三维内容;和

使用单应性变换对三维内容编码;和

耦接到所述存储器的处理器,所述处理器配置为处理所述应用。

9、按照条款8所述的设备,其中使用单应性变换对三维内容编码包括将三维内容转换为二维内容。

10、按照条款8所述的设备,其中使用单应性变换对三维内容编码包括传送三维到二维变换的单应性变换系数。

11、按照条款8所述的设备,其中使用单应性变换对三维内容编码包括计算单应性矩阵。

12、按照条款11所述的设备,其中单应性矩阵是从三个矩阵计算的。

13、按照条款12所述的设备,其中所述三个矩阵包括观察矩阵、投影矩阵和视口矩阵。

14、按照条款13所述的设备,其中观察矩阵表示相机,投影矩阵表示相机的传感器中的像素,而视口矩阵表示相机中的像素到图像中的像素的变换。

15、一种系统,包括:

用于获取三维内容的一个或多个相机;和

用于使用单应性变换对三维内容编码的编码器。

16、按照条款15所述的系统,其中使用单应性变换对三维内容编码包括将三维内容转换为二维内容。

17、按照条款15所述的系统,其中使用单应性变换对三维内容编码包括传送三维到二维变换的单应性变换系数。

18、按照条款15所述的系统,其中使用单应性变换对三维内容编码包括计算单应性矩阵。

19、按照条款18所述的系统,其中单应性矩阵是从三个矩阵计算的。

20、按照条款19所述的系统,其中所述三个矩阵包括观察矩阵、投影矩阵和视口矩阵。

21、按照条款20所述的系统,其中观察矩阵表示相机,投影矩阵表示相机的传感器中的像素,而视口矩阵表示相机中的像素到图像中的像素的变换。

通过具体实施例说明了本发明,所述具体实施例包含便于理解本发明的构成和操作原理的细节。本文中对特定实施例及其细节的这种参考并不意图限制所附的权利要求书的范围。对本领域的技术人员来说,显然可以在为举例说明而选择的实施例中进行其他各种修改,而不脱离由权利要求书所限定的本发明的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号