zoukankan      html  css  js  c++  java
  • opencvequalizeHist均衡化直方图增强对比度

     直方图均衡化是一种常见的增强图像对比度的方法,使用该方法可以增强局部图像的对比度,尤其在数据较为相似的图像中作用更加明显

    直方图是什么:

    • 直方图是图像中像素强度分布的图形表达方式.
    • 它统计了每一个强度值所具有的像素个数.

    直方图均衡化是什么:

    • 直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法.

    注意: 直方图均衡化只能处理单通道

    灰度单通道 

    1.png

      

    #include<opencv2/opencv.hpp>
    #include<iostream>
    
    int main(int argc, char** argv) {
    
        cv::Mat src = cv::imread("D:/bb/tu/1.png");
        imshow("src", src);
    
        cv::Mat gray, dst;
        cvtColor(src, gray, cv::COLOR_BGR2GRAY);
        equalizeHist(gray, dst);//直方图均衡化
        imshow("dst", dst);
    
        cv::waitKey(0);
        return 0;
    }

    彩色图方法一 

    对BGR三个通道分别处理,再合并 

    #include<opencv2/opencv.hpp>
    #include<iostream>
    
    int main(int argc, char** argv) {
    
        cv::Mat src = cv::imread("D:/bb/tu/1.png");
        imshow("src", src);
    
        std::vector<cv::Mat> chan;
        cv::split(src, chan);//通道分割
        cv::Mat blue, green, red,dst;
        blue = chan.at(0);
        green= chan.at(1);
        red= chan.at(2);
    
        //对BGR通道分别做直方图均衡化
        equalizeHist(blue, blue);
        equalizeHist(green, green);
        equalizeHist(red, red);
    
        merge(chan, dst);//合并通道
        imshow("dst", dst);
    
    
        cv::waitKey(0);
        return 0;
    }

    彩色图方法二 

    通过对HSV色彩空间的V通道进行直方图均衡化,再合并H,S,V三个通道后转化为BGR图像 

    V通道简单来说就是图像明暗通道

    HSV颜色模型:看  https://baike.baidu.com/item/HSV/547122?fr=aladdin

    #include<opencv2/opencv.hpp>
    #include<iostream>
    
    int main(int argc, char** argv) {
    
        cv::Mat src = cv::imread("D:/bb/tu/1.png");
        imshow("src", src);
    
        cv::Mat hsv,v,dst;
        cv::cvtColor(src,hsv, cv::COLOR_BGR2HSV);//转化为HSV图像
        std::vector<cv::Mat> chan;
        cv::split(hsv, chan);//通道分割
        equalizeHist(chan.at(2), chan.at(2));//对v通道直方图均衡化
        merge(chan, dst);//合并通道
        cv::cvtColor(dst, dst, cv::COLOR_HSV2BGR);//HSV转化为BGR图像
        imshow("dst", dst);    
    
    
        cv::waitKey(0);
        return 0;
    }

      

  • 相关阅读:
    NYOJ 260
    NYOJ 271
    [转载]《博客园精华集》Winform筛选结果(共105篇)
    在DataGridView控件中加入ComboBox下拉列表框的实现
    给SQL补充一个查看表结构的存储过程
    编写自定义控件之下拉式属性
    PropertyGrid中的枚举显示为中文(转)
    DataGridView 中合并单元格
    树TreeView控件与DataTable交互添加节点(最高效的方法)
    通过键盘方向键控制TreeView节点的移动
  • 原文地址:https://www.cnblogs.com/liming19680104/p/15713796.html
Copyright © 2011-2022 走看看