当前位置: 首页 > 期刊 > 《生物医学工程学杂志》 > 2000年第2期
编号:10273832
一种实用的X射线灰度图像的压缩算法
http://www.100md.com 《生物医学工程学杂志》 2000年第2期
     作者:周丽华 王世迪

    单位:(重庆医科大学 计算机室,重庆 400016)

    关键词:压缩算法;象素;R,G,B值

    生物医学工程学杂志000233 摘要 以医用X射线灰度图像为例,介绍基于象素R ,G,B值的无损压缩算法在X射线图像分析系统中的应用。通过对X射线灰度图像特征、象素 的R,G,B值、压缩等各个环节的设计与描述,完整地给出了该算法的实现过程。

    A Practical Compression Algorithm of the X Ray Images

    Zhou Lihua Wang Shidi

    (Computer Center, Chongqing University of Medical Science, Chongqing 400016)
, 百拇医药
    Abstract The application of a lossless compressioin algori thm, based on the R,G,B value of pixel, to a X ray analyzing system is introduc ed through some medical examples of the X Ray image. The realization of the algo r ithm is completely presented, based on the design and the description of the cha racteristics, the R,G,B value of the pixed and the lossless compression methods of the X ray images.

    Key words Compression algorithm Pixel R,G,B value
, 百拇医药
    1 前 言

    现代医学实验起源于解剖学,它是整个现代医学的基础,解剖学的可视性使医学的真实性、 可靠性和人们的研究热情大大提高,现代医学的发展是多学科努力的结果,但医学可视化始 终 是人们不懈追求的目标。100年前,德国人伦琴发现了X射线,由此开创了医学放射学的先河 , 此后,出现了各种的针对不同用途的X射线设备、体层摄影用X射线设备及特殊检查用X射线 设备等,这些设备均可与计算机技术相结合,计算机可通过数据采集卡从这些设备把原始X 线图像调入计算机,显示在计算机的显示屏上,并可将采入图像保存在计算机的存贮器中, 这样可反复调用和长期有效的保存,但是,由于计算机中保存图像需要用较大的存贮空间, 所以给其更为普遍的应用和在网上传输带来不便,基于此因,我们通过大量临床实践的验证 ,实现了一种即简单快捷又实用可行的X射线灰度图像无损压缩算法。

    2 图像显示

    在计算机中,要显示图像,就必须将其图像信息放入显示内存中,然后才能在计算机的显示 器上显示出来,而显示器是通过每个发光点(象素)的点阵方式来显示的,每个象素的色彩 由R(红色)值、G(绿色)值和B(蓝色)值来决定,所以保存在计算机中的图像须保存其每个象 素点的R,G,B值,随着显示分辨率的增加,保存在计算机中图像的容量也会增加。
, 百拇医药
    3 图像压缩算法

    3.1 压缩

    由于在显示器上显示图像的色彩用R,G,B值来表示,当R值=G值=B值时,其图像为灰度图像 ,基于此原理,由于X射线图像是灰度图像,所以我们将X射线图像每个象素的R,G,B值从 内存中取出,求其R,G,B三数的平均值(用M表示):

    M=(R+G+B)/3

    再把每个象素点的M值组成一个无损压缩文件存入磁盘,这样在磁盘中的压缩文件的大小就 会减少,以这样的方式存贮文件可节省存贮空间,以这样的方式传输文件可以提高传输速 度。

    3.2 解压

    从磁盘上调入压缩文件,只要将压缩文件中的每个M值分别放入显示内存对应的R,G,B值, 即可实现解压,在临床实践中效果非常好。
, 百拇医药
    4 一个实例

    下面给出一个X射线灰度图像压缩实例,如果不采用任何压缩方法其图像文件的长度为1301K bytes,见图1。如果采用第三节所用方法进行无损压缩,则压缩后的图像文件长度为432K bytes,其解压恢复后的图像,见图2。

    图1 压缩前的X射线图像

    Fig 1 A X ray image before compression

    图2 解压后的X射线图像

    Fig 2 The X ray image after decompression
