zoukankan      html  css  js  c++  java
  • 数字图像的直方图均衡化(C/C++源代码)

    2004年10月14日 11:46:00

    数字图像的直方图均衡化是常用的图像增强方法,因为均衡化是自动完成的,无需人工干预,而且常常得到比较满意的结果。下面的程序是利用OPENCV提供的函数,实现这个功能。需要OPENCVB4.0的支持,在VC6下编译通过。

    //
    // perform histgram equalization for single channel image
    // AssureDigit Sample code
    //


    #include "cv.h"
    #include "highgui.h"

    #defineHDIM   256    // bin ofHIST, default = 256

    int main( int argc, char** argv )
    {
        IplImage*src = 0, *dst = 0;
        CvHistogram*hist = 0;
       
        int n =HDIM;    
        doublenn[HDIM];
        ucharT[HDIM];
        CvMat*T_mat;
       
        int x;
        int sum = 0;// sum of pixels of the source image 图像中象素点的总和
        double val =0;
       
        if( argc !=2 || (src=cvLoadImage(argv[1], 0)) == NULL)  //force to gray image
           return -1;
       
       cvNamedWindow( "source", 1 );
       cvNamedWindow( "result", 1 );
       
        // calculatehistgram 计算直方图
        hist =cvCreateHist( 1, &n, CV_HIST_ARRAY, 0, 1); 
        cvCalcHist(&src, hist, 0, 0 );
       
        // CreateAccumulative Distribute Function of histgram
        val =0;
        for ( x = 0;x < n; x++)
        {
           val = val + cvGetReal1D (hist->bins, x);
           nn[x] = val;
        }

        //Compute intensity transformation 计算变换函数的离散形式
        sum =src->height * src->width;
        for( x = 0;x < n; x++ )
        {
           T[x] = (uchar) (255 * nn[x] / sum); // range is [0,255]
        }

        // Dointensity transform for source image
        dst =cvCloneImage( src );
        T_mat =cvCreateMatHeader( 1, 256, CV_8UC1 );
        cvSetData(T_mat, T, 0);   
        // directlyuse look-up-table function 直接调用内部函数完成 look-up-table的过程
        cvLUT( src,dst, T_mat );

       cvShowImage( "source", src );
        cvShowImage("result", dst );
       cvWaitKey(0);

       cvDestroyWindow("source");
       cvDestroyWindow("result");
       cvReleaseImage( &src );
       cvReleaseImage( &dst );
       cvReleaseHist ( &hist );
       
        return0;
    }

     



    Trackback:http://tb.blog.csdn.net/TrackBack.aspx?PostId=136003


  • 相关阅读:
    2.NET Core设定数据库种子
    1.ASP.NET Core 中向 Razor Pages 应用添加模型
    获取文件夹目录下的文件信息
    dataGridView读写文本
    C# winform 启动外部程序
    netcore访问本地磁盘
    c#利用定时器自动备份数据库(mysql)
    c#mysql数据库备份还原
    Linux之旅(二)
    Linux之旅
  • 原文地址:https://www.cnblogs.com/feisky/p/1586546.html
Copyright © 2011-2022 走看看