腾讯建设网站视频视频视频,中国建筑信息平台,wordpress cdn配置,网站保定网站建设多少钱欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列#xff0c;持续更新中 【youcans 的 OpenCV 例程200篇】158. 阈值处理之固定阈值法 3.1 阈值处理基础
阈值就是临界值。图像阈值处理简单、直观#xff… 欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列持续更新中 【youcans 的 OpenCV 例程200篇】158. 阈值处理之固定阈值法 3.1 阈值处理基础
阈值就是临界值。图像阈值处理简单、直观计算速度快是图像处理的基础操作在图像分割中处于核心地位。
根据灰度值和灰度值的限制将图像划分为多个区域或提取图像中的目标物体是最基本的阈值处理方法。
例如图像由暗色背景上的亮目标组成目标像素和背景像素的灰度值组合构成两种主要模式可以通过设定适当的阈值 T将图像的像素划分为两类灰度值大于 T 的像素集是目标小于 T 的像素集是背景。
如果图像的直方图存在明显边界容易找到图像的分割阈值但如果图像直方图分界不明显则很难找到合适的阈值甚至可能无法找到固定的阈值有效地分割图像。
当 T 是应用于整幅图像的常数称为全局阈值处理当 T 对于整幅图像发生变化时称为可变阈值处理。有时对应于图像中任一点的 T 值取决于该点的邻域的限制称为局部阈值处理。
当图像中存在高斯噪声时通常难以通过全局阈值将图像的边界完全分开。如果图像的边界是在局部对比下出现的不同位置的阈值也不同使用全局阈值的效果将会很差。
OpenCV 提供了函数 cv.threshold 可以对图像进行阈值处理。
函数说明
cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dst函数 threshold() 可以将灰度图像转换为二值图像图像完全由像素 0 和 255 构成呈现出只有黑白两色的视觉效果。
灰度阈值化通过选取的灰度阈值 thresh将每个像素的灰度值与阈值进行比较将灰度大于阈值的像素点置为最大灰度小于阈值的像素点置为最小灰度得到二值图像可以突出图像轮廓把目标从背景中分割出来。
参数说明
scr变换操作的输入图像nparray 二维数组必须是单通道灰度图像thresh阈值取值范围 0~255maxval填充色取值范围 0255一般取 255type变换类型 cv2.THRESH_BINARY大于阈值时置 255否则置 0cv2.THRESH_BINARY_INV大于阈值时置 0否则置 255cv2.THRESH_TRUNC大于阈值时置为阈值 thresh否则不变保持原色cv2.THRESH_TOZERO大于阈值时不变保持原色否则置 0cv2.THRESH_TOZERO_INV大于阈值时置 0否则不变保持原色cv2.THRESH_OTSU使用 OTSU 算法选择阈值 返回值 retval返回二值化的阈值返回值 dst返回阈值变换的输出图像
注意 函数 cv2.threshold 进行固定阈值的二值化处理函数 cv2.adaptiveThreshold 为自适应阈值的二值化处理函数可以通过比较像素点与周围像素点的关系动态调整阈值。 确切地说只有 type 为 cv2.THRESH_BINARY 或 cv2.THRESH_BINARY_INV 时输出为二值图像其它变换类型时进行阈值处理但并不是二值处理。 例程 11.15图像阈值处理之固定阈值法 # 11.15 图像阈值处理之固定阈值法# 生成灰度图像hImg, wImg 512, 512img np.zeros((hImg, wImg), np.uint8) # # 创建黑色图像 RGB0cv2.rectangle(img, (60,60), (450,320), (127,127,127), -1) # -1 表示矩形填充cv2.circle(img, (256, 256), 120, (205,205,205), -1) # -1 表示圆形填充# 添加高斯噪声mu, sigma 0.0, 25.0noiseGause np.random.normal(mu, sigma, img.shape)imgNoise img noiseGauseimgNoise np.uint8(cv2.normalize(imgNoise, None, 0, 255, cv2.NORM_MINMAX)) # 归一化为 [0,255]# 阈值处理ret, imgBin1 cv2.threshold(img, 63, 255, cv2.THRESH_BINARY) # 阈值分割, thresh63ret, imgBin2 cv2.threshold(img, 125, 255, cv2.THRESH_BINARY) # 阈值分割, thresh125ret, imgBin3 cv2.threshold(img, 175, 255, cv2.THRESH_BINARY) # 阈值分割, thresh175plt.figure(figsize(10, 7))plt.subplot(231), plt.axis(off), plt.title(original), plt.imshow(img, gray)plt.subplot(232), plt.axis(off), plt.title(original with noise), plt.imshow(imgNoise, gray)plt.subplot(233, yticks[]), plt.title(Gray Hist) # 直方图histNP, bins np.histogram(imgNoise.flatten(), bins255, range[0, 255], densityTrue)plt.bar(bins[:-1], histNP[:])plt.subplot(234), plt.title(threshold63), plt.axis(off), plt.imshow(imgBin1,gray)plt.subplot(235), plt.title(threshold125), plt.axis(off), plt.imshow(imgBin2,gray)plt.subplot(236), plt.title(threshold175), plt.axis(off), plt.imshow(imgBin3,gray)plt.tight_layout()plt.show()本节完 版权声明
youcansxupt 原创作品转载必须标注原文链接(https://blog.csdn.net/youcans/article/details/124181317)
Copyright 2022 youcans, XUPT Crated2022-4-15 欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列持续更新中 【youcans 的 OpenCV 例程200篇】158. 阈值处理之固定阈值法 【youcans 的 OpenCV 例程200篇】159. 图像分割之全局阈值处理 【youcans 的 OpenCV 例程200篇】160. 图像处理之OTSU 方法 【youcans 的 OpenCV 例程200篇】161. OTSU 阈值处理算法的实现 【youcans 的 OpenCV 例程200篇】162. 全局阈值处理改进方法 【youcans 的 OpenCV 例程200篇】163. 基于边缘信息改进全局阈值处理 【youcans 的 OpenCV 例程200篇】164.使用 Laplace 边缘信息改进全局阈值处理 【youcans 的 OpenCV 例程200篇】165.多阈值 OTSU 处理方法 【youcans 的 OpenCV 例程200篇】166.自适应阈值处理 【youcans 的 OpenCV 例程200篇】167.基于移动平均的可变阈值处理 更多内容请见 【OpenCV 例程200篇 总目录-202206更新】