医学图像的运算_第1页
医学图像的运算_第2页
医学图像的运算_第3页
医学图像的运算_第4页
医学图像的运算_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章医学图像的运算

第一节引言

医学图像运算是最基本的医学图像处理技术,主要包括点运算、儿何运算和

代数运算。点运算是指对图像像素点的值直接进行运算。由于临床所接触到的医

学图像绝大多数都是灰度图像,所以本章所讲的点运算主要是指灰度变换。几何

运算是对图像的空间几何位置和尺寸进行变换,因此也称空间变换。代数运算是

指医学图像之间的加、减、乘、除等运算。

灰度变换和空间变换是医学图像处理软件中最基本的功能,是医院中图像显

示工作站最常用的图像处理技术。灰度变换主要完成医学图像的开窗显示和对比

度增强。空间变换主要用于医学图像的缩放、旋转和镜像。代数运算主要用于图

像的合成、噪声的去除和差值图像的获得。

本章的其余部分安排如下:在第二节讲述医学图像的灰度变换,包括线性和

非线性变换。紧接着在第三节讲述医学图像的空间变换,包括图像旋转、缩放和

镜像。在第四节将简单讲述图像的其它运算,如代数运算、局部运算和全局运算

等。最后,在第五节对本章内容进行了总结。

第二节医学图像的灰度变换

医学图像的灰度变换就是将图像的灰度值按照某种映射关系映射为不同的

灰度值,从而改变相邻像素点之间的灰度差,达到将图像对比度增强或减弱的目

的。或者是将图像的灰度范围按照某种映射关系进行变换,从而改变图像的灰度

范围,达到将图像灰度范围拉伸或压缩的目的。图像的灰度变换又称为图像的点

运算(Pointoperation)或图像的对比度拉伸(Contraststretching),其基本特点是输出

图像某像素点的灰度值仅与输入图像对应像素点的灰度值有关,而与输入图像的

其它像素点的值无关。按照映射关系的不同,可以将灰度变换分为线性灰度变换

和非线性灰度变换。

-、线性灰度变换

线性灰度变换就是按照线性映射关系对医学图像的灰度进行变换,用数学公

式可进行如下描述:设/“表示原始医学图像,G°(〃,A)表示图像/。中像素点

(〃水)处的灰度值,其中,〃=()「•.,”,k=0」..,W,〃和W分别表示图像的

高度和宽度,定义如下:

'G„(0,0)-G0(O,W]

/„=::

G0(H,O)…

