基于Matlab的医学影像图像处理设计

2017-04-08 09:44姚尧胡淑金李红亮孙银合
数字技术与应用 2017年2期
关键词:数字图像处理医学影像X射线

姚尧++胡淑金++李红亮++孙银合+++常子栋

摘要:传统X射线医学影像存在边缘模糊、对比度低等缺点,影响了医学影像质量和诊断治疗。本文介绍了运用 Matlab 处理医学影像的数字图像处理方法,通过分析原始X射线图像的缺陷,设计预处理、巴特沃斯滤波、中值滤波、同态滤波图像处理方案,将原始X射线图像转化成对比度高、边缘清晰的图像,为医学研究提供便利。

关键词:数字图像处理;X射线;Matlab;医学影像

中图分类号:TP312 文献标识码:A 文章编号:1007-9416(2017)02-0167-03

1 引言

X射线的波长短,透射力强,具有感光和荧光作用,现代医学中,X射线检查对医学诊断有重要参考价值。人体的骨骼、器官密度、厚度不同,当X射线通过人体时,在荧光屏上形成灰度不同的图像,密度大的部位图像灰度大,密度小的图像灰度小[1]。医生根据X射线影像结合患者自述症状及诊断经验即可制定治疗计划。骨骼对X射线的吸收比肌肉对X射线的吸收强得多,1895年,伦琴利用X射线拍摄出历史上第一张X光片[2-3]。

由于 X 射线曝光不均匀、环境照度低,使得经图像信息输入系统获取的源图像中含有各种各样的噪声与畸变,降低了图像的品质,大大影响图像的质量,容易造成对病变器官的漏诊与误诊。采用图像增强的方法对图像进行改善,将图像中感兴趣的特征有选择地进行突出,并衰减不需要的特征,可以突出组织间的对比度、边缘轮廓。

随着计算机技术的发展,Matlab在图像处理方面的优势逐渐显现。其在仿真模拟、图形处理、大数据计算方面的功能特别适用于医学影像处理,开放式的编程环境及扩展功能为它的发展奠定了基础。其自带的工具箱含有大量图像处理函数,避免了使用者重新设计冗杂的程序,简化了工作流程,利用其实现医学影像处理和病理分析,具有深远的医学价值。

2 图像处理方案设计

2.1 预处理

图1为待处理的原始图像,其灰度过大,边界不清晰。首先将原始彩色图像转换为黑白图像,将三维RGB彩色图像压缩为一维黑白图像,处理后的图像大小为原图像的三分之一。

对像源灰度值进行扩展可以增加动态范围、扩展对比度,从而提高图像的清晰度。对比度增强可以改变图像灰度的动态范围,改变0-0.5灰度值的像素,将其灰度值扩展为0-1。使用Matlab工具箱中的imadjust (I,[low_in; high_in],[low_out; high_out])指令,将输入图像中low_in值映射到输出图像中的low_out值 、high_in值映射到输出图像中的high_out值 , 并将 low_in与high_in间的值进行线性缩放。

待处理的图像命名为“Image.jpg”存于E: \文件夹下。A为原始图像,B为黑白图像,C为经过对比度增强的图像。Matlab程序如下:

A=imread('E:\ Image.jpg');

B=rgb2gray(A);

C=imadjust(B,[0,0.5],[]);

图2为预处理后的图像。

2.2 巴特沃斯高通滤波

图像的细节、边缘主要位于其高频部分,图像的模糊主要是由于其高频成分比较弱。采用巴特沃斯高通加强滤波处理图像,提取圖像中边缘灰度值变化率大的部分,对图像进行锐化处理,是为了消除模糊,突出边缘。

巴特沃斯高通加强滤波器的传递函数为:

其中,

表示频率(u,v)至滤波器中心(u0,v0)的距离[4]。

用巴特沃斯高频加强滤波处理,可以弥补高频信号,即在原传递函数上加上一个大于0小于1的常数。程序中,取特征值a=1.5,b=0.5。Matlab不支持图像无符号整型的运算,因此要先将上一步通过预处理的图像转换数据类型,每点进行傅里叶变换。计算傅里叶变换后的数据大小,并取整,便于后续传递函数的运算。选定截止频率d0和阶次n后,按照传递函数进行运算,经滤波后再进行傅里叶反变换,图3为滤波后的图像。

Matlab程序如下:

D1=double(C); % 数据类型转换

D2=fft2(D1); %采用傅里叶变换

D3=fftshift(D2); %数据局陈平衡,将FFT的DC分量移到频谱中心

