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

程序源码下载:IPLab_MUSICA.rar

    整体的流程还是比较简单的,问题是图像处理中的一些细节,例如滤波时边界的处理,图像抽样时w或者h为奇数时w/2(h/2)的取值,也就是离散整数的取整误差问题。还有些编程时内存分配的问题,临时缓存的分配等。但是不考虑得太复杂都使用最常用的方式,以上仅将大概的问题列出,碰到时候需要注意。
    入口函数伪代码:
void GDIPlusImage::IPFuncMUSICA()
{
    O = 原始图像;

    for(分解级数)
      {计算每级的长宽保存到矩阵S;}

    ImageGrey24To8(O);//灰度化,仅对灰度图象进行处理

    X = MUSICA_Decomposition(O,S);//分解,得到X为所有的图像按S里的顺序排列,30

    X = MUSICA_Mapping(X,S);//对分解图像进行变换,32

    O = MUSICA_Reconstruction(X,S);//重构,得到增强后的图像,34

    ImageGrey8To24(O);//转化成24为图,显示、后继处理起来方便,仅此而已
}

    MUSICA_Mapping(X,S)函数相对简单,只需要对S中的残差距阵进行灰度级的查表替换,替换的表根据s型函数事先构造好,其过程类似进行反色处理,可以参考前面的文章。可以考虑将替换表的构造独立出来,通过参数传递,方便改进。

    MUSICA_Decomposition分解和MUSICA_Reconstruction重构过程相对复杂,而且专利文档中提供了几种改进后的分解重构过程。对于编程实现来说其实本质都相通,因此所附程序中实现了专利文档中的4.a和4.b,也就是最简单的一种。仅对4.a分解的实现进行说明,4.c重构为逆过程,参考源代码。

图5

    一次分解流程:
1) 对X进行一级分解,X拷贝到buffer
2) 对buffer进行平滑滤波
3) buffer隔行抽样得到下一级的近似图X+1
4) 近似图X+1隔行插值0到buffer
5) 进行滤波参数乘4(对置0行列的补偿)的平滑滤波
6) X减去平滑后的buffer得到残差图像保存于X

    这样就完成一次分解,然后再对X+1进行下一级的分解。


图6

    所附程序在xp+vs.net2003下编译运行通过,程序运行后打开工程目录下的图片,点击快捷按钮1或者菜单项“图像处理-〉MUSICA”,然后要稍等一会,处理速度比较慢。工程目录下有两张示例图片,“心脏-交响乐处理前.jpg”为原始成像图片,“心脏-交响乐处理后.jpg”是一位老师给我的在专业设备上处理过后的结果图,作为和程序运行结果的比较。当然,程序运行的结果比它差很多,但是基本方向是对的,专利文档里还有很多改进的步骤和参数的择优都未实现,有兴趣的朋友自己动手。:)

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


本文转自 lu xu 博客园博客,原文链接:  http://www.cnblogs.com/dotLive/archive/2006/07/13/450166.html ,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值