主权项 |
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>)=(rsinθ,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中对代理模型绘制后的每个光栅点计算坐标变换,包括:将代理模型绘制后的每个光栅点从显示器的直角坐标(x,y)转换为所述线数据纹理所在的极坐标(s,t),计算公式为:<img file="FSB00000211298300011.GIF" wi="618" he="71" />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="0001"><![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><</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>≤</mo><mo>|</mo><mi>u</mi><mo>|</mo><mo><</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>≥</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=(<v1·f1>,<v2·f1>,<v3·f1>,<v4·f1>),<·>表示矢量点积计算;利用GPU的SIMD矢量计算指令,计算待求的采样值I<sub>val</sub>=<temp·f2>;最后,将采样值I<sub>val</sub>输出至显示器的(x,y)坐标处显示。 |