emgucv自适应二值化

emgucv自适应二值化一 理论概述 转载自 OpenCV 基于局部自适应阈值的图像二值化 nbsp nbsp 局部自适应阈值则是根据像素的邻域块的像素值分布来确定该像素位置上的二值化阈值 这样做的好处在于每个像素位置处的二值化阈值不是固定不变的 而是由其周围邻域像素的分布来决定的 亮度较高的图像区域的二值化阈值通常会较高 而亮度较低的图像区域的二值化阈值则会相适应地变小 不同亮度 对比度 纹理的局部图像区域将会拥有相对应

一、理论概述(转载自《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();




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231974.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jenkins自定义构建参数_git怎么切换分支

    jenkins自定义构建参数_git怎么切换分支前言当我们的自动化项目越来越多的时候,在代码仓库会提交不同的分支来管理,在用jenkins来构建的时候,我们希望能通过参数化构建git仓库的分支。下载安装GitParameter插件系统管理-

    2022年7月31日
    63
  • RESETful API 设计规范

    RESETful API 设计规范

    2021年6月18日
    86
  • Java 异常

    Java 异常

    2021年10月7日
    39
  • 遇到“word在试图打开文件时遇到错误”怎么办?

    遇到“word在试图打开文件时遇到错误”怎么办?1.打开文件遇到的错误提示“word在试图打开文件时遇到错误”2.关闭这个提示窗口,打开左上角的文件按钮。3.点击最下面的选项按钮,进入选项对话框,4.点击左侧的信任中心,然后选择右侧的信任中心设置。5.进入信任中心点击左侧的受保护试图选项卡,默认是三个选项都被选中。6.取消勾选第一个选项“为来自internet的文件启用受保护的试图”,点击确认后退出,然后重新打开文件,看看是不是有效果…

    2022年6月11日
    44
  • html嵌入python代码(python做人脸识别)

    最近闲来无事,研究研究在安卓上跑Python。想起以前玩过的kivy技术,kivy[1]是一个跨平台的UI框架。当然对我们最有用的是,kivy可以把python代码打包成安卓App。但是由于安卓打包的工具链很长,包括androidsdk打包java代码、ndk编译python、编译各种python依赖包,经常花一整天从入门到放弃。这次使出认真研究的心态,终于找到一个解决方案,于是有了这篇文章:…

    2022年4月16日
    137
  • php openssl生成证书,php中使用OpenSSL生成证书及加密解密[通俗易懂]

    php openssl生成证书,php中使用OpenSSL生成证书及加密解密[通俗易懂]摘要:这篇文章主要介绍了PHP中使用OpenSSL生成证书及加密解密,需要的朋友可以参考下依赖于OpenSSL扩展/*加密解密*/functionauthcode($string,$operation=’E’){$ssl_public=file_get_contents(DAT这篇文章主要介绍了PHP中使用OpenSSL生成证书及加密解密,需要的朋友可以参考下依赖于OpenSSL扩展…

    2026年1月25日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号