[M,N]=size(D3);

n1=floor(M/2);

n2=floor(N/2);

d0=20; %截止频率为20

n=2; %阶次为2

for i=1:M %巴特沃斯高通滤波

for j=1:N

d=sqrt((i-n1)^2+(j-n2)^2);

if d==0

h=0.5;

else

h=1.5/(1+(d0/d)^(2*n))+0.5;

end

D4(i,j)=h*D3(i,j);

end

end

D=ifftshift(D4);

D=uint8(real(ifft2(D)));

2.3 中值滤波

中值滤波的基本原理是将数字图像中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近真实值,以此消除孤立的噪声点。本文中选用3*3平滑模版滤波,使其变得均匀。

Matlab程序实现:G=filter2(fspecial('average',3),D)。

Matlab工具箱中自带的(type,para)函数用于建立预定义的滤波算子,type为滤波算子的类型,本文中选定average做均值滤波;para为参数,本文中选定3*3。将经过巴特沃斯高通加强滤波处理的图像加到进行过对比度增强的图像中后,图像变得清晰。处理后的图像再进行一次3*3平滑模版滤波,使其变得均匀,图4为处理后的图像。经过高通滤波能够提取出高频信号,削弱低频信号,将此时的图像叠加到经过预处理后的图像2中,既能获得边缘锐化的高频信号,又保留低频信号,如图5所示。

2.4 同态滤波

同态滤波把灰度变换和频率过滤结合起来,将图像的照度反射率模型作为频域处理的基础,通過压缩亮度范围和增强对比度改善图像的质量。使用这种方法可以使图像处理符合人眼对于亮度响应的非线性特性,避免了直接对图像进行傅立叶变换处理的失真[4]。

高斯型高通滤波器的传递函数为:

rh表示高频增益,rl表示低频增益,利用常数c控制滤波器函数斜面的锐化,当rl<1,rh>1时,减小低频并且增强高频,动态范围被压缩,对比度增强。利用Matlab实现时,首先转换数据类型,然后进行傅里叶变换,便于在频域内对高频信号和低频信号分别处理,选定高频增益为2、低频增益为0.5、常数c为4、截止频率为10,利用双重循环实现传递函数的运算,再进行傅里叶反变换。处理后的图像再进行一次3*3平滑模版滤波,使其变得均匀。图6为处理后的最终图像。

Matlab程序如下:

H=double(H);

f=fft2(H); %采用傅里叶变换

g=fftshift(f);

[M,N]=size(f);

d0=10;

rl=0.5;

rh=2;

c=4;

n1=floor(M/2);

n2=floor(N/2);

for i=1:M

for j=1:N

d=sqrt((i-n1)^2+(j-n2)^2);

h=(rh-rl)*(1-exp(-c*(d.^2/d0.^2)))+rl;

g(i,j)=h*g(i,j);

end

end

g=ifftshift(g);

g=uint8(real(ifft2(g)));

3 结语

Matlab集成了多种图像处理的工具箱,将复杂变换利用自带函数得以实现。在实际使用中,应根据不同X射线光片的灰度范围、拍摄亮度、不同骨骼布局适当的调整函数参数,如高频增益、低频增益、截止频率等,同时可将此数据存入数据库,在后续研究中以调用和参考。将Matlab应用于医学影像图像处理,通过对比度增强、傅里叶变换、滤波等处理,优化了图像质量,提高了诊断效率。

参考文献

[1]汪宁宁,金奎东,季宏波,陈秀芳,李莉,姜华.浅析X射线在医学影像诊断领域的发展及应用[J].中国卫生标准管理,2015,(14):167-168.

[2]罗述谦.X射线成像技术在医学中应用[J].物理,2007,(08):602-608.

[3]苗琦,王金苗.X射线成像技术在医学中应用[J].微计算机信息物理通报,2015,(05):124-126.

[4]陈春宁,王延杰.在频域中利用同态滤波增强图像对比度[J].微计算机信息,2007,(06):264-266.

猜你喜欢
数字图像处理医学影像X射线
实验室X射线管安全改造
医学影像技术在医学影像诊断中的合理运用
《当代医学影像误诊学》出版
《当代医学影像误诊学》正式出版
虚拟古生物学:当化石遇到X射线成像
信息与计算科学专业《数字图像处理》课程教学探讨与实践
微课在大学专业课中的应用研究
以应用实例为主线、以程序设计为主导的数字图像处理课程教学方法改革
基于DirectShow的便携式X射线数字图像采集的实现
医学影像专业放射物理教学改革与实践