发明名称 一种高精度实时超声图像扫描变换方法
摘要 本发明公开了一种高精度实时超声图像扫描变换方法,使用基于GPU的并行计算架构和SIMD矢量运算,通过绘制合适的代理几何模型,将扫描变换模块中的坐标变换和图像插值算法全部放在GPU中作32位浮点数高精度计算,同时使用优化的高精度的双三次插值算法,获得更平滑的图像质量。本发明可以在目前普通中低档显卡上,对512条线数据,每条线上1024个采样点这样大规模的数据,达到每秒钟60帧以上的扫描变换速度,可以充分挖掘利用当代GPU所提供的强大的并行计算能力,从而将传统的扫描变换模块升级为下一代高保真的扫描变换模块。
申请公布号 CN101606854A 申请公布日期 2009.12.23
申请号 CN200910033262.7 申请日期 2009.06.10
申请人 无锡祥生科技有限公司 发明人 赵明昌;莫善珏
分类号 A61B8/14(2006.01)I;A61B8/00(2006.01)I;G06F19/00(2006.01)I 主分类号 A61B8/14(2006.01)I
代理机构 无锡市大为专利商标事务所 代理人 曹祖良
主权项 1、一种高精度实时超声图像扫描变换方法,其特征在于,步骤如下:步骤1:获取超声探头所采集的每帧图像,由LN条线数据组成,形成一个扇形,内径为r,外径为r+l,第1条线数据和第LN条线数据所夹的圆心角为2θ,LN条线数据为等角度采样,每条采样线上有PN个采样点,为等距离采样。将所述每帧图像作为二维纹理传输至GPU显存,并保存为线数据纹理;步骤2:生成代理几何模型并绘制,包括:使用六边形ABQRHG作为代理几何模型,其顶点坐标分别为:(A<sub>x</sub>,A<sub>y</sub>)=(-rsinθ,rcosθ)(B<sub>x</sub>,B<sub>y</sub>)=(-(r+l)sinθ,(r+l)cosθ)(Q<sub>x</sub>,Q<sub>y</sub>)=(-(r+l)sinθ,r+l)(R<sub>x</sub>,R<sub>y</sub>)=((r+l)sinθ,r+l)(H<sub>x</sub>,H<sub>y</sub>)=((r+l)sinθ,(r+l)cosθ)(G<sub>x</sub>,G<sub>y</sub>)=(r sinθ,rcosθ)其中A和G、B和H、Q和R的x坐标相反,y坐标相同,因此只需计算A、B、Q三个点的坐标,其它三个点的坐标根据上述关系求得;将六边形ABQRHG使用三角带形式分解为四个三角形,顶点顺序为G,H,A,R,B,Q,三角形分别为:GHA、HAR、ARB和RBQ;使用OpenGL或者DirectX的API函数绘制三角带;步骤3:在GPU中对代理模型绘制后的每个光栅点(Fragment)计算坐标变换,包括:将代理模型绘制后的每个光栅点从显示器的直角坐标(x,y)转换为所述线数据纹理所在的极坐标(s,t),计算公式为:<maths num="0001"><![CDATA[<math><mrow><mi>s</mi><mo>=</mo><mrow><mo>(</mo><msqrt><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><msup><mi>y</mi><mn>2</mn></msup></msqrt><mo>-</mo><mi>r</mi><mo>)</mo></mrow><mrow><mo>(</mo><mi>PN</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>/</mo><mi>l</mi><mo>,</mo></mrow></math>]]></maths>t=(arctan(x/y)+θ)(LN-1)/2θ,其中t代表在第t条线数据上,s代表在线数据的第s个采样点上;判断(s,t)是否满足0≤t≤(LN-1)且0≤s≤(PN-1),如果不满足则终止计算;步骤4:在GPU中计算双三次图像插值,包括:在-2<u<2的区间上取NX个离散的三次多项式f(u)的非零值,NX为2的正整数次方,用一维纹理传输至GPU显存,并保存为三次多项式纹理,其中f(u)的定义如下:<maths num="0002"><![CDATA[<math><mrow><mi>f</mi><mrow><mo>(</mo><mi>u</mi><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mfrac><mn>7</mn><mn>6</mn></mfrac><msup><mrow><mo>|</mo><mi>u</mi><mo>|</mo></mrow><mn>3</mn></msup><mo>-</mo><mn>2</mn><msup><mrow><mo>|</mo><mi>u</mi><mo>|</mo></mrow><mn>2</mn></msup><mo>+</mo><mfrac><mn>8</mn><mn>9</mn></mfrac><mo>,</mo></mtd><mtd><mo>|</mo><mi>u</mi><mo>|</mo><mo>&lt;</mo><mn>1</mn></mtd></mtr><mtr><mtd><mo>-</mo><mfrac><mn>7</mn><mn>18</mn></mfrac><msup><mrow><mo>|</mo><mi>u</mi><mo>|</mo></mrow><mn>3</mn></msup><mo>+</mo><mn>2</mn><msup><mrow><mo>|</mo><mi>u</mi><mo>|</mo></mrow><mn>2</mn></msup><mo>-</mo><mfrac><mn>10</mn><mn>3</mn></mfrac><mo>|</mo><mi>u</mi><mo>|</mo><mo>+</mo><mfrac><mn>16</mn><mn>9</mn></mfrac><mo>,</mo></mtd><mtd><mn>1</mn><mo>&le;</mo><mo>|</mo><mi>u</mi><mo>|</mo><mo>&lt;</mo><mn>2</mn><mo>;</mo></mtd></mtr><mtr><mtd><mn>0</mn><mo>,</mo></mtd><mtd><mo>|</mo><mi>u</mi><mo>|</mo><mo>&GreaterEqual;</mo><mn>2</mn></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>分别使用纹理坐标(floor(s)-1,floor(t)-1),(floor(s),floor(t)-1),(ceil(s),floor(t)-1),(ceil(s)+1,floor(t)-1)访问所述线数据纹理,得到4个长度为4的矢量v1,v2,v3,v4,其中,函数floor(v)代表不大于v的最大的整数,函数ceil(v)代表不小于v的最小的整数;分别使用纹理坐标floor(t)-t-1和floor(s)-s-1访问所述三次多项式纹理,得到2个长度为4的矢量f1,f2;利用GPU的SIMD矢量计算指令,计算得到一个长度为4的矢量temp=(&lt;v1·f1&gt;,&lt;v2·f1&gt;,&lt;v3·f1&gt;,&lt;v4·f1&gt;),&lt;·&gt;表示矢量点积计算;利用GPU的SIMD矢量计算指令,计算待求的采样值I<sub>val</sub>=&lt;temp·f2&gt;;最后,将采样值I<sub>val</sub>输出至显示器的(x,y)坐标处显示。
地址 214142江苏省无锡市新区硕放镇香楠路8号