基于直方图均衡化的图像增强,python opencv 直方图均衡化

  基于直方图均衡化的图像增强,python opencv 直方图均衡化

  梯度算子

  坡度由二维列向量定义

  向量的模

  在实践中通常称为梯度图像。

  考虑一下3x3的图像区域z表示灰度,上式的点z5处的f值可以用数字近似。

  微分滤波器模板系数设计罗伯茨交叉梯度算子

  维特梯度算子

  维特梯度算子

  罗伯茨交叉梯度算子

  坡度计算由两个模板组成,首先求出坡度的第一项,然后求出坡度的第二项,合计得到坡度。

  这两个模板称为罗伯茨相交梯度运算符

  维特梯度运算符——3x3的梯度模板

  索贝尔梯度算子——3x3的梯度模板

  代码实现:

  //*

  * @file Sobel_Demo.cpp

  * @ briefsamplecodeusessobelopropencfunctionsforedgedetection

  * @作者开放计算机视觉团队

  */

  #include opencv2/imgproc.hpp

  #include opencv2/imgcodecs.hpp

  #include opencv2/highgui.hpp

  #包括输入输出流

  使用命名空间cv;

  使用命名空间标准

  intmain(intargc,char** argv)))))))))。

  {

  cv:commandlineparserparser(argc,argv,

  { @ input ./data/Lena。jpg 输入图像}

  { ks izek1k大小(按" k "增加值)}

  { scales1scale(点击以增加值)}

  { deltad0delta(点击迪以增加值)}

  { help h false } ;

  cout thesampleusessobelorschraopenvfunctionsforedgedetection \ n \ n ;

  解析器。打印消息(;

   cout \n按 ESC 退出程序% 22 \ n按" r "重置值(ksizewillbe-1 equaltoscharfunction);

  Mat图像,src,src _ gray

  马特金;

  conststringwindow _ name= Sobel demo-simpleedgedetector ;

  intk size=解析器。getint(ksize);

  int scale=解析器。getint(标度);

  int Delta=解析器。getint( Delta );

  int ddepth=CV _ 16S

  字符串imagename=解析器。getstring( @ input);

  image=imread(imagename,IMREAD _ COLOR

  if(image.empty()))。

  printf (erroropeningimage : % s (n),imagename。c _ str);

  返回1;

  }

  for(;() )。

  Gussianblur(image,src,size ) 3,3),0,0,BORDER _ DEFAULT

  cvtcolor(src,src_gray,COLOR _ bgr 2 gray);

  Mat grad_x,grad _ y;

  Mat abs_grad_x,ABS _ grad _ y;

  //生成渐变X

  Sobel(src_gray,grad_x,ddepth,1,0,ksize,scale,delta,BORDER _ DEFAULT);

  //生成梯度y

  Sobel(src_gray,grad_y,ddepth,0,1,ksize,scale,delta,BORDER _ DEFAULT);

  convertscaleabs(grad_x,ABS _ grad _ x);

  convertscaleabs(grad_y,ABS _ grad _ y;

  //总梯度(近似值).

  ADDWeighted(ABS_grad_x,0.5,abs_grad_y,0.5,0,grad);

  imshow(window_name,grad);

  charkey=(char)wait key(0))0;

  if(key==27 ) {

  返回0;

  }

  if(key==kkey==k ()))))

  ksize=ksize 30?ksize 2:-1;

  }

  if(key==skey==s ()))))

  呼叫;

  }

  if(key==dkey==d ()))))

  三角洲;

  }

  if(key==rkey==r ())))))

  比例=1

  ksize=-1;

  增量=0;

  }

  }

  返回0;

  }

  结果:

  按r键后

  教材示例:

  原图、概图

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: