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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

EqualizeHist函数

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

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)

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

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

原理

圖像的直方圖是什么?

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

直方圖均衡化是什么?

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

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

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

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

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

  • 最后, 我們使用一個(gè)簡(jiǎn)單的映射過(guò)程來(lái)獲得均衡化后像素的強(qiáng)度值:

例程

  • 咋個(gè)例程是用來(lái)干嘛的?

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

  • 例程一瞥:

#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; }

說(shuō)明

  • 聲明原圖和目標(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?對(duì)上面灰度圖做直方圖均衡化:

    equalizeHist( src, dst );

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

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

    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é)果

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

    它的直方圖為:

    注意到像素大多集中在直方圖中間的強(qiáng)度上.

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

    這幅圖片顯然對(duì)比度更強(qiáng). 再驗(yàn)證一下均衡化后圖片的直方圖:

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

  • 總結(jié)

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

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