饶 谦,田 丰
(上海大学 影视艺术技术学院 影视工程系,上海200072)
传统的X射线胶片照相技术工序复杂,照相费时且费力,需要大量的胶片,成本很高;胶片照相需要经过拍片、洗片、评片,最后才能出具胶片的检测报告;不能满足实时成像、实时检测与评估的要求;检测出的大量胶片不便于存储。因此,传统的X射线胶片照相已经逐渐落后于工业射线检测的发展进程。而基于图像增强器的X射线成像技术已普遍使用,它能直观、快速地对物体进行实时检测,较传统胶片成像有其优势[1]。
引入图像增强器技术后,降低了受照剂量,图像质量也得到了改善。但它在将X光辐射转换成可见光图像的过程中会带来一系列问题,如引入了大量的噪声,造成了图像质量差、信噪比低以及瑕疵点等问题,使不经过处理的视频图像无法应用到实际中去[2]。
本文以研制X光数字图像增强器为目标,构建影像处理系统的软硬件平台,研究影响成像质量的关键因素,提出改善影像质量的方法。针对现有的预设定降噪方法,提出了一种基于动态检测的动态降噪算法,改善了在运动环境下的降噪质量,并且针对瑕疵点存在的问题,提出了一种针对瑕疵点的检测与校正算法,满足了用户的需求。
如图1所示,视频通过CCD摄像头以PAL制式输入到解码芯片中,在视频芯片中进行A/D转换,变成符合ITU-BT.656标准的数字视频信号,再将其输入到DSP处理器中。
图1 系统的总体设计
在DSP处理器中:工作状态下循环等待ARM子系统的命令,将接收到的数字视频信号根据对应命令完成对视频图像的相应算法,同时不断将每一帧图像的平均亮度值反馈给ARM子系统;在图片保存状态中,将保存在SDRAM中的图像数据回送给ARM子系统。在ARM子系统中:当处于工作状态时,循环等待键盘指令,在验证指令的合法性之后,通过串口将对应命令发送给DSP处理器,同时不断接收DSP发送过来的每一帧图像的平均亮度值,再经过D/A和运算放大器转换到0~12 V的模拟信号,为X光机射线的反馈控制提供一个接口;当处于图片保存状态时,ARM子系统将接收到的图片通过SPI总线,依次保存到SD卡中。在完成指定视频图像处理算法后,DSP通过其内置的视频编码器(VENC)将数字视频信号编码为PAL制式模拟信号输出到监视器上。
输入视频的解码芯片采用的是PHILIPS公司的SAA7113,该芯片是一种I2C总线控制的视频处理芯片,能够方便地进行信号采样和色彩空间转换,可将输入的标准视频信号转换为数字视频信号[3]。输出视频的编码芯片采用的是ADI公司的ADV7160[4],这是一款高度集成的芯片,既包含精密的模拟电路,又包含高速的数字电路,通过精心设计,能确保数字电路对整个模拟电路的干扰减少到最小,它通过I2C总线进行控制,将数字形式的ITU-R BT601/656数字视频数据转换成标注的模拟基带电视信号,兼容PAL,NTSC等格式的输出。
考虑到整个系统要实现功能的多样性与实时性,整个图像处理算法的核心硬件DSP芯片的型号,选用了TI公司的TMS320DM6437。作为TI公司C64x+系列的一款芯片,其主频达400~700 MHz,同时其峰值运算速率更是高达3 200~5 600 MInstruction/s(兆指令/秒)[6-7]。相对于TI公司的C64x系列DSP,在保持指令兼容性的同时,TMS320DM6437有着自己独特的扩展指令集,同时拥有更大的cache配置容量和更为灵活的cache配置方式,这样能够充分地保障视频系统的实时性[3,5]。
ARM控制子系统的主控芯片,选择性价比较高的STM32F101VB芯片。该芯片采用了基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核,其内核性能要优于等价位的ARM7TDMI。
ARM控制子系统主要实现的功能有:检测外围按键/拨码开关输入,解析完成后将对应的命令通过串口发送给DSP处理器;接收DSP传递过来的视频图像的当前平均亮度信号,通过D/A转换到0~12 V模拟输出,用于自动增益控制(AGC);接收DSP从串口传递过来的已存储图片,将其存入SD卡中。
ARM控制器虽然自带DAC转换,但其输出的模拟电压值范围是0~3.3 V。而系统所要求的能够用于AGC控制的信号是0~12 V的模拟电压输出。所以必须要加上集成运算,将电压值放大。为了保证放大出来电压的稳定性,采用了2级正向放大电路。
卷积滤波算法是一种相邻域处理的方法,具体运算方法是将邻域内各个像素与对应的系数相乘,然后累加出响应。
卷积滤波的方法能实现降噪的功能,但效果提升有限,且由于其算法的固有原因,会导致处理后的图像分辨力有所下降。
在X射线图像处理中,消除随机噪声最常用、也是最有效的方法是多帧平均法[8]。
当几帧图像累加平均后,由于物体的无噪声源图像是作重复线性累加,对应的随机噪声却是作2次项累加,因此,当N帧图像进行累加后,无噪声源图像部分放大了N倍,而随机噪声放大了倍,对应的信噪比SNR就提高了倍。
经过平均帧算法处理后,图像的质量有了明显的改善。由实验结果图2a、图2b、图2d可以看出随着平均帧数的逐步增加,图像去噪效果越好、图像越清晰。但上述的分析都是以假设被测物体未发生剧烈运动为前提的。而当物体运动时,采用此种算法将会使视频图像产生拖影与模糊,累加帧数越多,此种现象也会越严重。随着累加的帧数增多,需要占用的存储空间会更多,算法的时间运算复杂度也会增强。因此这对于算法在嵌入式系统中实现的硬件成本也会大大提高。
图2 平均帧算法与邻帧比较降噪算法
由于X光成像系统噪声主要表现特征为图像上颗粒性的时间和空间随机亮点闪烁[9]。
现采用1邻帧比较去噪算法进行实验。算法主要可分两步进行:1)将4邻帧分成2组,两两取小,这样就可以消除离子噪声的蠕动,但同时,暗噪声也会积累变大;2)将上一步处理完的剩余2帧,取大处理,这样暗噪声也会得到有效抑制。该算法的具体数学表达式为
式中:Fs(i,j,k)表示处理前第k帧数字图像信号;Fd(i,j,k)表示处理后输出的第k帧数字图像信号。
实验结果由图2a、图2c给出,从图中可以看出邻帧比较降噪算法能够有效、有针对地去除系统中的噪声,效果虽然要比16帧平均算法差,但由于采用的是1邻帧比较降噪,因此输出图像只有相邻4帧图像产生关联,使得在被观测物体运动时,产生的拖影效果要优于16帧平均图像算法。
前面提到,多帧平均降噪算法与邻帧比较降噪算法是现如今常用且有效的两种针对X光图像的去噪算法。但是由于多帧平均降噪算法往往要累加较多的帧数,才能有较好的效果,因此它更适合于处理静态视频图像。而邻帧比较法在1邻帧时对图像效果的提升比较明显,而随着帧数的增加效果却没有平均帧算法降噪效果好。基于这一系列情况,做出了一种基于动态检测技术智能降噪的算法。图3给出了其算法的结构框图。
图3 动态降噪算法框图
首先,建立一个能够存储16帧图像的先入先出缓存队列(FIFO),每当一帧图像到来,将其入队列。同时将当前图像与上一帧图像作绝对值差,得到的帧间差图像的灰度总值再与当前图像灰度总值作归一化运算。
设定两个归一化阈值Y1,Y2(0<Y1<Y2<1)。当结果位于[0,Y1]中时,认为图像没有发生运动,标记该帧图像权重为1,当结果位于(Y1,Y2]时,认为图像发生缓慢运动,标记该帧图像权重为0.5,当结果大于Y2时,认为图像发生剧烈运动标记该帧图像为权重为0。
定义n值为从新到旧图像中,第一个权重为0的图像前的图像个数。即满足Kn+1=0或者n=16,表示第n+1张图像发生了剧烈运动,或者缓存中16张图像的存储状态都是静止的或者是缓慢运动的。
当动态去噪开关打开时,依次从新到旧检测FIFO中缓存图像的权重,如果权重为1的图像大于等于6张,则采用基于权重的多帧平均算法输出当前图像
式中:Id为输出图像帧;I1,I2,…,In(n≤16)为FIFO从新到旧中缓存图像;K1,K2,…,Kn(n≤16)为权重值。如果权重为1的图像小于6张,且n值大于等于4,则直接采用1邻帧比较算法输出图像;如果权重为1的图像小于6张,且n值小于4,判断当前图像中物体正处于剧烈运动状态下,将源图像进行3×3均值滤波输出。
经过多次实验验证,发现当Y1=0.15,Y2=0.38时,能够有效地进行动态去噪而又不产生严重的拖影现象。
在图像增强器的生产过程中,由于其生气工艺水平的限制,不可避免的会有灰尘、微小的固体颗粒等渗入其中,这些污染物会导致其产生的X光图像在某一些区域的信息失真,呈现出比周围要过亮(亮点)或过暗的点(暗点),称之为瑕疵点。
如果存在直径超过0.5 mm的大型污染物或存在超过4个以上直径在0.2~0.5 mm间的污染物,此图像增强器已经不符合国家标准,属于残次品,需要报废,不能对其进行校正。相反,如果存在4个或4个以下直径在0.2~0.5 mm间的污染物,此图像增强器是符合国家安全标准的,可以对其采用算法进行校正。
经过多次试验证实,在正常情况下,X光的空屏图像圆中心点最亮,然后向四周圆边缘匀速变暗。当有瑕疵点出现时,它与周围的像素间变化要相对剧烈。根据这一特点,可将瑕疵点检测出来,并判断其大小及个数,为后续是否对其进行校正做好前期工作。
研究过程中,根据这一特点,经过多次实验,设计出一种瑕疵点校正与检测算法如下:
首先获取一个空屏图像,对其圆消影内遍历全部像素点,同时向内存申请一帧图像数组缓存,初始化为0,用于对瑕疵点像素坐标的标记。遍历像素点时,对于单个像素而言将其与相邻4个像素点作差,如果得到的差中存在绝对值大于阈值A,则将其对应的坐标点记录下来,并将申请的数组缓存对应位置1。在生成的瑕疵点坐标图像数组中,遍历此数组,当检测左右、上下相邻为01或10时,将1对应位置标记为2,此为上述算法的误检测,实际为包围瑕疵点的正常像素点。在去除误检测后,对瑕疵点坐标图像数组进行连通域检测,当瑕疵点连通域内标记为1的像素点大于20个时,认为其产生了过大瑕疵点,算法结束。
图4给出了检测算法示意图。图中的灰色区域为认定的瑕疵点区域,由图可以看出,此算法最终能够比较准确地将瑕疵点区别检测出来,方便进行下一步的校正工作。
图4 瑕疵点检测算法示意图(A=2)
当某个瑕疵点连通域内标记为1的像素点小于5个时,将其都标记为3,认为其是无效的瑕疵点连通域;当且仅当某个瑕疵点连通域内标记为1的像素点大于等于5且小于20时,为有效连通域。当连通域个数大于4个时,认为过多瑕疵点产生,算法结束。
当没有产生过大瑕疵点和过多瑕疵点时,输出记录的瑕疵点坐标图像数组。
瑕疵点检测算法在开机之后只运行一次,如果存在需要校正的瑕疵点,图像就要根据这个数组的内容对瑕疵点进行校正。
首先,在获取到有效的瑕疵点坐标图像数组时,依次对每个标记为1的有效瑕疵点像素,检测其上下左右,直到找到相邻的标记为2的正常像素点,按照式(3)计算该点的估算值。
有了上述步骤后,当视频图像正常进入时,如果开启了瑕疵点修复开关,则每次检测瑕疵点坐标图像数组,如其值标记为1,则该像素乘以对应的校正系数后输出。
图5给出了本文所研究实现的X光机数字图像增强器样机。
图5 X光机数字图像增强器样机
为了实现开发具有自主知识产权的X光机数字图像增强器,本文提出了一种基于自动检测的动态降噪算法与瑕疵点校正算法,并在自行设计的X光机数字图像增强器样机上实现,修正了瑕疵点,提高了信噪比,满足了用户的需要。本文的工作也为真三维医学影像的生成做了铺垫。
[1]赵妮.基于X射线技术的电路设计[J].核电子学与探测技术,2011,31(7):779-782.
[2]杜昆.基于DSP的X光机智能控制系统[D].合肥:安徽理工大学,2009.
[3]NXP SAA7113H data sheet[EB/OL].[2012-01-27].http://www.nxp.com/documents/data_sheet/SAA7113H.pdf.
[4]Analog devices ADV7160 data sheet[EB/OL].[2012-01-27].http://www.analog.com/static/imported-files/data_sheets/ADV7160_7162.pdf.
[5]陶增,王鹏.基于TMS320C6000 DSP的嵌入式系统中引导方法的研究[J].计算机与数字工程,2005,33(7):27-31.
[6]TMS320DM6437 digital media processor[EB/OL].[2012-01-27].http://www.ti.com/lit/ds/sprs345d/sprs345d.pdf.
[7]TMS320C64x to TMS320C64x+CPU Migration Guide[EB/OL].[2012-01-27].http://www.ti.com/lit/an/spraa84a/spraa84a.pdf.
[8]HOU Qing,LI Wei.An improved enhancement self-daptive algorithm for X-ray digital image based on wavelet decomposition[C]//Proc.2010 3rd International Congress on CISP.[S.l.]:IEEE Press,2010,3:1041-1044.
[9]KASAP S O,ROWLANDS J A.Direct-conversion flat-panel X-ray image sensors for digital radiography[J].Proceedings of the IEEE,2002,90(4):591-604.