【EMGUCV】图像的直方图均衡化增强

来源:互联网 发布:水果软件12 编辑:程序博客网 时间:2024/06/05 18:36

原理比较简单:
对某个通道的图像或者灰度图进行图像增强,图像增强的方式可以多种,这里是采取的是直方图均衡化,然后在进行二值化,腐蚀或者膨胀得到最终的二值化图像。

void imgEnhance(Image<Bgr,byte> img,int channel,ref Image<Gray,byte> imgOut){  Image<Gray,byte> imgGray = new Image<Gray,byte>(img.Width,img.Height);  switch(channel){      case 0: // b          CvInvoke.cvSplit(img,imgGray,IntPtr.Zero,IntPtr.Zero,IntPtr.Zero);          break;      case 1:// g          CvInvoke.cvSplit(img, IntPtr.Zero, imgGray, IntPtr.Zero, IntPtr.Zero);          break;      case 2:// r          CvInvoke.cvSplit(img, IntPtr.Zero, IntPtr.Zero, imgGray, IntPtr.Zero);          break;case 3:                         CvInvoke.cvCvtColor(img,imgGray,COLOR_CONVERSION.CV_BGR2GRAY);          break;  }  Image<Gray, byte> imgEqHist = new Image<Gray, byte>(img.Width, img.Height);  CvInvoke.cvEqualizeHist(imgGray, imgEqHist);  CvInvoke.cvThreshold(imgEqHist,imgEqHist,100,255,THRESH.CV_THRESH_BINARY);  CvInvoke.cvDilate(imgEqHist,imgOut,new StructuringElementEx(3, 3, 1, 1, Emgu.CV.CvEnum.CV_ELEMENT_SHAPE.CV_SHAPE_CROSS),1);  imgGray.Dispose();  imgEqHist.Dispose();}
原创粉丝点击