/,表示线性灰度变换后的医学图像,6,(〃水)表示图像4中像素点(",左)处的

灰度值,/,定义如下:

一6(0,0)•••G,(o,w)-

AJ[_•:•:•

G,(H,O)…G,(H,W)

(3.2)

其中,6(〃,左)和6“(〃,女)满足如下关系式:

G,(〃,A)=cG“(〃,A)+a(3.3)

式(3.3)是医学图像线性灰度变换的公式,式中,。是正实数,表示线性灰度

变换系数,当c>l时,灰度变换后的图像对比度得到增强,其效果是使医学图像

中相邻组织的对比更加明显,图像看起来更加清晰;当时,灰度变换后图像

的对比度减小,其效果是使医学图像中相邻组织的对比减弱,图像变得暗淡;当

c=l时,灰度变换后图像的对比度不变。。是整数,表示亮度调节系数。当。=1,

。>°时,灰度变换后的图像整体灰度得到提高,其效果是使整个图像变得更亮;

当c=l,”<0时,灰度变换后的图像整体灰度下降,其效果是使整个图像变暗;

当c=l,。=0时,灰度变换后图像的亮度不变。需要特别说明的是本章中的图

像像素值和像素点坐标都为整数,并且对于整数各种计算结果按C语言规则取,

例如:如果m是一个整数,计算结果是m=3.99,则取整后得m=3,也就是说只

要3.0<m<4.0,则取整后m一定等于3。为了进一步理解医学图像的线性灰度变

换,下面给出儿个例题加以说明。

例3.1已知原始医学灰度图像/“,写出线性变换的公式和线性灰度变换后

的图像其中灰度变换系数为2.0,亮度系数为30。要求灰度变换后的图像最

大灰度值不超过255o

10305

Io=154590

_3560120

解:医学图像线性灰度变换的公式为:

G,(〃㈤=2G,,(〃,A)+30

式中,G.(〃,A)表示原始医学灰度图像中像素点(〃«)处的灰度值,

G,(〃,。表示线性灰度变换后的图像/,中像素点(〃,。处的灰度值,由已知条件可

知,Go(0,0)=10,将G0(0,0)代入公式(3.4),可得G,(0,0)=50,按照这种方法,

依次将G,(。,。=30,…,G.(2,2)=120代入公式(3.4),可得G,(0/)=90,…,

G,(2,2)=255,由此可得线性灰度变换后的图像/,为:

■509040'

/,=60120210

100150255_

为了更好地理解医学图像的线性灰度变换,便于在学习过程中编程实现,下

面给出医学图像线性灰度变换的部分C语言源代码(假设原始医学图像的最大灰

度值是255,需要特别说明的是本章的C语言源代码除开窗显示部分外,其余的

源代码都是针对24位的灰度bmp医学图像而编写的,如果输入其它格式的医学

图像需做相应的变动):

//医学图像线性灰度变换公式的实现

for(n=0;n<nHeight;n++)

〃利用双循环读取原始图像数据,n是循环变量,nHeight表示图像高度

{

for(k=0;k<nWidth;k++)

〃k是循环变量,nWidth表示图像宽度,

〃读原始图像数据,nGonk表示原始图像中像素点(n,k)处的灰度值,

//IpImgBufln表示存放原始图像数据的内存指针,nRowBytes表示原始图

//像中每行的字节数

nGonk=*(lpImgBuf!n+3*k+n*nRowBytes);

〃进行线性灰度变换,nGlnk表示线性灰度变换后图像中像素点(n,k)处的灰

〃度值,dbc表示变换系数,na表示亮度调节系数

nGtnk=(int)(dbc*nGonk+na);

//对图像灰度值进行限制

if(nGtnk>255)

{

nGtnk=255;

)

elseif(nGtnk<0)

(

nGtnk=O;

)

〃存放线性灰度变换后的图像数据

//mJplmgLineTransfGrayBufOut表示存放线性灰度变换后图像数据的内存指针

*(m」pImgLineTransfGrayBufOut+3*k+n*nRowBytes)=nGtnk;

*(m_lpImgLineTransfGrayBufOut+3*k+1+n*nRowBytes)=nGtnk;

*(m_lpImgLineTransfGrayBufOut4-3*k+2+n*nRowBytes)=nGtnk;

图3-1是医学图像线性灰度变换的部分实验结果,图中,(a)和(d)是原始的

灰度医学图像,(b)是对(a)灰度变换的结果,变换系数为2.42,亮度调节系数为0,

可以看出图像对比度得到增强,图像更加清晰。(c)也是对(a)灰度变换的结果,

变换系数为1,亮度调节系数为140,可以看出图像变得更亮,但对比度并没有

改变。(e)是对(d)灰度变换的结果,变换系数为0.54,亮度调节系数为0,可以看

出图像变得暗淡,对比度减弱。⑴是对(可灰度变换的结果,变换系数为1,亮度

调节系数为-99,可以看出图像变得较暗,但对比度并没有改变。

00:2400:2400:24

二、非线性灰度变换

非线性灰度变换就是按照非线性映射关系对医学图像的灰度进行变换,最为

常用的有对数、指数变换。在非线性变换中,常用对数、指数函数等曲线函数作

为映射函数,可实现图像灰度的非等比例变换。

对数变换是对原始图像各像素的灰度值或各像素的灰度值的某个线性变换

值取对数,对数变换的一般表达式为

g(x,y)…吗”](3.5)

b-lnc

其中,a、b、c为可调参数,用于调整曲线的位置和形状。

对数变换对图像的低灰度区有较大的扩展而对高灰度区压缩。适合于对像素

灰度集中在低灰度区的图像进行处理,可以使图像的灰度分布均匀,与人的视觉

特性相匹配。

指数变换是将原始图像数据中像素的灰度值或该灰度值得某个线性变换作

为指数进行运算,将运算结果或结果的某个线性变换作为现实图像数据中的像素

灰度值。其一般表达式为

g(x,y)=bc[f{x'yya]-\(3.6)

其中,a、b、c为可调参数,用于调整曲线的位置和形状。

指数变换处理效果与对数变换相反,它将对图像的高灰度区给予较大的扩

展。指数变换适合对像素灰度集中在高灰度区的图像进行处理。

三、部分线性灰度变换

部分线性灰度变换是针对图像的某一部分感兴趣区域灰度进行灰度放大,其

余部分进行灰度压缩。它对感兴趣的灰度范围内的灰度变换是线性变换,但其余

灰度范围则属于非线性灰度变换,因此也称为部分线性灰度变换。在医学图像处

理中,最常见的部分线性灰度变换就是高精度医学图像的开窗显示,也称窗口技

术。临床上,开窗显示对医学图像诊断有非常重要的作用,下面将对高精确医学

图像的开窗显示进行详细的介绍。

由于临床诊断的需要,PACS对医学图像的空间分辨率和密度分辨率都有很

高的要求。加州大学洛杉矶分校医学院放射系通过实验指出,观察气胸和肺间质

或骨骼的细微裂纹,需要分辨率为4096X4096个像素点,而最大灰度值为12bit

的医学图像;而要在乳腺图像上发现微钙化点簇或对比度低的乳腺肿瘤则要求高

达6144X6144个像素点的分辨率和12bit的灰度值。这种空间分辨率较大并且像

素最高灰度值超过8bit的医学图像,称之为高精度医学图像。目前国内医院中所

用的普通电脑显示器不能直接显示这种高精度医学图像,国外采用专门用于医学

图像的高分辨率数字显示器来解决高精度医学图像的显示问题。但是专用显示器

的价格很昂贵,一般情况下,显示器的投资就占到整个PACS系统总费用的

60%~70%,可见,这并不适合我国的具体国情。因此,目前国内医院对高精度

医学图像都采用开窗显示技术,通过软件方法在普通电脑显示器上分段显示高精

度医学图像的所有信息。利用开窗显示,通过调节窗宽和窗位可以将医学图像的

最佳诊断信息显示出来,满足临床诊断的要求。

高精度医学图像的开窗显示技术原理如下:通常使用的电脑显示器由于动

态范围有限,并受到操作系统的限制,对于灰度图像所能显示的最大灰度值是

8bito而数字化的高精度医学图像的最大灰度值通常不低于12bit,利用普通的电

脑显示器难以直接显示全部灰度信息。因此,必须通过开窗显示技术,在不影响

视觉效果的前提下将高精度医学图像的较大范围内的灰度值逐段映射为0~255

灰度范围来显示。概括来说,开窗显示就是在高精度医学图像的较大灰度范围内

开设一个窗口,将这个窗口范围内的灰度值映射为0~255范围内的灰度值来显

示,并通过不断地调节窗宽和窗位将所有的高精度医学图像信息逐段显示出来,

同时也可以通过调节窗宽和窗位将医学图像的最佳诊断信息在电脑显示器上显

示出来。开窗显示是通过开窗变换来实现的,图3-2是高精度医学图像的开窗变

换示意图。

图3-2中,3(〃,左)是横坐标,表示原始高精度医学图像/“中像素点("水)处

的灰度值,是纵坐标,表示开窗变换后图像。中像素点(”水)处的灰度

值,G,,max(小女)表示原始高精度医学图像中像素点(〃,左)处的最大灰度值,最表

示窗位,K表示窗宽。原始图像/。由式(3.1)定义,开窗变换后的图像。定义

如下:

&(0,0)…Gw(o,wy

/“=::

_GK〃,O)…

//

式中,H和W分别表示图像。的高度和宽度,根据图3-2可得开窗变换公

式如下:

、W

0Go(n,k)<Cw--

255(3(〃《)工+学

ww

Cw—G。(〃★)<c+.

IV

255G(\n,k)>Cw+—^-

(3.8)

式中,聂,-4和Q.+U分别表示窗口的下限值和上限值。下面通过例题

22

对高精度医学图像的开窗显示进行进一步说明。

例3.2,已知高精度医学图像写出开窗变换的公式和开窗变换后的图像

其中开窗变换的窗位为1078,窗宽为255。

10861102120312741349

123321578816974

10521089110911241090

11301120111611001084

解:将窗位和窗宽的已知数值代入式(3.8),得高精度医学图像开窗变换的公

式为:

0G„(nJ)<951

G<255(G,(〃,k)―951)951<G(〃,女)<1205

v'255v'

255G,,(〃,A)N1205

〔(3.9)

式中,6“(〃,火)表示原始高精度医学图像/“中像素点(〃,女)处的灰度值,

G.(〃《)表示开窗变换后的图像.中像素点(小人)处的灰度值,由已知条件可知,

G„(0,0)=1086,将G0(0,0)代入公式(3.9),可得G,(0,0)=135,按照这种方法,

依次将G0(0,1)=1102,…,G.(3,4)=1084代入公式(3.9),可得G,(0,1)=151,

…,G,(3,4)=133,由此可得开窗变换后的图像。为:

135151252255255

000023

101138158173139

179177165149133

根据式(3.8)将原始图像进行开窗变换后就可以进行开窗显示,高精度医学图

像开窗显示的部分C语言源代码如下:

〃高精度医学图像开窗变换公式的实现

for(n=0;n<nHeight;n++)

〃利用双循环读取原始图像数据,n是循环变量,nHeight表示图像高度

for(k=0;k<nWidth;k++)

〃k是循环变量,nWidth表示图像宽度,

〃读原始图像数据,nGonk表示原始图像中像素点(n,k)处的灰度值,pnlmgBufln表示

//存放原始图像数据的内存指针

nGonk=*(pn!mgBufIn+k+n*nWidth);

〃利用if语句进行开窗变换,nLowVal表示窗口的下限值,nGwnk表示开窗变换后

//图像中像素点(n,k)处的灰度值,nHighVal表示窗口的上限值

Z/nWindowWidth表示窗宽

if(nGonk<=nLowVal)

(

nGwnk=0;

)

elseif(nGonk>=nHighVal)

(

nGwnk=255;

)

else

(

nGwnk=(int)((nGonk-nLowVal)*(255.0/nWindowWidlh));

)

〃存放开窗变换后的图像数据

//mJpWindowShowBufOut表示存放开窗变换后图像数据的内存指针

//nRowBytes表示图像中每行的字节数

*(mJpWindowShowBufOut+3*k+n*nRowBytes)=nGwnk;

*(m」pWindowShowBufOut+3*k+l+n*nRowBytes)=nGwnk;

*(m」pWindowShowBufOut+3*k+2+n*nRowBytes)=nGwnk;

图3-3是高精度医学图像开窗显示的部分实验结果,图中,图像(a)的窗位

是600,窗宽是255,图像(b)的窗位是1014,窗宽是255,图像©的窗位是1178,

窗宽是255,图像(d)的窗位是1433,窗宽是255。可以看出,在窗宽一定的情况

下,通过改变窗位能够将高精度医学图像的信息按一定的灰度范围逐段显示出

来。图像(e)的窗位是1014,窗宽是135,图像⑴的窗位是1014,窗宽是350,

图像(g)的窗位是1014,窗宽是750,图像(h)的窗位是1014,窗宽是2430。可以

看出,在窗位一定的情况下,通过改变窗宽能够将高精度医学图像的信息在某个

信息点进行压缩和展开。不同的窗位和窗宽显示了不同灰度范围的图像信息,只

有选择合适的窗位和窗宽才能显示出最佳的图像诊断信息。

(a)(b)(c)(d)

(e)⑴(g)(h)

图3-3高精度医学图像开窗显示结果

第三节医学图像的儿何运算

医学图像的几何运算就是把图像像素点的空间位置或图像的空间尺寸按照

某种映射关系映射为不同的空间位置或不同的空间尺寸。几何运算包括平移

(Translation)>旋转(Rotation)、缩放(Zoom)和镜像(Mirror)。在临床上,通过儿何

运算,医生可以从不同的方向、采用不同的大小对医学图像进行浏览和观察,便

于医生及时准确地做出诊断。图像的几何运算是图像配准(第八章)的基础。

一、图像平移运算

图像平移运算大概是儿何变换中最简单的一种了。如图3-4所示,初始坐标

为(Xo,y(>)的点经过平移(4/、,)(以向右,向下为正方向)后,坐标变为(巧,口)。这

两点之间的关系是〜=X。+<;y=y0+ty以矩阵的形式表示为:

(3.10)

0

图3-4图像像素平移示意图

当对图像做平移运算时,一定要根据平移距离估算图像平移后所需画布的大

小(图像旋转和图像缩放都存在这…问题),以免平移后信息的丢失。另外,除

了图像缩小运算外,对图像做其他儿何运算有可能出现坐标为小数的情况,因此,

为尽可能保持几何运算后图像的质量,还要考虑图像的插值问题。

二、图像旋转

医学图像的旋转是以图像的中心点为坐标原点按逆时针或顺时针方向转一

定的角度。通常医学图像的旋转都按逆时针方向,在本教材中,如不特别说明,

图像的旋转都是按逆时针方向旋转。图3-5是图像旋转的示意图,下面将根据图

3-5推导图像旋转的公式。

图3-5医学图像旋转示意图

图3-5中,表示原始医学图像,用实线矩形框表示,表示旋转后的医学

图像,用虚线矩形框表示,(〃“,/)表示图像/■中的像素点坐标,(%,()表示图

像/,中的像素点坐标,。表示图像/。中像素点(〃”,幺)与横坐标所成的夹角,。表

示图像/“旋转的角度,(0,0)表示图像的中心点,也是坐标原点,/•表示图像/。中

像素点(凡人)与坐标原点(0,0)的距离,k是图像的横坐标,表示图像宽度方向

的量,〃是图像的纵坐标,表示图像高度方向的量。由图3-5可得:

nr=rsin(6“+幻

《=rcos(Q+,,)

(3.11)

%=「sin%

V

k=rcos0

o()(3.12)

根据三角函数展开式将式(3.11)右边展开为:

n=rsin0cos0+rsin0cos0

<rOrro

k=rcos0cos3r-rsin0sin6

r()or(3.13)

将式(3.12)代入式(3.13)得医学图像旋转公式为:

n=ncos6+ksin6

<r()r()r

K=/cosq_〃°sin@

根据式(3.14)可知,当图像旋转任意角度时,计算出的像素点坐标可能会出

现小数,甚至在旋转后的图像中有些像素点在原图像中无对应点。而实际情况要

求,图像的坐标必须是整数,旋转后的图像中每个像素点都必须有值。因此,当

图像旋转任意角度时,根据式(3.14)计算出的坐标必须取整,对于那些在原图像

中无对应点的像素点可采用局部均值插值法或双线性插值法得到该像素点的像

素值。可见,任意角度的旋转会损失图像信息。在医学图像处理中,通常不允许

图像信息的损失。在实际的应用中最常用的是对医学图像旋转90°、180°和270°。

其中最基本和最常用的是旋转90%下面以图像逆时针旋转90°为例进一步说明

医学图像的旋转。

例3.3已知原始医学图像/。,写出图像逆时针旋转90°的旋转公式和旋转

后的图像

■10861102120312741349'

123321578816974

I=

O10521089110911241090

11301120111611001084

解:由于用矩阵表示图像时,纵坐标方向通常朝下,根据图3-5可知,当图

像逆时针旋转时式(3.14)中的角度应为负数,因此,将90°代入式(3.14)得

图像逆时针旋转90°的旋转公式:

%=-《

(3.15)

为了利用式(3.15)得到旋转后的图像,首先得到图像中各像素点对应的坐标:

'10861102120312741349一

(0,0)(0,1)(0,2)(0,3)(0,4)

123321578816974

(1,0)(1,1)(1,2)(1,3)(1,4)

/—

O10521089110911241090

(2,0)(2,1)(2,2)(2,3)(2,4)

11301120111611001084

(3,0)(3,1)(3,2)(3,3)(3,4)_

(3.16)

由于图像旋转是以图像中心为坐标原点,因此必须将坐标原点移至图像中

心,当图像的行数(高度)或列数(宽度)为偶数时,图像中心不能确定,必须在行

或列的末端补充一行或一列,使行数和列数都为奇数,图像中的行数为偶数,

补充一行并平移后的图像/。中各像素点对应的坐标如下:

-10861102120312741349

(-2,-2)(-2,-1)(-2,0)(-2,1)(-2,2)

123321578816974

(-1,-2)(-1,0)(-1,2)

110521089110911241090

I。=

(0,-2)(0,7)(0,0)(0,1)(0,2)

11301120111611001084

(1,-2)(L-1)(1,0)(1』)(1,2)

00000

.(2,-2)(21)(2,0)(2」)(20_

(3.17)

将〃"=一2,幺=-2代入式(3.15)得nr=2,%=-2,由此可知,图像/“中

像素点(-2,-2)逆时针旋转90°后对应旋转后的图像/,中像素点(2,-2)。由于图

像/。中像素点(-2,-2)对应的像素值为1086,所以,旋转后的图像/,中像素点

(2,-2)对应的像素值为1086。按照这种方法,将露=-2,k0=—l,…,%=2,

幻=2依次代入式(3.15)得〃,=1,kr=-2,…,nr=-2,kr=2,根据像素点

的对应关系可得旋转后的图像各像素点对应的像素值为:

1349974109010840

(-2,-2)(-2,-1)(-2,0)(-2,1)(々2)

1274816112411000

(T-2)(T,T)(TO)(-1,1)(T2)

11203578110911160

/0=

(0,-2)(o-i)(o,o)(0,1)(0.2)

1102321108911200

(「2)(LT)(1。(1』)(L2)

1086123105211300

_(2,-2)(2,0)(2」)(2,2)_

(3.18)

由式(3.18)可知,补充的行旋转后变为列,将该列去掉得旋转后的图像为:

134997410901084

127481611241100

120357811091116

110232110891120

108612310521130

为了方便今后的学习和应用,下面给出医学图像逆时针旋转90°的部分C语

言源代码:

〃高精度医学图像开窗变换公式的实现

//图像旋转90°

〃如果列数(宽度)是偶数,旋转后去掉补充的列,blsEvenCols是偶数列的标志

if(bIsEvenCols==TRUE)

(

〃利用双循环读取平移后的图像数据,no表示原始图像的纵坐标(高度方向)

Z/nHeightH表示原始图像高度的•半,ko表示原始图像的横坐标(宽度方向)

Z/nWidthH表示原始图像宽度的•半

for(no=-nHeightH;no<=nHeightH;no++)

(

for(ko=-nWidthH+1;ko<=nWidthH;ko++)

(

〃图像旋转90的公式实现,nr表示旋转后图像的纵坐标(高度方向)

〃kr表示旋转后图像的横坐标(宽度方向)

nr=-ko;

kr=no;

〃存储旋转后的图像数据,mJpImageRotateBufOut表示存储旋转后的图像数据

〃的内存指针,mJpImageDataBuf表示存储行和列补充后的图像数据的内存指

//LINEWIDTH是宏定义,#defineLINEWIDTH(widlh)((((width)*3+3)/4)*4)

*(m」pImageRotateBufOut+3*(kr+nHeightH)+(nr+nWidthH)*LINEWIDTH(nHeightH+

nHeightH))=*(m_lpImageDataBuf+3*(ko+nWidthH)+(no+nHeightH)*LINEWIDTH(

nWidthH+nWidthH+1));

*(mJpImageRotateBufOut+3*(kr+nHeightH)+l+(nr+nWidthH)*LINEWIDTH(nHeightH+

nHeightH))=*(m_lpImageDataBuf+3:{i(ko4-nWidthH)4-l+(no4-nHeightH)*LINEWIDTH(

nWidthH+nWidthH+1));

*(m_lpImageRotateBufOut+3*(kr+nHeightH)+2+(nr+nWidthH)*LINEWIDTH(nHeightH+

nHeightH))=*(m_lpImageDataBuf+3*(ko+nWidthH)+2+(no+nHeightH)*LINEWIDTH(

nWidthH+nWidthH+1));

else//如果列数(宽度)不是偶数

{

//利用双循环读取平移后的图像数据,no表示原始图像的纵坐标(高度方向)

//nHeightH表示原始图像高度的一半,ko表示原始图像的横坐标(宽度方向)

//nWidthH表示原始图像宽度的一半

for(no=-nHeightH;no<=nHeightH;no++)

(

for(ko=-nWidthH;ko<=nWidthH;ko++)

(

〃图像旋转90的公式实现,nr表示旋转后图像的纵坐标(高度方向)

〃kr表示旋转后图像的横坐标(宽度方向)

nr=-ko;

kr=no;

〃存储旋转后的图像数据,m_lpImageRotateBufOut表示存储旋转后的图像数据的内

〃存指针,mJpImageDataBuf表示存储行和列补充后的图像数据的内存指针

*(mJpImageRotateBufOut+3*(kr+nHeightH)+(nr+nWidthH)*LINEWIDTH(nHeightH+

nHeightH+l))=*(m_lpImageDataBuf+3*(ko+nWidthH)+(no+nHeightH)*

LINEWIDTH(nWidthH+nWidthH+2));

*(m」pImageRotateBufOut+3*(kr+nHeightH)+l+(nr+nWidthH)*LINEWIDTH(nHeightH+

nHeightH+l))=*(m」pImageDataBuf+3*(ko+nWidthH)+l+(no+nHeightH)*

LINEWIDTH(nWidthH+nWidthH+2));

*(mJpImageRotateBufOut+3*(kr+nHeightH)4-2+(nr+nWidthH)*LINEWIDTH(nHeightH+

nHeightH+l))=*(m_lpImageDataBuf+3*(ko+nWidthH)+2+(no+nHeightH)*

LINEWIDTH(nWidthH+nWidthH+2));

图3-6是医学图像旋转的部分实验结果,图像(a)是原始医学图像,(b)是逆

时针旋转90°后的图像,(c)是逆时针旋转180°后的图像,(d)是逆时针旋转270°

后的图像。通过图像旋转,可以从不同的角度对图像信息进行观察。

(a)(b)(c)(d)

图3-6医学图像旋转的实验结果

二、医学图像的缩放

医学图像的缩放就是根据一定的缩放系数对图像的宽度和高度进行缩小和

放大。图像缩放是最常见的图像处理技术之…,在临床上,通过缩放,医生可以

对医学图像的概貌和病变细节进行浏览和观察,便于医生及时准确地做出诊断。

(-)医学图像缩小

医学图像缩小分为按比例缩小和不按比例缩小两种。按比例缩小就是图像的

高和宽都按照同样的比例缩小;不按比例缩小就是图像高和宽的缩小比例不一

样。通常,医学图像的缩小是按比例缩小。常用的医学图像缩小方法有直接缩小

法和局部均值法。

直接缩小法就是根据缩放系数对原图像采样得到缩小图像,直接缩小法的公

式如下:

式中,c“和q分别是图像高度和宽度方向的缩放系数,〃。是原始图像/“中像

素点必)的纵坐标,即图像高度方向的量,总是原始图像/。中像素点必)

的横坐标,即图像宽度方向的量,%,是缩小后的图像&中像素点(〃4心,)的

纵坐标,即图像以高度方向的量,是缩小后的图像&中像素点(%。,勺,)的横

坐标,即图像L宽度方向的量。图像缩小是图像空间尺寸的变小,是通过某种

映射关系将原始图像的坐标映射为另一坐标,并用对应的像素值给映射后的图像

赋值。下面通过例题对直接缩小法进行进一步说明。

例3.4,已知原始医学图像写出图像直接缩小法的公式和缩小后的图像

&,其中,图像高度和宽度方向的缩放系数都是0.5。

■10861102120312741349-

123321578816974

l1o—-

10521089110911241090

11301120111611001084

解:图像直接缩小法的公式为:

%=0.5(〃。+1)-1

(=0.5代+1)-1

(3.20)

为了利用式(3.20)得到缩小后的图像,首先得到图像/“中各像素点对应的坐

标:

'10861102120312741349'

(0,0)(0,1)(0,2)(0,3)(0,4)

123321578816974

(叫(1」)。,2)。,3)(1,4)

/-

10521089110911241090

(2,0)(2,1)(2,2)(2,3)(2,4)

11301120111611001084

_(3,0)(3,1)(3,2)(3,3)(3,4)

(3.21)

由式(3.20)和(3.21)可知,%的最大取值为1,&的最大取值为1,对式

(3.20)进行变换得:

口=2%+1

1A=2&+1(3.22)

将%=0,&。=0代入式(3.22)得”。=1,%。=1。可见,缩小后的图像中

的像素点(0,0)与原始图像/。中的像素点(1,1)对应,因此根据式(3.21)知缩小后

的图像中像素点(0,0)的像素值等于321。按照这种方法,将〃”=0,%=1,

…,nzo~^f的,=1依次代入式⑶22)得〃0=1,k0=3,…,n„=3,k<,=3,

根据像素点的对应关系可得缩小后的图像却各像素点对应的像素值为:

_r321816'

20-[11201100

为了更好地理解直接缩小法,下面给出医学图像直接缩小的部分C语言源代

码:

〃利用直接缩小法对图像缩小

〃利用双循环获得缩小后的图像数据,其中,nzo表示缩小后图像的纵坐标(高度方向)

〃nHeight表示缩小后的图像高度,kzo表示缩小后图像的横坐标(宽度方向)

//nWidth表示缩小后图像的宽度

for(nzo=0;nzo<nHeight;nzo++)

(

for(kzo=0;kzo<nWidlh;kzo++)

(

〃根据变换后的缩小公式获得对应的原始图像坐标,dbcn表示高度方向的缩放系数

//no表示原始图像的纵坐标(高度方向),ko表示原始图像的横坐标(宽度方向)

//dbck表示宽度方向缩放系数

no=(int)(((nzo+l)/dbcn)-l);

ko=(int)(((kzo+l)/dbck)-l);

〃获得缩小后的图像数据,IpImgBufln表示存储原始图像数据的内存指针

//mJpImageZoomOutBufOut表示存储缩小后图像数据的内存指针

*(m_lpImageZoomOutBufOut+3:3:kzo+nzo*LINEWIDTH(nWidth))=*(lpImgBufIn4-

3*ko+no*LINEWIDTH(nOriginalWdth));

*(m_lpImageZoomOutBufOut4-3*kzo+l+nzo:icLINEWIDTH(nWidth))=*(lpImgBufIn+3*ko

+1+no*LINEWIDTH(nOriginalWidth));

*(m_lpImageZoomOutBufOut+3*kzo+24-nzo*LINEWIDTH(nWidth))=*(lpImgBufIn+3*ko

+2+no*LINEWIDTH(nOriginalWidth));

图3-7是利用直接缩小法对医学图像缩小的部分实验结果,图中,图像(a)

是原始医学图像,(b)是缩放系数为0.8的缩小图像,(c)是缩放系数为0.5的缩小

图像,(d)是缩放系数为0.3的缩小图像。直接缩小法的优点是简单易编程实现,

能够看到图像的概貌,但是这种方法得到的缩小图像中没有被选中的点信息就无

法反映到缩小后的图像中,为了解决这个问题,可以采用局部均值法来实现图像

的缩小变换。

(a)(b)(c)(d)

图3-7医学图像缩小的实验结果

局部均值法就是用原始图像中某一局部区域像素点的平均像素值代替缩小

后的图像中对应点的像素值。局部均值法用公式表示为:

1品ck

=%££G.(〃”勺)

c”q(3.23)

式中,G乂%,表示缩小后的图像&中像素点(%,七,)处的像素值,

3(〃“,幺)表示原始图像/〃中像素点(〃“人)处的像素值,〃它也,与鬼,幺z之间满

足式(3.19),N表示原始图像中局部区域中的像素点总数。下面通过例题对局

部均值法进行进一步说明。

例3.5已知原始医学图像/。,写出图像局部均值法的公式和缩小后的图像

L,其中,图像高度和宽度方向的缩放系数都是0.5。

10861102120312741349-

123321578816974

lIo—-

10521089110911241090

11301120111611001084

解:图像局部均值法的公式为:

1%=2,%,+1勺=2%,+1

G乂〃"。)=万EEG0(〃0代)

Nn0=2n,0勺=2%(3.24)

为了利用式(3.24)得到缩小后的图像,首先得到图像中各像素点对应的坐

标:

■10861102120312741349一

(0,0)(0,1)(0,2)(0,3)(0,4)

123321578816974

(1,0)(1,1)(1,2)(1,3)(1,4)

J—

lo-

10521089110911241090

(2,0)(2,1)(2⑵(2,3)(2,4)

11301120111611001084

(3,0)(3,1)(3,2)(3,3)(3,4)_

(3.25)

由式(3.20)和(3.25)可知,%。的最大取值为L七。的最大取值为1,由式

⑶22)可知,缩小后的图像Izo中像素点(0,0)对应原始图像/。中由像素点

(0,0),(0,1),(1,0)和(1,1)组成的区域,根据式(3.24)和(3.25)得

GR(0,0)=658,按照这种方法可得G:0(0,1)=967,…,G«,(1,1)=1112,因此

利用局部均值法缩小后的图像乙为:

658967

I—

zo|_10971112

为了更好地理解局部均值法,下面给出医学图像利用局部均值法缩小的部分

c语言源代码:

〃利用局部均值法对图像缩小

〃利用双循环获得缩小后的图像数据,其中,nzo表示缩小后图像的纵坐标(高度方向)

〃nHeight表示缩小后的图像高度,kzo表示缩小后图像的横坐标(宽度方向)

//nWidth表示缩小后图像的宽度

for(nzo=0;nzo<nHeight;nzo++)

(

for(kzo=0;kzo<nWidth;kzo++)

(

//实现局部均值法的公式

nostarl=(int)(nzo/dbcn);//获得原始图像中局部区域的起始纵坐标

noend=(int)(((nzo+1)/dbcn)-1);//获得原始图像中局部区域的终止纵坐标

if(noend>nOriginalHeight-l)//对终止纵坐标加以限制,防止越界

(

noend=nOriginalHeight-1;

)

kostart=(int)(kzo/dbck);//获得原始图像中局部区域的起始横坐标

koend=(int)(((kzo+1)/dbck)-1);//获得原始图像中局部区域的终止横坐标

if(koend>nOriginalWidth-1)//对终止横坐标加以限制,防止越界

(

koend=nOriginalWidth-1;

)

N=0;//计数变量置零

nTotalPixelVal=O;//像素总值置零

//利用双循环获得原始图像中局部区域的像素总值

//no表示原始图像的纵坐标(高度方向),ko表示原始图像的横坐标(宽度方向)

//IpImgBufln表示存储原始图像数据的内存指针,nOriginalWidth表示原始图

像宽度

for(no=nostart;no<=noend;no++)

(

for(ko=kostart;ko<=koend;ko++)

(

N++;

nTotalPixelVal+=*(lpImgBunn+3*ko+no*LINEWIDTH(nOriginalWidth));

)

)

nAveragePixelVal=nTotalPixelVal/N;//获得局部区域均值

//根据变换后的缩小公式获得对应的原始图像坐标

//dbcn表示高度方向的缩放系数,dbck表示宽度方向缩放系数

no=(int)((l/dbcn)*nzo);

ko=(int)((l/dbck)*kzo);

//获得缩小后图像数据

//mJpImageZoomOutBufOut表示存储缩小后图像数据的内存指针

*(m_lpImageZoomOutBufOut+3*kzo+nzo*LINEWIDTH(nWidth))=nAveragePixelVal;*(m_lpIm

ageZoomOutBufOut+3:1:kzo4-l+nzo*LINEWIDTH(nWidth))=nAveragePixelVal;

*(m_lpImageZoomOutBufOut+3*kzo+24-nzo55cLINEWIDTH(nWidth))=nAveragePixelVal;

图3-8是利用局部均值法对医学图像缩小的部分实验结果,图中,图像(a)是

原始医学图像,(b)是缩放系数为0.8的缩小图像,(c)是缩放系数为0.5的缩小图

像,(d)是缩放系数为0.3的缩小图像。局部均值法在保存图像信息方面较直接缩

小法好,但局部均值法也引起了图像信息的损失。

(a)(b)(c)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论