| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> OpenCV计算机视觉(四) —— 图像的阈值处理与自适应阈值Otsu -> 正文阅读 |
|
[人工智能]OpenCV计算机视觉(四) —— 图像的阈值处理与自适应阈值Otsu |
目录 1、图像阈值处理函数threshold()介绍进行阈值处理主要使用OpenCV库中的cv.threshold()函数 cv.threshold(src,thresh,maxval,type,dst=None) src:输入的图片 thresh:阈值 maxval:最大阈值,只对THRESH_BINARY和THRESH_BINARY_INV有用 type:主要有以下几种类型: ?对应的类型解释如下:(图片来自OpenCV threshold函数详解_Leenux0810的博客-CSDN博客_opencv threshold) ?2、常见的5大阈值处理方法五大阈值处理方法主要是二值化阈值处理(cv.THRESH_BINARY)、反二值化处理(cv.THRESH_BINARY_INV)、截断阈值化处理(cv.THRESH_TRUNC)、超阈值化零处理(cv.THRESH_TOZERO_INV)、低阈值零处理(cv.THRESH_TOZERO)。五大阈值处理方法,都是通过每个点的像素值与阈值进行比较,然后赋予一个固定的像素值,实现图像的分割,具体意义见上表。废话不多说,先看代码:
运行结果如下: 二值化阈值处理是比较每个点的阈值,大于thresh的赋予maxval,小于thresh的赋予0;反二值化阈值处理,大于thresh的赋予0,小于thresh的赋予thresh;截断阈值化处理,大于thresh的赋予阈值,小于thresh的保持原像素值;超阈值化零处理,大于thresh的赋予0,小于thresh的保持原像素值;低阈值化零处理,大于thresh的保持原像素值,小于thresh的赋予0。图像效果比较明显,各个操作的具体作用大家可以自己去了解一下。 那么问题来了,我们的阈值处理处理的是灰度图,那么能处理彩色图吗?处理的效果是什么呢?只需要将上面的图片灰度化注释掉即可,运行结果如下: 大家可以看出来,这好像和阈值处理的目的和特点不相符合。我查找了一些资料也不太明白为什么是这样。但是我有一些自己的想法,我认为,图片的阈值化处理,是和单个数据比较大小,那么就应该在一维的单通道图片进行比较;而彩色图是三通道,可能是在某一个通道处理,或者是多个通道处理。具体的阈值比较方法不清楚,所以和阈值处理所介绍的效果和目的大相径庭?。大家有什么想法可以在评论区进行讨论哦! 3、自适应阈值与Otsu处理自适应阈值处理
具体的操作需要使用cv.adaptiveThreshold()函数进行自适应阈值处理,具体参数介绍如下: cv.adaptiveThreshold(src,maxValue,adaptiveMethod,thresholdType,blockSize,C,dst=None) src:输入的图像 maxValue:最大值 adaptiveMethod:自适应的方法有两种,一种是cv.ADAPTIVE_THRESH_MEAN_C,领域内的像素值的权值一样;另一种是cv.ADAPTIVE_THRESH_GAUSSIAN_C,领域内的像素值的权值不同,与到中心的距离有关系,呈现高斯分布,通过高斯方程得到各个点的权重。 thresholdType:代表阈值处理的方法,该值必须是cv.THRESH_BINARY或者cv.THRESH_BINARY_INV中的一个 blockSize:块的大小,计算阈值使用的尺寸,3,5,7等 C:常量对每个blockSize所指定的领域的加权平均值减去常量C 具体代码如下:
运行结果如下图: 可以看的出来自适应阈值分割相对于二值化阈值分割来说,能分割出更多的细节和特征?。在图像中设置多个阈值,能更好的对图像的各个区域的像素值进行处理,分割效果更好。 Otsu处理当我们在对图像进行cv.threshold()阈值处理时,这个阈值往往是自己随机设置的,并不能很好的对图像进行分割。阈值的选取在阈值处理、图像分割中至关重要。Otsu处理可以再遍历所有的像素值找到最好的类间分割阈值,然后进行cv.threshold操作。具体代码如下:
运行结果如下: ? 可以看得到Otsu处理得到的阈值是145,且分割效果要比普通的二值化处理要好,图片更加清晰,特征更加分明。 总结:本文讲述了图像阈值处理的五种基本方法,同时介绍了自适应阈值方法,针对基本图像阈值处理采用Otsu获取迭代出最佳类间分割阈值,得到最好的阈值处理效果,使得图像分割出的特征更加明显有效。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 2:26:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |