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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • acwing吧_acwing算法基础

    acwing吧_acwing算法基础小 A 和小 B 在玩一个游戏。首先,小 A 写了一个由 0 和 1 组成的序列 S,长度为 N。然后,小 B 向小 A 提出了 M 个问题。在每个问题中,小 B 指定两个数 l 和 r,小 A 回答 S[l∼r] 中有奇数个 1 还是偶数个 1。机智的小 B 发现小 A 有可能在撒谎。例如,小 A 曾经回答过 S[1∼3] 中有奇数个 1,S[4∼6] 中有偶数个 1,现在又回答 S[1∼6] 中有偶数个 1,显然这是自相矛盾的。请你帮助小 B 检查这 M 个答案,并指出在至少多少个回答之后可

    2022年8月10日
    8
  • pycharm怎么打包成exe文件_pycharm打包python程序

    pycharm怎么打包成exe文件_pycharm打包python程序如何将python中的文件打包成exe文件:首先,在cmd中输入pip3Installpyinstaller他就会开始下载pyinstaller下载成功后就点进去你想去打包的代码中,我使用的是pycharm,然后点击terminal,输入Pyinstaller-FXXXX.Py其中XXXX指的是你要打包的文件名,弄好之后你就成功将其打包成exe文件了,下载后里面会显示你的exe文件的路径,去找就好了,发送给别人的话我是压缩后发送的以下是pyinstaller功能的一些注..

    2022年8月28日
    25
  • 使用ffmeg的7个技巧[通俗易懂]

    使用ffmeg的7个技巧[通俗易懂]FFmpeg堪称音频和视频应用程序的瑞士军刀,提供了丰富的选项和灵活性.很多时候用户为了看视频和听音乐都安装了ffmeg.更多关于ffmeg的详细介绍:here,可以通过ffmpeg-formats查看FFmpeg支持的视音频格式,左侧若是E表明可以编码,D表明可以解码本文着重介绍命令行下ffmeg的7个技巧:1音频转换ffmpeg-imy_audio.wavm

    2022年9月24日
    3
  • js读取本地json_vue读取本地json文件

    js读取本地json_vue读取本地json文件data.json文件内容{&amp;amp;quot;code&amp;amp;quot;:0,&amp;amp;quot;msg&amp;amp;quot;:&amp;amp;quot;请求成功&amp;amp;quot;,&amp;amp;quot;data&amp;amp;quot;:[{&amp;amp;quot;name&amp;am

    2022年10月12日
    3
  • MySQL数据库应用与开发答案_MySQL数据库应用与开发习题解答与上机指导

    MySQL数据库应用与开发答案_MySQL数据库应用与开发习题解答与上机指导目录第 1 部分 MySQL 数据库应用与开发 习题参考答案第 1 章 MySQL 数据库概述 1 1 教学要求 1 1 1 基本要求 1 1 2 重点与难点 1 2 习题参考答案第 2 章 MySQL 语言基础 2 1 教学要求 2 1 1 基本要求 2 1 2 重点与难点 2 2 习题参考答案第 3 章 MySQL 数据库的基本操作 3 1 教学要求 3 1 1 基本要求 3 1 2 重点与难点 3 2 习题参考答案第 4 章表及数据完整性 4 1 教学要求 4 1 1 基本要求 4

    2025年6月26日
    3
  • Ubuntu卸载CUDA_ubuntu怎么卸载已经安装的软件

    Ubuntu卸载CUDA_ubuntu怎么卸载已经安装的软件1.暴力卸载sudoapt-getpurgenvidia*sudoapt-getautoremovesudoapt-getautoclean2.主动卸载sudo/usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl

    2025年9月18日
    6

发表回复

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

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