基于梵·高《向日葵》的 图像阈值处理专题(二值处理、反二值处理、截断处理、自适应处理及Otsu方法)【Python-Open_CV系列(六)】(上))

简介: 基于梵·高《向日葵》的 图像阈值处理专题(二值处理、反二值处理、截断处理、自适应处理及Otsu方法)【Python-Open_CV系列(六)】

文章目录

🍹1. 什么是阈值处理?


🍹2.二值化处理 与 反二值化处理


🍹3. 零处理


🍹4. 截断处理


🍹5.五种处理方式汇总


🍹6. 自适应处理


✨平均法 cv2.ADAPTIVE_THRESH_MEAN_C


✨高斯法 cv2.ADAPTIVE_THRESH_GAUSSIAN_C


🍹7. Otsu方法

🍹1. 什么是阈值处理?

在图像处理中,阈值处理是一种很重要的处理方式。阈值处理即给像素值设定一个阈值,然后所有的像素值都与目标阈值进行比较,根据像素值与阈值的关系,对像素值做出相应的调整,以达到影响图片的效果的预期。在计算机视觉技术中心,阈值处理十分重要,像素在经过阈值处理后,对肉眼观感可能不会太好,但是对程序而言图片上的人或物则通常更容易被搜寻到特征,以被识别出。从而实现识别的目的。


阈值处理常用的方法:threshold()方法。

✨其语法如下:

threshold(src, thresh, maxval, type, dst=None)


  • src: 原图
  • thresh: 阈值
  • maxval: 阈值处理采用的最大值,通常选择255作为最大值,即白色。
  • type: 阈值处理类型。


 常用的阈值处理类型

类型

含义

cv2.THRESH_BINARY

二值化阈值处理

cv2.THRESH_BINARY_INY

反二值化阈值处理

cv2.THRESH_TOZERO

低于阈值零处理

cv2.THRESH_TOZERO_INV

超出阈值零处理

cv2.THRESH_TRUNC

截断阈值处理

 

🍹2.二值化处理 与 反二值化处理

二值化处理,也称二值化阈值处理,该处理使每个像素值与指定的阈值相比较,大于阈值的像素变为最大值,小于阈值的像素值变为零。最终可以使像素只保留两种像素值,得到“非黑即白”的图像(不同与灰度处理)。


反二值化处理的处理结果与二值化处理相反,得到的也是只有黑白两种颜色的图像,不同之处在于大于阈值的像素值变为0,小于阈值的变为阈值处理采用的最大值。


下面,对二值化处理的方式进行示例,

选择图片素材:

   ✨梵高 《向日葵》✨

1.png


以127作为阈值,255为阈值处理最大值为例,读取图像时,需要先将图像转化为灰度图像。

import cv2
# 将图像读成灰度图像
img = cv2.imread("sunflowers.jpg", 0)  
# 做二值化处理
t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
# 其中返回的t即我们选择的阈值127。
cv2.imshow('dst', dst) 
cv2.waitKey() 
cv2.destroyAllWindows() 

处理效果:

1.png

👇同理,再对《向日葵》做反二值化处理

import cv2
img = cv2.imread("sunflowers.jpg", 0)
# 反二值化阈值处理
t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()

1.png

🍹3. 零处理

零处理包括 低于阈值零处理 超出阈值零处理(也称低阈值零处理和高阈值零处理)。低于阈值零处理将低于阈值的像素值变为0,超出阈值零处理则将高于阈值的像素值变为0。

import cv2
img = cv2.imread("sunflowers.jpg", 0)
# 低于阈值零处理
t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()

1.png

import cv2
img = cv2.imread("sunflowers.jpg", 0)
# 超出阈值零处理
t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO_INV)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()

👇超阈值零处理效果呈现:

image.png

🍹4. 截断处理

截断处理也称截断阈值处理,将大于阈值的像素值变成跟阈值一样,小于阈值的像素值则保持不变。

截断处理后图像的整体颜色会变暗,亮度降低,原本浅色区域的颜色会变更浅。


代码示例如下:

import cv2
# 将图像读成灰度图像
img = cv2.imread("sunflowers.jpg", 0)
# 截断处理
t, dst = cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()

1.png

目录
相关文章
|
23天前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
153 1
|
2月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
|
15天前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
213 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
27天前
|
算法 调度 决策智能
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
|
2月前
|
机器学习/深度学习 数据采集 TensorFlow
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
|
28天前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
193 102
|
28天前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
203 104
|
28天前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
185 103
|
28天前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
133 82
|
28天前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的多面手
Python:现代编程的多面手
33 0

推荐镜像

更多