自适应阈值化的函数.doc_第1页
自适应阈值化的函数.doc_第2页
自适应阈值化的函数.doc_第3页
自适应阈值化的函数.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自适应阈值化的函数为:AdaptiveThreshold自适应阈值方法void cvAdaptiveThreshold( const CvArr* src, CvArr* dst, double max_value, int adaptive_method=CV_ADAPTIVE_THRESH_MEAN_C, int threshold_type=CV_THRESH_BINARY, int block_size=3, double param1=5 );src输入图像.dst输出图像.max_value使用 CV_THRESH_BINARY 和 CV_THRESH_BINARY_INV 的最大值.adaptive_method自适应阈值算法使用:CV_ADAPTIVE_THRESH_MEAN_C 或 CV_ADAPTIVE_THRESH_GAUSSIAN_C (见讨论).threshold_type取阈值类型:必须是下者之一 CV_THRESH_BINARY, CV_THRESH_BINARY_INVblock_size用来计算阈值的象素邻域大小: 3, 5, 7, .param1与方法有关的参数。对方法 CV_ADAPTIVE_THRESH_MEAN_C 和 CV_ADAPTIVE_THRESH_GAUSSIAN_C, 它是一个从均值或加权均值提取的常数(见讨论), 尽管它可以是负数。函数 cvAdaptiveThreshold 将灰度图像变换到二值图像,采用下面公式:threshold_type=CV_THRESH_BINARY:dst(x,y) = max_value, if src(x,y)T(x,y) 0, otherwisethreshold_type=CV_THRESH_BINARY_INV:dst(x,y) = 0, if src(x,y)T(x,y) max_value, otherwise其中 TI 是为每一个象素点单独计算的阈值对方法 CV_ADAPTIVE_THRESH_MEAN_C,先求出块中的均值,再减掉param1。对方法 CV_ADAPTIVE_THRESH_GAUSSIAN_C ,先求出块中的加权和(gaussian), 再减掉param1。关于二值化函数cvAdaptiveThreshold和cvThreshold的一些发现2013年01月30日 综合 共 1221字 字号 小 中 大 评论关闭1、函数cvAdaptiveThreshold的确可以将灰度图像二值化,但它的主要功能应该是边缘提取,并且参数param1主要是用来控制边缘的类型和粗细的,这些在软件自带的参考手册中均未提及。cvAdaptiveThreshold( const CvArr* src, CvArr* dst, double max_value, int adaptive_method CV_DEFAULT(CV_ADAPTIVE_THRESH_MEAN_C), int threshold_type CV_DEFAULT(CV_THRESH_BINARY), int block_size CV_DEFAULT(3), double param1 CV_DEFAULT(5);分析参数blockSize。这个参数相当重要,1.要取奇数,如果取偶数运行后就会报错!原因看源码,发现要做一个掩模,所以参数必须是奇数。OpenCV也做了一个检测,在函数adaptiveThreshold一开始就有CV_Assert(blockSize % 2 = 1 & blockSize 1 )。2.cvAdaptiveThreshold既可以做边缘提取,也可以实现二值化,是由你所选择的邻域所确定的,如果你所选择的邻域非常小(比如33),那么很显然阈值的“自适应程度”就非常高,这在结果图像中就表现为边缘检测的效果。如果邻域选择的比较大(比如3131),那么阈值的“自适应程度”就比较低,这在结果图像中就表现为二值化的效果。3.一般情况下,滤波器宽度应该大于被识别物体的宽度。block_size太小,无法代表背景,太大的话会影响到临近物体。选定合适的block_size后,我们就可以选定一个更大的阈值param1,更好的抑制噪声 1)自适应二值化计算像素的邻域的平均灰度,来决定二值化的值。2)如果整个区域几乎是一样灰度的,则无法给出合适的结果了。3)之所以看起来像边缘检测,是因为窗尺寸设置的小,可以改大一点试一试。cvAdaptiveThreshold( src, dst, 255, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY, 21); /窗设置为214)自适应阈值化中的阈值完全是由你所选择的邻域所确定的,如果你所选择的邻域非常小(比如33),那么很显然阈值的“自适应程度”就非常高,这在结果图像中就表现为边缘检测的效果。如果邻域选择的比较大(比如3131),那么阈值的“自适应程度”就比较低,这在结果图像中就表现为二值化的效果。 我目前在做细胞图像分割,在HSV色彩系统中对V通道用自适应阈值化,然后在叠加HS通道处理结果,取得了非常好的效果。没有万能的二值化方法,具体问题具体分析,自适应二值化对于光照不均的文字,条码等,效果很好。窗口大小选择,考虑被检测物体尺寸。函数名:cvAbsDiff功能: calculates absolute difference between two arrays.用法:void cvAbsDiff(const CvArr* src1, const CvArr* src2, CvArr* dst);说明:src1 The rst source array src2 The second source array dst The destination array dst(i)c = |src1(I)c src2(I)c | All the

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论