传统CV算法——threshold阈值算法介绍
创作时间:
作者:
@小白创作中心
传统CV算法——threshold阈值算法介绍
引用
CSDN
1.
https://blog.csdn.net/weixin_42917352/article/details/118684586
在计算机视觉领域,阈值处理是图像分割的重要技术。OpenCV 提供了多种阈值处理方法,其中包括全局阈值(
cv.threshold)和自适应阈值(cv.adaptiveThreshold)。本文将详细介绍这两种方法的定义、数学原理、输入参数以及它们的区别。
阈值化函数
在计算机图像视觉中,我们常见的RGB图像包含过多的信息,可能存在一些噪声。因此,使用阈值算法可以降噪,使特征更加明显。一般使用灰度图,需要使用单通道的图片才可以进行阈值化,针对RGB或者HSV格式的图片,我们需要进行灰度化操作才可以进行阈值算法的使用。
import cv2 as cv
img = cv.imread("./images/1.jpg")
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY | cv.THRESH_OTSU)
cv.imshow("gray",gray)
cv.imshow("binary",binary)
cv.waitKey(0)
全局阈值(cv.threshold)
定义
全局阈值是将整个图像应用一个固定的阈值进行二值化处理。所有像素值大于该阈值的像素被设置为最大值(通常是255),而小于该阈值的像素被设置为0。
数学原理
给定一个图像 I,全局阈值处理可以表示为:
T = threshold(I(x, y), thresh, maxval, type)
其中:
- I(x, y) 是输入图像的像素值。
- thresh 是全局阈值。
- maxval 是要分配给大于阈值的像素的值(通常为255)。
- type 是阈值类型(如
cv.THRESH_BINARY或cv.THRESH_BINARY_INV)。
输入参数
src:输入图像(单通道)。thresh:阈值。maxval:最大值。type:阈值类型。
自适应阈值(cv.adaptiveThreshold)
定义
自适应阈值是根据图像的局部特征动态计算阈值。它在图像的每个小区域内计算阈值,从而更好地处理光照不均匀的情况。
数学原理
自适应阈值处理可以表示为:
T(x, y) = mean(I(x', y')) - C
其中:
- T(x, y) 是位置 (x, y) 的自适应阈值。
- mean(I(x', y')) 是在邻域 N 内的像素值的平均值。
- C 是一个常数,用于调整阈值。
自适应阈值的公式可以表示为:
dst(x, y) =
[
\begin{cases}
maxval, & \text{if}I(x,y)>T(x,y) \
0, & \text{otherwise}
\end{cases}
]
输入参数
src:输入图像(单通道)。maxValue:最大值(通常为255)。adaptiveMethod:自适应方法(如cv.ADAPTIVE_THRESH_MEAN_C或cv.ADAPTIVE_THRESH_GAUSSIAN_C)。thresholdType:阈值类型(如cv.THRESH_BINARY或cv.THRESH_BINARY_INV)。blockSize:邻域大小(必须是奇数)。C:从计算的阈值中减去的常数。
区别
- 阈值计算:
- 全局阈值:使用一个固定的阈值处理整个图像。
- 自适应阈值:根据局部区域的特征动态计算阈值。
- 适用场景:
- 全局阈值:适用于光照均匀的图像。
- 自适应阈值:适用于光照不均匀或具有复杂背景的图像。
- 处理效果:
- 全局阈值:可能会导致某些区域的细节丢失。
- 自适应阈值:能够保留更多的细节,适应不同的光照条件。
总结
cv.threshold是全局阈值处理,适用于光照均匀的图像。cv.adaptiveThreshold是自适应阈值处理,适用于光照不均匀的图像。- 两者的选择取决于具体的应用场景和图像特征。
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread("./images/2.jpg",cv.IMREAD_GRAYSCALE)
img = cv.GaussianBlur(img,(5,5),sigmaX=0)
ret,th1 = cv.threshold(img,127,255,cv.THRESH_BINARY)
# blockSize为邻域块的大小、C为偏移值
th2 = cv.adaptiveThreshold(img,255,cv.ADAPTIVE_THRESH_MEAN_C,cv.THRESH_BINARY,blockSize=9,C=2)
th3 = cv.adaptiveThreshold(img,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY,blockSize=9,C=2)
titles = ["Original Image",
"Global Thresholding(V=127)",
"Adaptive Mean Thresholding",
"Adaptive Gaussian Thresholding"]
images = [img,th1,th2,th3]
for i in range(4):
plt.subplot(2,2,i+1)
plt.imshow(images[i],"gray")
plt.title(titles[i])
plt.xticks([])
plt.yticks([])
plt.show()
热门推荐
构筑未来,智慧城市数字孪生技术
脑机接口!探秘脑科学的无限可能
【2024 WRC】实探2024世界机器人大会|脑机接口提速 人机合一前景可期?
山东神童苏刘溢:2天念完小学,10岁参加高考,读了1年大学嫌太简单溜回家
羁绊的深层含义与现代诠释
警惕!孕妇食用隔夜冰淇淋感染李斯特菌,这些人群需特别注意
达尔优EM915 KBS版牧马人5代鼠标驱动设置方法详解
中国仅用短短十余天,就解决大麻烦,百万桶石油终于驶向中国
如何投诉三无产品商家获得赔偿
贷款年利率怎么算公式excel
“忍”是一种智慧的展现

更加安全地使用智能设备
红麴功效与红麴禁忌:三高患者保健时一定要留意这些
8年未换变速箱油?汽车保养中的重要一课
全国首个!广东发布无人船测试管理省级地方标准
面试谈薪资遇到压价怎么办
先开花后长叶的树种有哪些
如何识破与应对PUA:建立健康的情感边界
东北特产全攻略:10种地道美食,送礼自用两相宜
哈尔滨红肠应该怎么买?秋林里道斯、哈肉联、商委三驾马车
企业商务接待座次礼仪全攻略:用餐、乘车、会议、合影四大场景详解
八大菩萨的带见排序及解读
世上没有最好的食用油,只有最合理的搭配方法
吕蒙白衣渡江:智谋之举还是背信弃义?
交通动脉再升级!G4京港澳高速羊楼司至岳阳龙湾段扩容工程即将进入扩建阶段
《春琴抄》:谷崎润一郎对女性的极端崇拜,爱在 “献祭“中升华
八字中的贵人星:六种预示好运的星象特征
如何分析双向汇率的变化情况?这种汇率变化对经济有哪些影响?
是R星傲慢还是太会赚?PC玩家没有《GTA6》首发
各项社会保险费是怎么算的