Python图像阈值化处理及算法比对实例解析


Posted in Python onJune 19, 2020

图像的二值化或阈值化(Binarization)旨在提取图像中的目标物体,将背景以及噪声区分开来。通常会设定一个阈值T,通过T将图像的像素划分为两类:大于T的像素群和小于T的像素群。

灰度转换处理后的图像中,每个像素都只有一个灰度值,其大小表示明暗程度。二值化处理可以将图像中的像素划分为两类颜色,常用的二值化算法如公式1所示:

{Y=0,gray<TY=255,gray>=T
{Y=0,gray<TY=255,gray>=T​

当灰度Gray小于阈值T时,其像素设置为0,表示黑色;当灰度Gray大于或等于阈值T时,其Y值为255,表示白色。

Python OpenCV中提供了阈值函数threshold()实现二值化处理,其公式及参数如下图所示:

retval, dst = cv2.threshold(src, thresh, maxval, type)

Python图像阈值化处理及算法比对实例解析

二进制阈值化

该方法先要选定一个特定的阈值量,比如127

1) 大于等于127的像素点的灰度值设定为最大值

2) 灰度值小于127的像素点的灰度值设置为0

例如: 156->255 89->0

关键字为cv2.THRESH_BINARY,完整代码如下

import cv2
def test22():
  src = cv2.imread("rose.jpg")
  # 灰度图片转换
  GrayImage = cv2.cvtColor(src, cv2.COLOR_BGR2BGRA)
  # 二进制阈值化处理
  r, b = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_BINARY)
  # 显示图像
  cv2.imshow("src", src)
  cv2.imshow("result", b)

  if cv2.waitKey(0) == 27:
    cv2.destroyAllWindows()
test22()

效果如下:

Python图像阈值化处理及算法比对实例解析

反二进制阈值化

该方法与二进制阈值化方法相似,先要选定一个特定的灰度值作为阈值,比如127

1) 大于127的像素点的灰度值设定为0

2) 小于该阈值的灰度值设定为255

例如:156->0 89->255

关键字为cv2.THRESH_BINARY_INV

代码如下:

import cv2
def test22():
  src = cv2.imread("rose.jpg")
  # 灰度图片转换
  GrayImage = cv2.cvtColor(src, cv2.COLOR_BGR2BGRA)
  # 二进制阈值化处理
  r, b = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_BINARY_INV)
  # 显示图像
  cv2.imshow("src", src)
  cv2.imshow("result", b)

  if cv2.waitKey(0) == 27:
    cv2.destroyAllWindows()
test22()

效果如下:

Python图像阈值化处理及算法比对实例解析

截断阈值化

该方法需要选定一个阈值,图像中大于该阈值的像素点被设定为该阈值,小于该阈值的保持不变。

1) 大于等于127像素点的灰度值设定为该阈值127

2) 小于该阈值的灰度值不变

例如: 163-> 127 89->89

关键字cv2.THRESH_TRUNC,完整代码如下

import cv2
def test22():
  src = cv2.imread("rose.jpg")
  # 灰度图片转换
  GrayImage = cv2.cvtColor(src, cv2.COLOR_BGR2BGRA)
  # 二进制阈值化处理
  r, b = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_TRUNC)
  # 显示图像
  cv2.imshow("src", src)
  cv2.imshow("result", b)

  if cv2.waitKey(0) == 27:
    cv2.destroyAllWindows()
test22()

效果如下:

Python图像阈值化处理及算法比对实例解析

反阈值化为0

该方法先选定一个阈值,比如127

(1) 大于等于阈值127的像素点变为0
(2) 小于该阈值的像素点值保持不变

例如: 128->0 89->89

关键字为cv2.THRESH_TOZERO_INV,完整代码如下:

