歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

OpenCV 圖像增強算法 圖像檢測結果

本代碼通過直方圖變換增強了圖像對比度,實現了單通道圖像增強。將圖像灰度阈值拉伸到0-255,圖像檢測結果見底部

Keywords: 圖像增強 增強對比度 直方圖變換

int ImageStretchByHistogram(IplImage *src1,IplImage *dst1)
/*************************************************
Function:      通過直方圖變換進行圖像增強,將圖像灰度的域值拉伸到0-255
src1:              單通道灰度圖像                 
dst1:              同樣大小的單通道灰度圖像
*************************************************/
{
 assert(src1->width==dst1->width);
 double p[256],p1[256],num[256];
 
 memset(p,0,sizeof(p));
 memset(p1,0,sizeof(p1));
 memset(num,0,sizeof(num));
 int height=src1->height;
 int width=src1->width;
 long wMulh = height * width;
 
 //statistics
 for(int x=0;x<src1->width;x++)
 {
  for(int y=0;y<src1-> height;y++){
   uchar v=((uchar*)(src1->imageData + src1->widthStep*y))[x];
    num[v]++;
  }
 }
 //calculate probability
 for(int i=0;i<256;i++)
 {
  p[i]=num[i]/wMulh;
 }

 //p1[i]=sum(p[j]); j<=i;
 for(int i=0;i<256;i++)
 {
  for(int k=0;k<=i;k++)
   p1[i]+=p[k];
 }

 // histogram transformation
 for(int x=0;x<src1->width;x++)
 {
  for(int y=0;y<src1-> height;y++){
   uchar v=((uchar*)(src1->imageData + src1->widthStep*y))[x];
    ((uchar*)(dst1->imageData + dst1->widthStep*y))[x]= p1[v]*255+0.5;           
  }
 }
 return 0;
}

void CCVMFCView::OnImageAdjustContrast()
{
 if(workImg->nChannels>1)
  OnColorToGray();
 Invalidate();
 dst=cvCreateImage(cvGetSize(workImg),workImg->depth,workImg->nChannels);
 ImageStretchByHistogram(workImg,dst);
 m_dibFlag=imageReplace(dst,&workImg);
 Invalidate();
}

Experiment Result:

 

                                   原圖灰度化

                                     檢測結果1

                                灰度化並增強對比度


                                   檢測結果2

--------------------------------------分割線 --------------------------------------

Ubuntu Linux下安裝OpenCV2.4.1所需包 http://www.linuxidc.com/Linux/2012-08/68184.htm

Ubuntu 12.04 安裝 OpenCV2.4.2 http://www.linuxidc.com/Linux/2012-09/70158.htm

CentOS下OpenCV無法讀取視頻文件 http://www.linuxidc.com/Linux/2011-07/39295.htm

Ubuntu 12.04下安裝OpenCV 2.4.5總結 http://www.linuxidc.com/Linux/2013-06/86704.htm

Ubuntu 10.04中安裝OpenCv2.1九步曲 http://www.linuxidc.com/Linux/2010-09/28678.htm

基於QT和OpenCV的人臉識別系統 http://www.linuxidc.com/Linux/2011-11/47806.htm

[翻譯]Ubuntu 14.04, 13.10 下安裝 OpenCV 2.4.9  http://www.linuxidc.com/Linux/2014-12/110045.htm

--------------------------------------分割線 --------------------------------------

OpenCV的詳細介紹:請點這裡
OpenCV的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved