MUSICA(多尺度图像对比度增强)算法的简要原理及VC实现-1[r]

    MUSICA的专利文档:MUSICA_patent - Original document.pdf

    算法原理:
    图像增强的一般方法是对比度拉伸和直方图均衡,这两种方法对于灰度级过于集中, 还有大量的灰度级没有充分利用的情况下比较适用,并且这两种方法都是基于直方图的变换,和像素的位置信息无关。假设有原始信号如(a),可看出细节信号(高频,例如指纹、衣服褶绉这样的细节)集中在较窄的灰度范围内,人眼很难分辨。并且细节信号集中的灰度范围在整个灰度级空间内,使用对比度增强和直方图均衡无法对不同的区域内像素进行不同程度的放大或者缩小。因此就有了MUSICA(Multi-Scale Image Contrast Amplification),可以翻译成多尺度图像对比度增强。
    基本的原理是先提取细节信息,然后对细节信号进行增强放大,然后再重构到原图中。局部细节信息的提取现在研究的热点一直都是小波分解。
    暂且不管理论,先从实际运用的角度来看。如图(b),假设对信号进行平滑滤波,可以得到新的蓝色信号。可以认为蓝色信号是对原信号的低分辨率近似,保留了整体的特征而丢弃了高频的细节信号,例如要分析图像的整体特征就要使用近似信号以排除高频(可能是噪声)的干扰。
    那么如图(c),原信号减去近似信号,得到的就是高频信号,也就是细节信号(当然也可能是噪声)。
    然后对(c)进行增强,最简单例如放大2倍,或者进行log变换得到(d)。
    然后把(d)加回到近似信号上,重构出增强后的原信号,如(e)所示。可以看到,图像的整体特性没有改变,两个细节集团的细节信号被放大了,适合人眼辨认。

图1

    这个算是从最直观的角度来考虑算法原理,只是一种近似的抽象,实际过程需要更多更具体的考虑,同时这也是个人的理解,会有偏颇的地方,留待完善。

    然后,总得给出点具体的原理和算法的实际步骤。详细的说明可以从MUSICA的专利文档里获得,这里给出个人角度的理解和说明。
    首先要从小波说起,直观地看,小波分解将(w*h)的图像分解成4个(w/2 * h/2) 的子图,其中1个为近似图像,3个为小波系数矩阵。然后对近似图像进行下一级的分解。如下图,A为原图的低分辨率近似图像,D为小波系数,D1、D2、D3的物理意义可以看作是水平、垂直、以及对角方向的细节矩阵。小波的重构是这个分解过程的逆过程,使用4个低分辨率的子图重组成一个高分辨率的图。这部分知识最好看看小波的教科书,可以比较全面了解小波的特点。

图2

    直观地看小波分解,近似图像就是对原图的一个低分辨率的近似,保留图像的整体特征,而小波系数矩阵,就是低分辨率图像和原图的之间的差异,就是高频的信号,也就是细节。通过这样的分解,可以得到各个分辨率上的细节,目的是使某种分辨率下难以区分的特征在另一种分辨率下将很容易被区分和检测。人的眼睛可以自动聚焦来选择最佳的分辨率对眼前的景物进行分辨,而小波也就是因为类似人眼而受到很多重视。还有一个重要的概念是小波分解的小波,可以理解为用来分解图像而使用的小波基。直观地看,不同特性的小波基分解同一个图像,得到近似图像应该差不多,而提取得到的细节矩阵则反映的图像细节则有所差异。关于小波基的选择以及各种小波基特性的物理含义一直没有查找到比较好的解释。有一种解释是,某种小波基对某类特征的图像得到的小波系数矩阵比较有代表性,例如xxx1小波对图形组合简单的图像效果比较好,而xxx2小波对噪杂的自然图像好,xxx3对条纹状图像好...这仅是一个同学间讨论的假设,有待查证。
    但是MUSICA里使用的不是这种分解,而是使用高斯图像金字塔,在Rafael C. Gonzalez.的 Digital Image Processing.(电子工业出版社. 2004)一书里有介绍,这里引用其中的两个图来说明,前面提到的下波分解作为数学的基础,教材比较多,容易深入。
    高斯图像金字塔也是小波分解的一种,它生成一个w/2*h/2的低分辨率近似,和一个与原图等大的残差距阵(也就是高频细节)。图中的抽样(2↓)指对w*h的图像进行隔行采样,得到w/2*h/2的子图。内插器(2↑)则将w/2*h/2的图像行列间插入一个值扩展成w*h的图像,插入的值可以是0,或者是左右行的均值等方式。近似滤波和插入滤波就是所选择的小波基转化的滤波器组形式,这里选择的是高斯滤波器,滤波器的参数在专利文档里提供了一组经验参数,但是到具体设备上还需要根据实际成像的噪声等情况重新计算过才能达到较优的结果。

图3

    专利文档提供得整体算法框图如下:

