书签 分享 收藏 举报 版权申诉 / 11

一种基于空间矢量方程求解的三维定位线计算方法.pdf

  • 上传人:54
  • 文档编号:1184540
  • 上传时间:2018-04-04
  • 格式:PDF
  • 页数:11
  • 大小:1.89MB
  • 摘要
    申请专利号:

    CN201010157642.4

    申请日:

    2010.04.28

    公开号:

    CN102103652A

    公开日:

    2011.06.22

    当前法律状态:

    撤回

    有效性:

    无权

    法律详情:

    发明专利申请公布后的视为撤回IPC(主分类):G06F 19/00申请公布日:20110622|||文件的公告送达IPC(主分类):G06F 19/00收件人:长沙博为软件技术有限公司文件名称:视为撤回通知书|||文件的公告送达IPC(主分类):G06F 19/00收件人:长沙博为软件技术有限公司 谭璇文件名称:第一次审查意见通知书|||实质审查的生效IPC(主分类):G06F 19/00申请日:20100428|||公开

    IPC分类号:

    G06F19/00; A61B6/03(2006.01)N; A61B5/055(2006.01)N

    主分类号:

    G06F19/00

    申请人:

    长沙博为软件技术有限公司

    发明人:

    梁威; 梁续军

    地址:

    410013 湖南省长沙市高新区火炬城M7组团五楼512室

    优先权:

    专利代理机构:

    代理人:

    PDF完整版下载: PDF下载
    内容摘要

    本发明涉及一种基于空间矢量方程求解的三维定位线计算方法,针对医学放射影像检查CT,核磁检查等断层扫描影像设备所产生的定位面与截面的定位线进行计算的方法。通过对定位面(Localizer)和切面(Transect)两个平面的x,y,z三维坐标和三维角度方向值进行DICOM文件解析,相应TAG值读取;通过Image Type判断定位面与切面是否可匹配计算;计算切面影像的平面法线向量方程参数得到切面的平面方程;分别计算切面影像所在的平面Ax+By+Cz+D=0与定位面边线x-x1/1=y-y1/m=z-z1/n(其中x1,y1,z1分别为定位面左上角的X,Y,Z座标;1,m,n分别为定位面第一行的方向值X,Y,Z三轴的Cos方向值)的交点;判断如果切片图像所在的平面与定位片的四条边的交点为2个,则计算交点连线x-point[i].x/l=y-point[i].y/m=z-point[i].z/n=t与切片图像的四条边x-x2/A=y-y2/B=z-z2/C的交点作为定位线段的起止位置座标。

    权利要求书

    1: 一种基于空间矢量方程求解的三维定位线计算方法, 针对定位面 (Localizer) 和切 面 (Transect) 通过求解空间矢量方程计算其相交定位线, 其特征在于包含如下处理步骤 : (1) 读取定位面与切面的 x, y, z 轴三维坐标和三维角度方向值 ; (2) 判断定位面 (Localizer) 与切面 (Transect) ; (3) 计算得到切面所在平面方程参数 ; (4) 计算切面平面与定位面边线的交点 ; (5) 计算交点连线与切面边线的交点来计算得到三维定位线的位置。
    2: 根据权利要求 1 所述的一种基于空间矢量方程求解的三维定位线计算方法, 其特征 在于所述计算得到切面所在平面方程参数通过如下方法计算切面影像的平面法线向量方 程参数 : A = Transect.RowDirection.Cos(Y)*Transect.ColumnDirection.Cos(Z) -Transect.RowDirection.Cos(Z)*Transect.ColumnDirection.Cos(Y) B = Transect.RowDirection.Cos(Z)*Transect.ColumnDirection.Cos(X) -Transect.RowDirection.Cos(X)*Transect.ColumnDirection.Cos(Z) B = Transect.RowDirection.Cos(X)*Transect.ColumnDirection.Cos(Y) -Transect.RowDirection.Cos(Y)*Transect.ColumnDirection.Cos(Y) D = -1*(A*Transect.Leftup.X+B*Transect.Leftup.Y+C*Transect.Leftup.Z)。
    3: 根据权利要求 1 所述的一种基于空间矢量方程求解的三维定位线计算方法, 其特征 在于所述计算切面平面与定位面边线的交点, 切面与定位面的四条边每条边的计算方法如 下: 第 1 条边 : a = (A*l+B*m+C*n)*Localizer.PixelSpace.Y b = A*x1+B*y1+C*z1+D 第 2 条边 : x1 = Localizer.Leftup.X+ Localizer.Row*Localizer.PixelSpace.X*Localizer.RowDirection.Cos(X) ; y1 = Localizer.Leftup.Y+ Localizer.Columns*Localizer.PixelSpace.Y*Localizer.RowDirection.Cos(Y) ; z1 = Localizer.Leftup.Z+ Localizer.Columns*Localizer.PixelSpace.Y*Localizer.RowDirection.Cos(Z) ; b = A*x1+B*y1+C*z1+D ; 第 3 条边 : x1 = Localizer.Leftup.X ; y1 = Localizer.Leftup.Y ; z1 = Localizer.Leftup.Z ; k = Localizer.Leftup.PixelSpace.X ; l = Localizer.ColumnDirection.Cos(X) ; m = Localizer.ColumnDirection.Cos(Y) ; n = Localizer.ColumnDirection.Cos(Z) ; 2 a = (A*l+B*m+C*n)*k ; b = A*x1+B*y1+C*z1+D ; 第 4 条边 : x1 = Localizer.Leftup.X+ Localizer.Columns*Localizer.PixelSpace.Y*Localizer.RowDirection.Cos(X) y1 = Localizer.Leftup.Y+ Localizer.Columns*Localizer.PixelSpace.Y*Localizer.RowDirection.Cos(Y) z1 = Localizer.Leftup.Z+ Localizer.Columns*Localizer.PixelSpace.Y*Localizer.RowDirection.Cos(Z) b = A*x1+B*y1+C*z1+D。
    4: 根据权利要求 3 所述的一种基于空间矢量方程求解的三维定位线计算方法, 其特征 在于所述计算切面平面与定位面边线的交点, 针对切面与定位面的每条边线公共相交计算 方法如下 : point[i][0] = x1+1*k*t1 ; point[i][1] = y1+m*k*t1 ; point[i][2] = z1+n*k*t1 ; point[i][0] = 0 ; point[i][1] = t1。
    5: 根据权利要求 1 所述的一种基于空间矢量方程求解的三维定位线计算方法, 其特征 在于所述计算交点连线与切面边线的交点来计算得到三维定位线的位置方法如下 : l = point[1][0]-point[0][0] ; m = point[1][1]-point[0][1] ; n = point[1][2]-point[0][2] ; a = l*Transect.RowDirection.Cos[X] +m*Transect.RowDirection.Cos[Y] +n*Transect.RowDirection.Cos[Z] b = l*Transect.ColumnDirection.Cos[X] +m*Transect.ColumnDirection.Cos[Y] +n*Transect.ColumnDirection.Cos[Z] 然后通过 (a*a < b*b) 比较判断切面图像的哪两条平行边与 point[1], point[2] 相 交; 如果 (a*a < b*b) 则说明是切面水平方向边与定位面相交, 如果 (a*a > b*b) 则说明是 切面水平方向边与定位面相交。
    6: 根据权利要求 5 所述的一种基于空间矢量方程求解的三维定位线计算方法, 其特征 在于所述计算交点连线与切面边线的交点来计算得到三维定位线的位置方法 : 如果 (a*a < b*b) 则说明是切面水平方向边与定位面相交则计算 : k = Transect.Rows*Transect.PixelSpace.Y x2 = Transect.Leftup.X+k*Transect.ColumnDirection[X] y2 = Transect.Leftup.Y+k*Transect.ColumnDirection[Y] z2 = Transect.Leftup.Z+k*Transect.ColumnDirection[Z] 3 如果 (a*a > b*b) 则说明是切面水平方向边与定位面相交则计算 : x2 = Transect.Leftup.X+k*Transect.RowDirection.Cos(X) y2 = Transect.Leftup.Y+k*Transect.RowDirection.Cos(Y) z2 = Transect.Leftup.Z+k*Transect.RowDirection.Cos(Z)。
    7: 根据权利要求 5 所述的一种基于空间矢量方程求解的三维定位线计算方法, 其特征 在于所述计算交点连线与切面边线的交点来计算得到三维定位线的位置方法如下 : t1 = ((x1-point[0][0])*B+(point[0][1]-y1)*A)/a ; t2 = ((x2-point[0][0])*B+(point[0][1]-y2)*A)/a ; 然后判断 t1, t2 二值均在 0 ~ 1 之间, 则计算 : pointLine[0][0] = point[0][0]*(1-t1)+point[1][0]*t1 pointLine[0][1] = point[0][1]*(1-t1)+point[1][1]*t1 pointLine[1][0] = point[0][0]*(1-t2)+point[1][0]*t2 pointLine[1][1] = point[0][1]*(1-t2)+point[1][1]*t2 其中 pointLine[0][], pointLine[1][] 分别为定位面与切面两个面相交的定位线两 个端点在各自平面上的两个座标。

    说明书


    一种基于空间矢量方程求解的三维定位线计算方法

        技术领域 本发明涉及一种基于空间矢量方程求解的三维定位线计算方法, 尤其涉及针对医 学放射影像检查 CT, 核磁检查等断层扫描影像设备所产生的定位面与截面的定位线计算方 法。
         背景技术 在 医 学 放 射 影 像 断 层 扫 描 检 查 过 程 中, 会针对患者检查部位产生定位面 (Localizer) 和一系列的切面 (Transect) 影像的 DICOM 格式医学影像。
         在 DICOM 影像格式中会通过一系列的 TAG 来标识一组扫描影像的方向, 座标位置, 像素与实际尺寸映射比例, 像素宽, 高, 图像类型 ( 定位面或者截面等 ), 这些座标, 方向值 在影像定位面, 切面上的示例分别如图 1, 图 2 所示。
         TAG 标签 (0020, 0032) Tag 名称 Image Position of Patient Image Orientation TAG 含义 指定图像的左上角 X, Y, Z 座标 指定图像第一行, 第一列 相对病人方向的方向 Cosine 值 像素与影像所对应的实际 尺寸 ( 毫米 ) 的比例尺映 射关系 (0028, 0010) (0028, 0011) (0008, 0008) Rows Columns Image Type 图像的像素行数 图像的像素列数 图像的类型 512 512 Localizer, AXIAL TAG 值示例 -125.0\-132.0\3.5(0020, 0037)1.0\0.0\0.0\0.0\1.0\0.0(0028, 0030)Pixel Spacing0.48828120.4882812面对 CT 计算机断层扫描得到的一个序列多幅图像, 在医生对 CT 扫描影像进行阅 片的过程中, 医生需要清楚了解当前观察图像切片在定位面上的检查部位对应的精确位 置, 需要求解切面图像定位, 则需要求解其空间矢量方程, 来计算得到定位面图像与切面图 像相互对应的位置, 画出定位线, 以辅助医生影像诊断。
         发明内容 本发明的目的是建立一种基于空间矢量方程求解的三维定位线计算方法, 计算 DICOM 断层扫描影像三维定位线的方法。
         一种基于空间矢量方程求解的三维定位线计算方法, 包括如下处理步骤 :
         第一步 : 解析输入的 DICOM 文件, 读取如下 TAG 的数值 :Tag 名称 Image Position of Patient Image Orientation Pixel Spacing Rows Columns Image Type(0020, 0037) (0028, 0030) (0028, 0010) (0028, 0011) (0008, 0008)
         并且通过解析 Image Position Of Patient 获得当前影像的左上角 X, Y, Z 座标 ; 通过解析 Image Orientation 获得当前影像第一行, 第一列相对病人方向的方向 Cosine 值。 第二步 : 通过判断 Image Type 判断当前计算定位面与截面的两个 DICOM 影像哪一 个是定位面, 哪一个是截面, 判断是否适合定位面的相互计算。
         第三步 : 通过计算切面影像的平面法线向量方程参数得到切面的平面方程 :
         第四步 : 分别计算切面影像所在的平面 Ax+By+Cz+D = 0 与定位面边线 x-x1/l = y-y1/m = z-z1/n( 其中 x1, y1, z1 分别为定位面左上角的 X, Y, Z 座标 ; l, m, n 分别为定位 面第一行的方向值 X, Y, Z 三轴的 Cos 方向值 ) 的交点。
         第五步 : 判断如果切片图像所在的平面与定位片的四条边的交点为 2 个, 则计算 交点连线 x-point[i].x/l = y-point[i].y/m = z-point[i].z/n = t 与切片图像的四条 边 x-x2/A = y-y2/B = z-z2/C 的交点作为定位线起止点确定定位线段位置。
         附图说明 本发明包括如下附图 :
         图1: 定位面 x, y, z 轴座标方向与定位面左上角座标示例图
         图2: 切面 x, y, z 轴座标方向与定位面左上角座标示例图
         具体实施方法
         下面结合附图对本发明做进一步详细说明。
         本发明的目的是建立一种基于空间矢量方程求解的三维定位线计算方法, 计算 DICOM 断层扫描影像三维定位线的方法。
         一种基于空间矢量方程求解的三维定位线计算方法, 包括如下处理步骤 :
         第一步 : 解析输入的 DICOM 文件, 读取如下 TAG 的数值 :
         Tag 名称 Image Position of Patient Image Orientation(0020, 0037)(0028, 0030) (0028, 0010) (0028, 0011) (0008, 0008)
         Pixel Spacing Rows Columns Image Type并且通过解析 Image Position Of Patient 获得当前影像的左上角 X, Y, Z 座标 ; 通过解析 ImageOrientation 获得当前影像第一行, 第一列相对病人方向的方向 Cosine 值。 第二步 : 通过判断 Image Type 判断当前计算定位面与截面的两个 DICOM 影像哪一 个是定位面, 哪一个是截面, 判断是否适合定位面的相互计算。
         第三步 : 通过如下方法计算切面影像的平面法线向量方程参数 :
         A = Transect.RowDirection.Cos(Y)*Transect.ColumnDirection.Cos(Z)
         -Transect.RowDirection.Cos(Z)*Transect.ColumnDirection.Cos(Y)
         B = Transect.RowDirection.Cos(Z)*Transect.ColumnDirection.Cos(X)
         -Transect.RowDirection.Cos(X)*Transect.ColumnDirection.Cos(Z)
         B = Transect.RowDirection.Cos(X)*Transect.ColumnDirection.Cos(Y)
         -Transect.RowDirection.Cos(Y)*Transect.ColumnDirection.Cos(Y)
         D = -1*(A*Transect.Leftup.X+B*Transect.Leftup.Y+C*Transect.Leftup.Z)
         第四步 : 分别计算切面影像所在的平面 Ax+By+Cz+D = 0 与定位面边线 x-x1/l = y-y1/m = z-z1/n( 其中 x1, y1, z1 分别为定位面左上角的 X, Y, Z 座标 ; l, m, n 分别为定位 面第一行的方向值 X, Y, Z 三轴的 Cos 方向值 ) 的交点。
         平面空间交点逐步计算方法如下 :
         计算第 1 条边 :
         a = (A*l+B*m+C*n)*Localizer.PixelSpace.Y
         b = A*x1+B*y1+C*z1+D
         判断如果 a = 0, b != 0 则说明直线与平面平行, 没有交点,
         进入下一条边的计算判断 ;
         或者如果 a = 0, b = 0 则说明直线在平面上, 也没有交点,
         进入下一条边的计算判断 ;
         所以只有在 a > 0 的条件下再执行下一步计算。
         计算 : t1 = b/a
         判断 t1 的值, 应该大于 0 小于定位面的像素列数 Localizer.Columns,
         否则返回定位线计算失败 ;
         计算如下值 ( 其中 i 表示当前是切面的第几条边的相交计算 ) :
         point[i][0] = x1+l*k*t1 ;
         point[i][1] = y1+m*k*t1 ;
         point[i][2] = z1+n*k*t1 ;
         point[i][0] = 0 ;
         point[i][1] = t1 ;
         然后依次按照如上相似方法计算第 2, 3, 4 条切面边的相交 ;
         在第 2, 3, 4 条切面边的相交计算中, 计算方法除 a, b 值的计算方法与如上第一条 边稍有不同如下之外, 其余计算方法都相同 :
         第 2 条边 :
         x1 = Localizer.Leftup.X+
         Localizer.Row*Localizer.PixelSpace.X*Localizer.RowDirection.Cos(X) ;
         y1 = Localizer.Leftup.Y+
         Localizer.Columns*Localizer.PixelSpace.Y*Localizer.RowDirection. Cos(Y) ; z1 = Localizer.Leftup.Z+
         Localizer.Columns*Localizer.PixelSpace.Y*Localizer.RowDirection. Cos(Z) ;
         b = A*x1+B*y1+C*z1+D ;
         第 3 条边 :
         x1 = Localizer.Leftup.X ;
         y1 = Localizer.Leftup.Y ;
         z1 = Localizer.Leftup.Z ;
         k = Localizer.Leftup.PixelSpace.X ;
         l = Localizer.ColumnDirection.Cos(X) ;
         m = Localizer.ColumnDirection.Cos(Y) ;
         n = Localizer.ColumnDirection.Cos(Z) ;
         a = (A*l+B*m+C*n)*k ;
         b = A*x1+B*y1+C*z1+D ;
         第 4 条边 :
         x1 = Localizer.Leftup.X+
         Localizer.Columns*Localizer.PixelSpace.Y*Localizer.RowDirection. Cos(X)
         y1 = Localizer.Leftup.Y+
         Localizer.Columns*Localizer.PixelSpace.Y*Localizer.RowDirection. Cos(Y)
         z1 = Localizer.Leftup.Z+
         Localizer.Columns*Localizer.PixelSpace.Y*Localizer.RowDirection.
         Cos(Z) b = A*x1+B*y1+C*z1+D
         第五步 : 判断如果切片图像所在的平面与定位片的四条边的交点为 2 个, 则计算 交点连线 x-point[i].x/l = y-point[i].y/m = z-point[i].z/n = t 与切片图像的四条 边 x-x2/A = y-y2/B = z-z2/C 的交点作为定位线起止点确定定位线段位置。
         计算方法如下 :
         l = point[1][0]-point[0][0] ;
         m = point[1][1]-point[0][1] ;
         n = point[1][2]-point[0][2] ;
         a = l*Transect.RowDirection.Cos[X]
         +m*Transect.RowDirection.Cos[Y]
         +n*Transect.RowDirection.Cos[Z]
         b = l*Transect.ColumnDirection.Cos[X]
         +m*Transect.ColumnDirection.Cos[Y]
         +n*Transect.ColumnDirection.Cos[Z]
         然后通过 (a*a < b*b) 比较判断切面图像的哪两条平行边与 point[1], point[2] 相交 ;
         如果 (a*a < b*b) 则说明是切面水平方向边与定位面相交则计算 :
         k = Transect.Rows*Transect.PixelSpace.Y
         x2 = Transect.Leftup.X+k*Transect.ColumnDirection[X]
         y2 = Transect.Leftup.Y+k*Transect.ColumnDirection[Y]
         z2 = Transect.Leftup.Z+k*Transect.ColumnDirection[Z]
         如果 (a*a > b*b) 则说明是切面水平方向边与定位面相交则计算 :
         x2 = Transect.Leftup.X+k*Transect.RowDirection.Cos(X)
         y2 = Transect.Leftup.Y+k*Transect.RowDirection.Cos(Y)
         z2 = Transect.Leftup.Z+k*Transect.RowDirection.Cos(Z)
         然后计算 :
         t1 = ((x1-point[0][0])*B+(point[0][1]-y1)*A)/a ;
         t2 = ((x2-point[0][0])*B+(point[0][1]-y2)*A)/a ;
         然后判断 t1, t2 二值均在 0 ~ 1 之间, 则计算 :
         pointLine[0][0] = point[0][0]*(1-t1)+point[1][0]*t1
         pointLine[0][1] = point[0][1]*(1-t1)+point[1][1]*t1
         pointLine[1][0] = point[0][0]*(1-t2)+point[1][0]*t2
         pointLine[1][1] = point[0][1]*(1-t2)+point[1][1]*t2
         其中 pointLine[0][], pointLine[1][] 分别为定位面与切面两个面相交的定位 线两个端点在各自平面上的两个座标。
        

    关 键  词:
    一种 基于 空间 矢量 方程 求解 三维 定位 计算方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种基于空间矢量方程求解的三维定位线计算方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-1184540.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1