import cv2
def test22():
  src = cv2.imread("rose.jpg")
  # 灰度图片转换
  GrayImage = cv2.cvtColor(src, cv2.COLOR_BGR2BGRA)
  # 二进制阈值化处理
  r, b = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_TOZERO_INV)
  # 显示图像
  cv2.imshow("src", src)
  cv2.imshow("result", b)
  if cv2.waitKey(0) == 27:
    cv2.destroyAllWindows()
test22()

效果如下:

Python图像阈值化处理及算法比对实例解析

阈值为0

该方法先选定一个阈值,比如127

(1) 大于等于阈值127的像素点,值保持不变

(2) 小于该阈值的像素点值设置为0

例如: 163->163 102->0

关键字为cv2.THRESH_TOZERO,完整代码如下:

import cv2
def test22():
  src = cv2.imread("rose.jpg")
  # 灰度图片转换
  GrayImage = cv2.cvtColor(src, cv2.COLOR_BGR2BGRA)
  # 二进制阈值化处理
  r, b = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_TOZERO)
  # 显示图像
  cv2.imshow("src", src)
  cv2.imshow("result", b)

  if cv2.waitKey(0) == 27:
    cv2.destroyAllWindows()
test22()

效果如下:

Python图像阈值化处理及算法比对实例解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python脚本将文字转换为图片的实例分享
Aug 29 Python
通过Python爬虫代理IP快速增加博客阅读量
Dec 14 Python
Mac中Python 3环境下安装scrapy的方法教程
Oct 26 Python
python Matplotlib画图之调整字体大小的示例
Nov 20 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
Python正则表达式实现简易计算器功能示例
May 07 Python
python中的协程深入理解
Jun 10 Python
python使用writerows写csv文件产生多余空行的处理方法
Aug 01 Python
运用PyTorch动手搭建一个共享单车预测器
Aug 06 Python
tensorflow如何继续训练之前保存的模型实例
Jan 21 Python
Python定义一个函数的方法
Jun 15 Python
python 调用Google翻译接口的方法
Dec 09 Python
OpenCV 之按位运算举例解析
Jun 19 #Python
Python实现ElGamal加密算法的示例代码
Jun 19 #Python
python 字符串的驻留机制及优缺点
Jun 19 #Python
Keras自动下载的数据集/模型存放位置介绍
Jun 19 #Python
Python应用实现处理excel数据过程解析
Jun 19 #Python
在tensorflow以及keras安装目录查询操作(windows下)
Jun 19 #Python
Scrapy框架介绍之Puppeteer渲染的使用
Jun 19 #Python
You might like
深入探讨PHP中的内存管理问题
2011/08/31 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
浅析get与post的一些特殊情况
2014/07/28 PHP
thinkphp中html:list标签传递多个参数实例
2014/10/30 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
PHP GD库相关图像生成和处理函数小结
2016/09/30 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
php array_chunk()函数用法与注意事项
2019/07/12 PHP
JAVASCRIPT keycode总结
2009/02/04 Javascript
jquery validator 插件增加日期比较方法
2010/02/21 Javascript
一个基于jquery的文本框记数器
2012/09/19 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
2016/03/13 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
Angular如何由模板生成DOM树的方法
2019/12/23 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
[01:09:19]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第二场 2月28日
2021/03/11 DOTA
一波神奇的Python语句、函数与方法的使用技巧总结
2015/12/08 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
2018/11/14 Python
详解python之heapq模块及排序操作
2019/04/04 Python
python return逻辑判断表达式实现解析
2019/12/02 Python
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
什么是Remote Module
2016/06/10 面试题
大学生毕业自我鉴定范文
2013/09/19 职场文书
大门门卫岗位职责
2013/11/30 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
离职保密承诺书
2014/05/28 职场文书
自我管理的活动方案
2014/08/25 职场文书
环卫工作个人总结
2015/03/04 职场文书
教师自荐信范文
2015/03/06 职场文书
追悼词范文大全
2015/06/23 职场文书
初中军训感想
2015/08/07 职场文书
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android