图4

    2为输入图像,30为j级图像金字塔的分解过程,得到31为所有的残差矩阵,31'为图像的第j级近似。61缓存图像(对具体设备有意义吧)和62并对31进行s型函数的查表变换。34为重构过程,将变换后的残差距阵33和j级近似31'重新组合成增强后的图像4,输出。
    根据这个流程,就可以开始考虑算法的程序实现了。
    在开始在pc机上编程之前,需要说明几点:
    首先是算法原理中影响效果的几个部分。一是62里s型函数的选择。增强算法都有会带来噪声也一同增强的副作用,专利文档里讨论了这个问题,选择y=m*(x/m)p的指数变换,p的取值会对增强的频段产生影响,合理选择p、进行分段选择不同的p,可以抑制噪声的增强。二是30分解过程和34重构过程,这个其实属于小波分解的部分,分解的级数、分解步骤和小波基的选择(这里就是滤波器参数的选择),会对分解得到残差距阵产生影响,得到的残差距阵是否具有有效细节的代表性,能否有效过滤噪声,是这里的关键。编程中可以将一些参数设置成变量,使用配制文件输入,则可以将算法的研究和实现分开。专利文档中对这两个方面也进行了讨论,可以参考深入。
    然后还需要说明的一点的是,在pc上实现这个算法可能并不适合,一般都是在医疗设备上直接实现这个算法(嵌入式系统或者是某种特殊固件),使用关键字“AGFA MUSICA”可以在google上找到些相关资料。但是在这里并不考虑这点,仅把MUSICA作为一道有趣的算法题目,结合一些图像处理的知识努力去得到最优解。有相关背景的朋友也希望可以介绍一下相关专业的知识,那样就更有趣了。

    链接:MUSICA(多尺度图像对比度增强)算法的VC实现-2[r]


路漫漫其修远兮 吾将上下而求索

posted @ 2006-07-13 20:11 .Live 阅读(2215) 评论(8)  编辑 收藏 网摘 所属分类: 程序算法和技巧图形图像

  回复  引用  查看    
#1楼 2006-07-13 20:58 | dudu      
文章篇幅较长,建议使用摘要方式发布,如何使用摘要,请博客园FAQ第4项: http://www.cnblogs.com/dudu/articles/52480.aspx
  回复  引用  查看    
#2楼 [楼主]2006-07-13 21:19 | .Live      

  回复  引用    
#3楼 2006-10-17 10:56 | silenttree [未注册用户]
写得简洁易懂
  回复  引用    
#4楼 2007-04-29 21:15 | niki [未注册用户]
这里有涉及金字塔\多尺度,知道元胞自动机吗?
  回复  引用  查看    
#5楼 [楼主]2007-04-30 09:20 | .Live      
@niki
不知道啊,是什么领域的应用,简要解释一下?
  回复  引用    
#6楼 2007-04-30 20:08 | niki [未注册用户]
元胞自动机(Cellular Automata,简称CA,也有人译为细胞自动机、点格自动机、分子自动机或单元自动机)。是一时间和空间都离散的动力系统。散布在规则格网 (Lattice Grid)中的每一元胞(Cell)取有限的离散状态,遵循同样的作用规则,依据确定的局部规则作同步更新。大量元胞通过简单的相互作用而构成动态系统的演化。
不同于一般的动力学模型,元胞自动机不是由严格定义的物理方程或函数确定,而是用一系列模型构造的规则构成。凡是满足这些规则的模型都可以算作是元胞自动机模型。因此,元胞自动机是一类模型的总称,或者说是一个方法框架。其特点是时间、空间、状态都离散,每个变量只取有限多个状态,且其状态改变的规则在时间和空间上都是局部的。
对金字塔我不太了解,只知道从顶层1到底层power(2,n)xpower(2,n),这个要如何对应在图像中?
我是这样理解的:是指第一次把图像分割成4(假定)份,进行增强,再对每个4份之一分割2分之一,进行增强,一直细化到1.进行增强,也就是得到三个不同的图像,最后细分到8份的图像增强的效果最好?
  回复  引用    
#7楼 2007-05-22 19:11 | LIGHTDRAW [未注册用户]
一般增强是加大矩阵的对比值,这个y=m*(x/m)p来替换原来的矩阵,算法是根据什么能够增强?
  回复  引用  查看    
#8楼 [楼主]2007-05-22 21:33 | .Live      
@LIGHTDRAW
这里使用的增强是采用s型函数对灰度直方图进行映射,压缩高亮度的部分,增强低亮度的部分。但是单一的s型函数,例如对数曲线,越小的值增强越厉害,和所有的增强算法一样可能会增强噪声。因此采用的y=m* (x/m)^p 的指数变换,应该是m乘上 x/m 的p次方,m和p的选择就是根据不同系统的噪声和信号的特性来进行选择了,以尽可能抑制噪声。在这个算法里就是要抑制灰度值较小的噪声,放大灰度级中等的信号,把函数的曲线画到纸上就可以比较清楚看出来,或者看专利文档里的说明,有图说明的。

y=m* (x/m)p 应该是 y=m* ((x/m)^p ) p是指数
[r]





标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-07-13 21:22 编辑过
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接: