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使用多线程不断刷新网页的方法
Mar 31 Python
使用IronPython把Python脚本集成到.NET程序中的教程
Mar 31 Python
在ironpython中利用装饰器执行SQL操作的例子
May 02 Python
详解Python的Django框架中的Cookie相关处理
Jul 22 Python
Python编程pygal绘图实例之XY线
Dec 09 Python
Python中循环后使用list.append()数据被覆盖问题的解决
Jul 01 Python
Pytorch Tensor的统计属性实例讲解
Dec 30 Python
Tensorflow之MNIST CNN实现并保存、加载模型
Jun 17 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
Nov 26 Python
教你用Python爬取英雄联盟皮肤原画
Jun 13 Python
Python 一键获取电脑浏览器的账号密码
May 11 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
PDO::_construct讲解
2019/01/27 PHP
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
Jquery知识点三 jquery表单对象操作
2011/01/17 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
JavaScript移除数组元素减少长度的方法
2013/09/05 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
javascript arguments使用示例
2014/12/16 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
详解Javascript获取缓存和清除缓存API
2017/05/25 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
用Vue编写抽象组件的方法
2019/05/06 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
Python提取频域特征知识点浅析
2019/03/04 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
2020/03/25 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
中国跨境电商:Tomtop
2017/03/16 全球购物
高中毕业生自我鉴定
2013/11/03 职场文书
建筑行业的大学生自我评价
2013/12/08 职场文书
顶岗实习接收函
2014/01/09 职场文书
家长给孩子的表扬信
2014/01/17 职场文书
2014年庆元旦活动方案
2014/02/15 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
最新离婚协议书范本
2014/08/19 职场文书
预防艾滋病宣传活动总结
2015/05/09 职场文书
员工辞职信范文大全
2015/05/12 职场文书
2016年国培研修日志
2015/11/13 职场文书
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python
vue 实现弹窗关闭后刷新效果
2022/04/08 Vue.js
python 判断字符串当中是否包含字符(str.contain)
2022/06/01 Python