日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EqualizeHist函数

發(fā)布時間:2025/4/16 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EqualizeHist函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、EqualizeHist函數(shù)

函數(shù)作用:

直方圖均衡化,,用于提高圖像的質(zhì)量

2、EqualizeHist函數(shù)調(diào)用形式

C++:?void?equalizeHist(InputArray?src, OutputArray?dst)


opencv代碼:

<span style="font-family:sans-serif;">#include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> #include <stdio.h>using namespace cv; using namespace std; int main() {Mat src = imread("D:6.jpg", 1);cvtColor(src, src, CV_BGR2GRAY);Mat dst;equalizeHist(src, dst);imshow("shiyan", dst);waitKey(0);return 0; }</span>

參考別人的:

直方圖均衡化

目標(biāo)

在這個教程中你將學(xué)到:

  • 什么是圖像的直方圖和為什么圖像的直方圖很有用
  • 用OpenCV函數(shù)?equalizeHist?對圖像進行直方圖均衡化

原理

圖像的直方圖是什么?

  • 直方圖是圖像中像素強度分布的圖形表達方式.
  • 它統(tǒng)計了每一個強度值所具有的像素個數(shù).

直方圖均衡化是什么?

  • 直方圖均衡化是通過拉伸像素強度分布范圍來增強圖像對比度的一種方法.
  • 說得更清楚一些, 以上面的直方圖為例, 你可以看到像素主要集中在中間的一些強度值上. 直方圖均衡化要做的就是?拉伸?這個范圍. 見下面左圖: 綠圈圈出了?少有像素分布其上的?強度值. 對其應(yīng)用均衡化后, 得到了中間圖所示的直方圖. 均衡化的圖像見下面右圖.

直方圖均衡化是怎樣做到的?

  • 均衡化指的是把一個分布 (給定的直方圖)?映射?到另一個分布 (一個更寬更統(tǒng)一的強度值分布), 所以強度值分布會在整個范圍內(nèi)展開.

  • 要想實現(xiàn)均衡化的效果, 映射函數(shù)應(yīng)該是一個?累積分布函數(shù) (cdf)?(更多細(xì)節(jié), 參考*學(xué)習(xí)OpenCV*). 對于直方圖?, 它的?累積分布?是:

    要使用其作為映射函數(shù), 我們必須對最大值為255 (或者用圖像的最大強度值) 的累積分布??進行歸一化. 同上例, 累積分布函數(shù)為:

  • 最后, 我們使用一個簡單的映射過程來獲得均衡化后像素的強度值:

例程

  • 咋個例程是用來干嘛的?

    • 加載源圖像
    • 把源圖像轉(zhuǎn)為灰度圖
    • 使用OpenCV函數(shù)?EqualizeHist?對直方圖均衡化
    • 在窗體中顯示源圖像和均衡化后圖像.
  • 下載例程: 點擊?這里

  • 例程一瞥:

#include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> #include <stdio.h>using namespace cv; using namespace std;/** @function main */ int main( int argc, char** argv ) {Mat src, dst;char* source_window = "Source image";char* equalized_window = "Equalized Image";/// 加載源圖像src = imread( argv[1], 1 );if( !src.data ){ cout<<"Usage: ./Histogram_Demo <path_to_image>"<<endl;return -1;}/// 轉(zhuǎn)為灰度圖cvtColor( src, src, CV_BGR2GRAY );/// 應(yīng)用直方圖均衡化equalizeHist( src, dst );/// 顯示結(jié)果namedWindow( source_window, CV_WINDOW_AUTOSIZE );namedWindow( equalized_window, CV_WINDOW_AUTOSIZE );imshow( source_window, src );imshow( equalized_window, dst );/// 等待用戶按鍵退出程序waitKey(0);return 0; }

說明

  • 聲明原圖和目標(biāo)圖以及窗體名稱:

    Mat src, dst;char* source_window = "Source image"; char* equalized_window = "Equalized Image";
  • 加載源圖像:

    src = imread( argv[1], 1 );if( !src.data ){ cout<<"Usage: ./Histogram_Demo <path_to_image>"<<endl;return -1;}
  • 轉(zhuǎn)為灰度圖:

    cvtColor( src, src, CV_BGR2GRAY );
  • 利用函數(shù)?equalizeHist?對上面灰度圖做直方圖均衡化:

    equalizeHist( src, dst );

    可以看到, 這個操作的參數(shù)只有源圖像和目標(biāo) (均衡化后) 圖像.

  • 顯示這兩個圖像 (源圖像和均衡化后圖像) :

    namedWindow( source_window, CV_WINDOW_AUTOSIZE ); namedWindow( equalized_window, CV_WINDOW_AUTOSIZE );imshow( source_window, src ); imshow( equalized_window, dst );
  • 等待用戶案件退出程序

    waitKey(0); return 0;
  • 結(jié)果

  • 為了更好地觀察直方圖均衡化的效果, 我們使用一張對比度不強的圖片作為源圖像輸入, 如下圖:

    它的直方圖為:

    注意到像素大多集中在直方圖中間的強度上.

  • 使用例程進行均衡化后, 我們得到下面的結(jié)果:

    這幅圖片顯然對比度更強. 再驗證一下均衡化后圖片的直方圖:

    注意到現(xiàn)在像素在整個強度范圍內(nèi)均衡分布.

  • 總結(jié)

    以上是生活随笔為你收集整理的EqualizeHist函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。