, http://www.100md.com
    5 程序实现

    下面是在Windows 98中,采用24位真彩色,用Visual C++6.0编制的压缩Compressor() 和解压Decompressor()的函数程序段:

    LONG WINAPI Compressor(HDC hDC, LPSTR Fn, LONG w, LONG h)

    { FILE Fp;

    LONGPicW=w;

    LONGPicH=h;

    LONGSizBuf=wh3;

    LPBYTEBuff;

    HANDLEhMem;
, 百拇医药
    HBITMAPhBmp;

    HDChDCp;

    LONGk;

    BYTER,G,B

    Hmem = GlobalAlloc(GMEM-FIXED,SizBuf);

    Buff=(LPBYTE)GlobalLock(hMem);

    HDCp=CreateCompatibleDC(hDC);

    HBmp=CreateCompatibleBitmap(hDC,PicW,PicH);SelectObject(hDCp,h Bmp);

    BitBlt(hDCp,0,0,PicW,PicH,hDC,0,0,SRCCOPY);
, 百拇医药
    GetBitmapBits(hBmp,SizBuf,Buff);

    for(k=0;k
    {

    B=(Buff+k);G=(Buff+k+1);B=(Buff+k+2);

    (Buff+kp)=(B+G+R)/3; kp++;

    }

    if((Fp=fopen(Fn,"wb"))!=NULL){z=fwrite(Buff,PicW;PicH,Fp);fclose(Fp);}

    GlobalUnlock(hMem);GlobalFree(hMem); DeleteDC(hDCp);DeleteObject(hBmp);
, 百拇医药
    return ();

    }

    LONG WINAPI Decompressor(HDC hDC,LPSTR Fn, LONG w, LONG h)

    { FILE Fp;

    LONGkp=SizPic-1;

    LONGPicW=w;

    LONGPicH=h;

    LONGSizBuf=wh3;

    LPBYTEBuff;

    HANDLEhMem;
, http://www.100md.com
    HBITMAPhBmp;

    HDChDCp;

    LONGk;

    BYTER,G,B;

    HMem = GlobalAlloc(GMEM-FIXED,SizBuff);

    Buff=(LPBYTE)GlobalLock(hMem);

    HDCp=CreateCompatibleDC(hDC);

    hBmp=CreateCompatibleBitmap(hDC,PicW,PicH);

    SelectObject(hDCP,hBmp);
, 百拇医药
    if((Fp=fopen(Fn,"rb"))!=NULL)

    {

    z=fread(Buff,PicW,PicH,Fp);fclose(Fp);

    for(k=SizBuf-3;k>=0;k-=3)

    {

    B=(Buff+kp);G=B;R=B;kp-;

    (Buff+k)=B;(Buff+k+1)=G;(Buff+k+2)=R;

    }

    }

    SetBitmapBits(hBmp,SizBuf,Buff);
, 百拇医药
    BitBlt(hDC,0,0,PicW,PicH,hDCp,0,0,SRCCOPY);

    GlobalUnlock(hMem);GlobalFree(hMem); DeleteDC(hDCp);DeleteObject(hBmp);

    return();

    }

    6 结束语

    以上给出的是一种算法简单、实现容易、处理速度快的无损压缩算法,可广泛应用于黑白B 超图像、MRI(磁共振成像术)、PET(正电子发射断层扫描技术)等其它灰度图像的压缩存贮。

    参考文献

    1,陈鹤声.医用影像设备学,人民卫生出版社,1998∶102~398

    2,程文斌,金相凤.Visual C++实用大全,北京航空航天大学出版社,1995 年,601~629

    3,[美]Clayton Walnum著,齐舒创作室译.Windows98编程核心技术精解, 中国水利水电出版社,1998∶83~100

    (收稿:1999-12-23), 百拇医药