久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

【OpenCV入門指南】第十篇 彩色直方圖均衡化

 牛人的尾巴 2016-12-27

  上一篇《OpenCV第十篇灰度直方圖均衡化》介紹了灰度圖像的直方圖均衡化,實際生活中,,肯定還是彩色圖像用的最多,,因此本篇介紹對彩色圖像進行直方圖均衡化。這樣可以讓大家直方圖均衡化對圖像增強的效果有個直觀的印象,。

  OpenCV中,,彩色的圖像其實是用一個多通道數(shù)組來存儲的,每個單通道數(shù)組中的元素的取值范圍都是0255,。這與灰度圖中像素的變化范圍是相同的,。因此對彩色圖像進行直方圖均衡化只要先將彩色圖像分解成若干通道,然后這些通道分別進行直方圖均衡化,,最后合并所有通道即可,。下面介紹下二個主要函數(shù)cvSplit()cvMerge()

 

一.cvSplit

函數(shù)功能:分割多通道數(shù)組成幾個單通道數(shù)組或者從數(shù)組中提取一個通道,。

函數(shù)原型:

/* Splits a multi-channel array into the set of single-channel arrays or

   extracts particular [color] plane */

CVAPI(voidcvSplit(

  const CvArr* src,

  CvArr* dst0,

  CvArr* dst1,

  CvArr* dst2,

  CvArr* dst3

);

參數(shù)說明:

第一個參數(shù)表示輸入的多通道數(shù)組即輸入圖像,。

第二,三,,四,,五個參數(shù)分別表示輸出的單通道數(shù)組。

 

二.cvMerge

函數(shù)功能:分割多通道數(shù)組成幾個單通道數(shù)組或者從數(shù)組中提取一個通道,。

函數(shù)原型:

/* Merges a set of single-channel arrays into the single multi-channel array

   or inserts one particular [color] plane to the array */

CVAPI(voidcvMerge(

  const CvArr* src0,

  const CvArr* src1,

  const CvArr* src2,

  const CvArr* src3,

  CvArr* dst

);

參數(shù)說明:

第一,,二,三,,四個參數(shù)表示輸入的單通道數(shù)組,。

第五個參數(shù)分別表示合并后的多通道數(shù)組即輸出圖像,。

 

下面給出完整的代碼:

  1. //圖像增強- 彩色直方圖均衡化  
  2. //By MoreWindows (http://blog.csdn.net/MoreWindows)  
  3. #include <opencv2/opencv.hpp>  
  4. using namespace std;  
  5. #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")  
  6. //彩色圖像的直方圖均衡化  
  7. IplImage* EqualizeHistColorImage(IplImage *pImage)  
  8. {  
  9.     IplImage *pEquaImage = cvCreateImage(cvGetSize(pImage), pImage->depth, 3);  
  10.       
  11.     // 原圖像分成各通道后再均衡化,最后合并即彩色圖像的直方圖均衡化  
  12.     const int MAX_CHANNEL = 4;  
  13.     IplImage *pImageChannel[MAX_CHANNEL] = {NULL};  
  14.   
  15.     int i;  
  16.     for (i = 0; i < pImage->nChannels; i++)  
  17.         pImageChannel[i] = cvCreateImage(cvGetSize(pImage), pImage->depth, 1);  
  18.   
  19.     cvSplit(pImage, pImageChannel[0], pImageChannel[1], pImageChannel[2], pImageChannel[3]);  
  20.       
  21.     for (i = 0; i < pImage->nChannels; i++)  
  22.         cvEqualizeHist(pImageChannel[i], pImageChannel[i]);  
  23.   
  24.     cvMerge(pImageChannel[0], pImageChannel[1], pImageChannel[2], pImageChannel[3], pEquaImage);  
  25.   
  26.     for (i = 0; i < pImage->nChannels; i++)  
  27.         cvReleaseImage(&pImageChannel[i]);  
  28.   
  29.     return pEquaImage;  
  30. }  
  31. int main( int argc, char** argv )  
  32. {     
  33.     const char *pstrWindowsSrcTitle = "原圖(http://blog.csdn.net/MoreWindows)";  
  34.     const char *pstrWindowsHisEquaTitle = "直方圖均衡化后(http://blog.csdn.net/MoreWindows)";  
  35.   
  36.     // 從文件中加載原圖  
  37.     IplImage *pSrcImage = cvLoadImage("lena.jpg", CV_LOAD_IMAGE_UNCHANGED);  
  38.     IplImage *pHisEquaImage = EqualizeHistColorImage(pSrcImage);  
  39.        
  40.     cvNamedWindow(pstrWindowsSrcTitle, CV_WINDOW_AUTOSIZE);  
  41.     cvNamedWindow(pstrWindowsHisEquaTitle, CV_WINDOW_AUTOSIZE);  
  42.     cvShowImage(pstrWindowsSrcTitle, pSrcImage);  
  43.     cvShowImage(pstrWindowsHisEquaTitle, pHisEquaImage);  
  44.   
  45.   
  46.     cvWaitKey(0);  
  47.   
  48.     cvDestroyWindow(pstrWindowsSrcTitle);  
  49.     cvDestroyWindow(pstrWindowsHisEquaTitle);  
  50.     cvReleaseImage(&pSrcImage);  
  51.     cvReleaseImage(&pHisEquaImage);  
  52.     return 0;  
  53. }  

運行結(jié)果如下所示:

呵呵,,對比一下就知道直方圖均衡化對圖像增強的效果還不錯,圖像的對比度增加后,,睫毛,,頭發(fā)等細小物體都要清晰多了。


 

OpenCV入門指南】的直方圖系列三篇到此就結(jié)束了,,下面列出目錄,,方便大家查閱:

1. 《OpenCV入門指南】第八篇灰度直方圖

2. 《OpenCV入門指南】第九篇灰度直方圖均衡化

3. 《OpenCV入門指南】第十篇彩色直方圖均衡化

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多