彩色图像--图像增强 直方图增强

得知DIP文章70日
转载请注明文章出处:http://blog.csdn.net/tonyshengtan 。出于尊重文章作者的劳动。转载请标明出处。文章代码已托管,欢迎共同开发:https://github.com/Tony-Tan/DIPpro

开篇废话

继续简单的介绍一下彩色图像处理相关的知识。今天来简单的说下直方图增强在彩色图像中的应用,灰度图像直方图增强在此处做了相关介绍,包含其数学原理。
对于灰度图像中的一些算法适合直接用到彩色图像的各个通道。也有一些不适合,直方图均衡就属于不适合的一种。假设直接将其作用在各个通道上,将引起图像色相的变化因此也就是图像变的不是其原来的样子了。今天我们将直方图均衡用到HSI色彩空间的I分量上,直方图对亮度分量进行均衡。是图像在亮度上得到增强。在饱和度和色向上保持不变。

算法原理

算法的原理就是利用HSI色彩空间的特点,I分量代表图像亮度。处理后不会改变图像色相。

算法步骤:
1. 从RGB转换到HSI
2. 分离HSI空间。I分量形成一个单独的灰度图像fi
3. 对fi进行直方图均衡
4. 用均衡后的数据取代原I分量数据
5. HSI转换回RGB

代码

/*********************************************************************************************************************/
void HistEqualRGB(RGB *src,RGB *dst,int width,int height){
    HSI *temp=(HSI*)malloc(sizeof(HSI)*width*height);
    double *chanel_i=(double *)malloc(sizeof(double)*width*height);
    RGB2HSI(src, temp, width, height);
    for(int i=0;i<width*height;i++){
        chanel_i[i]=(double)((int)temp[i].c3);
    }
    HistogramEqualization(chanel_i, chanel_i, width, height);
    for(int i=0;i<width*height;i++){
        temp[i].c3=chanel_i[i];
    }
    HSI2RGB(temp, dst, width, height);
    free(temp);
    free(chanel_i);

}
/*********************************************************************************************************************/

效果分析

以下对一些图片进行上述算法操作。来观察效果。
原图:

这里写图片描写叙述

原图I分量:

这里写图片描写叙述

原图I分量直方图:

这里写图片描写叙述

直方图均衡后结果:

这里写图片描写叙述

直方图均衡后直方图:

这里写图片描写叙述

处理后结果:

这里写图片描写叙述


原图:

这里写图片描写叙述

原图I分量:

这里写图片描写叙述

原图I分量直方图:

这里写图片描写叙述

直方图均衡后结果:

这里写图片描写叙述

直方图均衡后直方图:

这里写图片描写叙述

处理后结果:

这里写图片描写叙述


原图:

这里写图片描写叙述

原图I分量:

这里写图片描写叙述

原图I分量直方图:

这里写图片描写叙述

直方图均衡后结果:

这里写图片描写叙述

直方图均衡后直方图:

这里写图片描写叙述

处理后结果:

这里写图片描写叙述


原图:

这里写图片描写叙述

原图I分量:

这里写图片描写叙述

原图I分量直方图:

这里写图片描写叙述

直方图均衡后结果:

这里写图片描写叙述

直方图均衡后直方图:

这里写图片描写叙述

处理后结果:

这里写图片描写叙述

总结

整体来说算法效果稳定,计算速度快,但这仅仅是一种最简单的彩色图像增强的方法,由于已经决定以后做识别方向。所以彩色图像的相关更深入的彩色变换,平滑,锐化。切割等仅仅做简介,大家多多交流。
待续。

。。

版权声明:本文博主原创文章,博客,未经同意不得转载。

posted @ 2015-09-09 14:11  mengfanrong  阅读(5058)  评论(0编辑  收藏  举报