一、理论概述(转载自《OpenCV_基于局部自适应阈值的图像二值化》)

局部自适应阈值则是根据像素的邻域块的像素值分布来确定该像素位置上的二值化阈值。这样做的好处在于每个像素位置处的二值化阈值不是固定不变的,而是由其周围邻域像素的分布来决定的。亮度较高的图像区域的二值化阈值通常会较高,而亮度较低的图像区域的二值化阈值则会相适应地变小。不同亮度、对比度、纹理的局部图像区域将会拥有相对应的局部二值化阈值。常用的局部自适应阈值有:1)局部邻域块的均值;2)局部邻域块的高斯加权和。

二、程序实现

1、关键函数

关键函数 CvInvoke.cvAdaptiveThreshold Method

函数功能:

Transforms grayscale image to binary image. Threshold calculated individually for each pixel. For the method CV_ADAPTIVE_THRESH_MEAN_C it is a mean of blockSize x blockSize pixel neighborhood, subtracted by param1. For the method CV_ADAPTIVE_THRESH_GAUSSIAN_C it is a weighted sum (gaussian) of blockSize x blockSize pixel neighborhood, subtracted by param1.

函数原型:

public static void cvAdaptiveThreshold(

IntPtr src,

IntPtr dst,

double maxValue,

ADAPTIVE_THRESHOLD_TYPE adaptiveType,

THRESH thresholdType,

int blockSize,

double param1

)

第一个参数src表示输入图像,必须为单通道灰度图。

第二个参数dst表示输出的边缘图像,为单通道黑白图。

第三个参数maxValue表示采用CV_THRESH_BINARY 和CV_THRESH_BINARY_INV门限类型的最大值。

第四个参数adaptiveType表示局部二值化阈值的取值方法,自适应阈值算法使用:CV_ADAPTIVE_THRESH_MEAN_C 或 CV_ADAPTIVE_THRESH_GAUSSIAN_C,ADAPTIVE_THRESHOLD_TYPE枚举类型。

第五个参数thresholdType表示取阈值类型:必须是下者之一

  • CV_THRESH_BINARY,
  • CV_THRESH_BINARY_INV

第六个参数block_size代表用来计算阈值的象素邻域大小,例如:3,5,7…

第七个参数表示均值或高斯加权平均值所需要减去的一个常数,类似一个人工干预的阈值调整。

对方法 CV_ADAPTIVE_THRESH_MEAN_C,先求出块中的均值,再减掉param1。

对方法 CV_ADAPTIVE_THRESH_GAUSSIAN_C ,先求出块中的加权和(gaussian), 再减掉param1。

//局部二值化
Image<Gray, Byte> adaptivethreshimg = new Image<Gray, Byte>(graymi.width, graymi.height);
CvInvoke.cvAdaptiveThreshold(grayimg, adaptivethreshimg, 255, Emgu.CV.CvEnum.ADAPTIVE_THRESHOLD_TYPE.CV_ADAPTIVE_THRESH_MEAN_C, Emgu.CV.CvEnum.THRESH.CV_THRESH_BINARY, 25, 5);
pictureBox4.Image = adaptivethreshimg.ToBitmap();

emgucv自适应二值化相关推荐

  1. 利用python opencv实现图像自适应二值化

    对灰度图像利用阈值得到一个二值化的图像,是常最常用的图像处理技术之一.例如,灰度大于127的图像设置为1.小于127的设置为0,这种处理便是固定阈值127的二值化处理. 自适应的二值化处理不同于固定阈 ...

  2. input自适应_【正点原子FPGA连载】第十一章基于OV5640的自适应二值化实验-领航者ZYNQ之HLS 开发指南...

    1)摘自[正点原子]领航者ZYNQ之HLS 开发指南 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手 ...

  3. vc++数字图像处理 自适应二值化程序

    这段时间做图像处理,这是用迭代法求阈值的,自适应二值化代码,贴出来希望对大家有帮助 void GrayTrans::Binary() { long i,j; unsigned char pixel; ...

  4. opencv自适应二值化原理

    opencv自适应二值化原理 先对图像做模糊处理(一般是均值或者高斯模糊).(这里可以加上自己的操作,做一些其他类型的模糊以及一些形态学的操作). 用原图与模糊处理之后的图像做差得到一幅图像. 判断图 ...

  5. OpenCV二值化cvThreshold和自适应二值化cvAdaptiveThreshold及Otsu

    阈值化函数: double cvThreshold(constCvArr* src, CvArr* dst, double threshold, double max_value,int thresh ...

  6. OpenCV自适应二值化

    关于直方图的理解:http://blog.csdn.net/sheldonwxp/article/details/7693541 //全局自适应方法 double threshold( InputAr ...

  7. C++实现自适应二值化

    二值化每次都要调阈值,很头疼,实现一个不依赖OpenCV库的动态二值化算法很有必要. 测试了 参考文献 论文链接 更详细的算法解释 效果如下: 达到了预期的效果. 主要实现代码记录一下. void M ...

  8. K210 / Openmv实现 大津法/Otsu最大类间方差法 自适应二值化

    目录 源码 效果 平台:K210 固件版本:maixpy_v0.6.2_54_g897214100_openmv_kmodel_v4_with_ide_support.bin OpenMv库自带Ots ...

  9. 【OpenCV 4开发详解】图像二值化

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...

最新文章

  1. 五大分布式事务,你了解多少?
  2. Django的quarySet
  3. 这 30 个常用的 Maven 命令你必须熟悉!
  4. ◆[转]瓶子生日密码之2月2日
  5. PostBox使用小记
  6. 开源 物联网接入_我们刚刚推出了开源产品。 那么接下来会发生什么呢?
  7. OrderOnline——设计概述
  8. node-gulp插件
  9. 数据平台-第一章-数据质量提升
  10. 拓端tecdat|R语言多元时间序列滚动预测:ARIMA、回归、ARIMAX模型分析
  11. 数学中有关c语言的知识点总结,七年级数学基本函数的基本知识点归纳
  12. php怎么做群聊,workerman实现群聊
  13. 基于微信评选投票小程序系统设计与实现 开题报告
  14. 关于Oracle 级联操作
  15. Keil MDK中的Code, RO-data , RW-data, ZI-data分别代表什么意思?(转)
  16. 一种简单而有趣的数据结构——并查集
  17. 一种打印机控制电路及打印机的制作方法
  18. Html5的废弃与新增全局属性及元素
  19. 矩阵旋转(转置,顺时针,逆时针)
  20. 1.21嵌入式帅国豪

热门文章

  1. Java 8 辣么大(lambda)表达式不慌之-----(二)Predicate
  2. 模仿知乎——实现一个多用户在线问答平台
  3. python的repr函数
  4. 网络系统集成的主要工作内容
  5. 金蝶服务器 运行错误 372,Win7运行用友T6软件提示错误372的原因及解决方法
  6. 【005】舒曼的《梦幻曲》
  7. iOS 5增加了200多个新功能
  8. Unity2D学习———角色移动两种方式+小怪追随+Unity演示+C#代码
  9. 30天自制操作系统Day 2
  10. 数据库建模工具powerdesigner15.2破解文件 百度云