zoukankan      html  css  js  c++  java
  • 2 均衡化直方图

    均衡直方图采所运用是是一个概率积分函数,对于某些像素个数很少,那么就需要压缩其存在的像素空间,甚至归于其他类像素点;对于某些像素个数很多,那么就需要延拓其存在的像素空间,这样看起来更加明显。概率积分函数为单调递增,形式如:

         

    Pr(r)是r的概率密度函数,Ps(s)是s的概率密度函数。Pr(r)已知,在此处表示像素范围值,为255;dr表示像素值为小于等于s的个数,ds表示总的像素个数。最后化简成如下形式:

        

    下面是运行代码:

    需要说明:

    【1】本程序实现的功能与OPenCV的 equalizeHist( src,dst )相同,但没有优化;

    【2】运行中发现,map的执行速度远远不如vector容器。

    【3】OpenCV中内置重新设置矩阵大小的函数 cv::resize

    #include "opencv.h"
    
    void equalize(cv::Mat& src, cv::Mat& dst)
    {
    
        if (src.empty()) { cout << "Do not load image ..." << endl; return; }
        cv::resize(src, dst, cv::Size(src.cols, src.rows));
        vector<int> s(256, 0);
    
        for (int i = 0; i < src.rows; i++)
        {
            const uchar* temp = src.ptr <uchar>(i);
            for (int j = 0; j < src.cols; j++)
                s[temp[j]]++;
        }
    
        int temp = 0;
        for (int i = 1; i < 256; i++)
            s[i] = s[i] + s[i - 1];
    
        for (int i = 0; i < 256; i++)
            s[i] = (int)(1.0 * 256 * s[i] / s[255]);
    
        for (int i = 0; i < src.rows; i++)
        {
            uchar* temp = dst.ptr <uchar>(i);
            for (int j = 0; j < src.cols; j++)
                temp[j] = s[temp[j]];
        }
    
    }
    
    
    //int main()
    //{
    //    string filename = "autum.jpg";
    //    cv::Mat src, dst;
    //    src = cv::imread(filename);
    //    cv::cvtColor(src, src, cv::COLOR_RGB2GRAY);
    //    equalize(src, dst);
    //
    //    cv::namedWindow("img", 0);
    //    cv::imshow("img", src);
    //    cv::namedWindow("equalize", 0);
    //    cv::imshow("equaliize", dst);
    //    cv::waitKey();
    //    return 0;
    //}
  • 相关阅读:
    关于C#静态构造函数的几点说明
    《JavaScript高级程序设计》读书笔记之一:几个与原始类型等价的引用类型的常用方法和属性
    Ajax 简介
    如何优化JavaScript脚本的性能
    摆脱混沌,建立个人能力体系——病症四起【from csdn】
    JMX理解与实例
    苹果电脑不为人所知的第三个创始人
    一些AS3中常用到的公式
    JavaScript 随笔
    解决IE6 JSONP无响应的问题。
  • 原文地址:https://www.cnblogs.com/2Bthebest1/p/11013705.html
Copyright © 2011-2022 走看看