灰度阈值是啥意思呢?我们慢慢说。

1.灰度图

我们现在有一张彩色图,我们给它用黑白的方式变现,就形成灰度图,如图所示。

图1

那究竟怎么转换的呢?很简单,我们根据如下公式,把BGR三个通道换成一个Gray通道(0~255):

Gray = R*0.299 + G*0.587 + B*0.114

其中,R,G,B分别代表的是R,G,B三个通道的值(0~255)。

用python语句导入灰度图只需要在导入图像时候后面多一个0即可:

img = cv2.imread("linetest.jpg", 0)

2.灰度直方图

灰度直方图很容易理解,就是我们有一张灰度图,如图1那张。这张图是800*858的尺寸的图。也就是说,该图里面有686400个像素点,每一个像素都对应一个值(0~255),然后我们统计一下0~255这些值共有多少个,并画出统计图:

图2

看图2,输入色阶里面从左到右分别对应的是0~255这些数值的数目。我们发现,这里面亮的点不少(接近255),暗的很少(接近0),不亮不暗的占大多数(中间的值)

3.阈值分割

我们选择0~255之间的一个值,比如150,然后小于等于150都给它变成0,大于150的都给他变为255,这样,我们的图里面就只有两个颜色(黑、白)了。分割后的图像为二值图像,如图3所示:

图3

我们可以使用PYTHON代码来执行这个阈值分割:

ret, thresh = cv2.threshold(img, 150, 255, cv2.THRESH_BINARY)

该语句表示:将灰度图像img进行二值化处理,灰度小于150的为0,大于的255

ret: 输入的阈值

thresh : 处理好的图片

cv2.THRESH_BINARY:表示根据灰度小于阈值的为0,大于的255。

确定一个最佳阈值,使背景和目标之间的差异最大,能够有效地分离背景和前景。那么怎么找阈值呢,我们引入大津算法。

4大津算法

有个小日子叫大津展之(おおつのぶゆき),他在1979年时候发明了一个针对二值化的确定最佳阈值有效方法。

图4

这个算法是怎么运行的呢,特别简单。

(1)假定我们灰度图是5*5的尺寸的图。也就是说,该图里面有25个像素点,那么我们设定一个N=25

(2)接下来,我们求一下个灰度值的概率。P_i=n_i/N,其中ni为灰度值i的像素个数。例如,灰度值为150的有5个,那么P_150=n_150/N=5/25=1/5=0.2。

(3)然后我们从阈值为0开始,进行阈值分割为{G1,G2}两组,分别为小于0组G1,大于等于0的组G2。(灰度值小于等于1的都为0,大于1的都为255。)就可以得到G1的总概率值w0,G2的总概率值w1:

也可以得到G1、G2的平均值:

整个图像的灰度平均值、方差可以通过如下式子求得:

当我们求完阈值为0的情况的方差之后,我们进行阈值为1,2,3。。。。。一直到254时候的平均值,方差。然后我们选择方差最大情况下的阈值T,作为我们最终的阈值。

上面的公式我们在其它阈值T下遍历时,可以改为:

我们可以使用PYTHON代码来执行这个大津算法,执行的结果如图5所示:

ret2,thresh2= cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

图5

最后奉上全部代码:

# 导入类库
import cv2
import numpy as npif __name__ == '__main__':# 读入灰度图片img1 = cv2.imread("linetest.jpg")img2 = cv2.imread("linetest.jpg", 0)# 显示图片cv2.imshow('orgin1', img1)cv2.imshow('orgin2', img2)#阈值分割ret1, thresh1 = cv2.threshold(img2, 150, 255, cv2.THRESH_BINARY)#大津算法ret2, thresh2 = cv2.threshold(img2, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)# 显示图片cv2.imshow('orgin3', thresh1)cv2.imshow('orgin4', thresh2)# 按任意键退出cv2.waitKey()cv2.destroyAllWindows()

以上就是阈值分割的所有内容啦!

白话文讲计算机视觉-第十讲-灰度阈值分割相关推荐

  1. ceres快速教材及学习笔记(四)bundl adjustment,《视觉slam十四讲》第十讲ceres例子

    0. 前言 本文是根据ceres官方教程内容ceres-solver官方教程链接,再结合自己理解的一个ceres快速学习笔记. 在博文ceres快速教材及学习笔记(一)hello,world!中,我们 ...

  2. 白话文讲计算机视觉-第六讲-轮廓检测算法

    大家好,欢迎收听小木的第六讲,第六讲我们主要讲的内容是轮廓检测.说道轮廓检测.轮廓怎么检测呢,那么我们就要引入一个轮廓检测算法: 这个算法是日本的铃木桑发明的.这位日本人写了一篇论文,叫做: Topo ...

  3. 王佩丰excel2010基础教程学习笔记(第六讲到第十讲)

    选中数据所在区域,选择插入--数据透视表即可生成数据透视表. -- 将字段放入选定的区域,可以自由定制透视表. 在值字段区域右键可以选择不同的显示和汇总方式. 双击值字段的数据可以获取其源数据. 行列 ...

  4. 王佩丰excel2010基础教程学习笔记(第十六讲到第二十讲)

    简单文本函数:left,right,mid,find left()函数有两个参数,参数一是字符串所在单元格,参数二是从字符串左边开始取几位. 从字符串左边开始取三位. right()函数一样,不过是从 ...

  5. 视觉SLAM十四讲学习笔记-第二讲-初识SLAM

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 "定位"和"建图",可以看成感知的"内外之分". ...

  6. 动手学ocr·十讲--学习笔记一

    动手学ocr·十讲 技术导论 课程链接请点击这里 1.1 OCR技术背景: OCR是什么 OCR(Optical Character Recognition,光学字符识别)是计算机视觉重要方向之一.传 ...

  7. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

  8. 《突破C#编程实例五十讲》源文件下载(2)

    上接<<突破C#编程实例五十讲>源文件下载(1)> 有兴趣的朋友下载看看吧,一共有9个压缩包分3篇文章,下载要注意哦,不然解压要出错哦! 转载于:https://blog.51 ...

  9. 趣谈网络协议笔记-二(第十讲)

    趣谈网络协议笔记-二(第十讲) UDP协议:因性善而简单,难免碰到"城会玩" 自勉 如果手上没有剑,我就无法保护你.如果我一直握着剑,我就无法抱紧你.--<Bleach> ...

最新文章

  1. android listview edittext 焦点冲突,Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法...
  2. AOP 注入失败的问题
  3. 1.CentOS安装Redis
  4. 华南理工计算机网络随随堂,计算机组成原理-2019春华工网络教育随堂练习
  5. labview霍夫曼编码_哈夫曼编解码压缩解压文件—C++实现
  6. 《ArcGIS Engine+C#实例开发教程》第七讲 图层符号选择器的实现2
  7. Orchard之生成新模板
  8. 【其他】学习通下载任务点里的PPT三步走
  9. 求$N^N$的首位数字
  10. java 索引实现,Java创建ES索引实现
  11. 新华三(H3C)校园招聘技术类笔试题2019
  12. H5开发,打包成APK
  13. 04-乐优商城项目搭建
  14. Protues8.6仿真STM32出现错误-VDDA和VSSA的问题解决办法
  15. CSDN-Markdown语法集锦
  16. 是真正的发现,还是可耻的堕落?
  17. 多文件批量下载打包成.zip
  18. 中国资源卫星应用中心_数据下载
  19. TI 927 928 947 948 940串行器解串器系列
  20. Gym - 100519 B Bring Your Own Bombs 离散化+二分+思维

热门文章

  1. 短信登录、短信注册,(仅供参考)
  2. 跑步训练 python
  3. tif、bmp、jpg、png有什么区别
  4. “小身材高精度”千巡翼X1多场景应用案例
  5. Android 百度地图获取两点之间的距离和推荐的驾车路线
  6. 安卓linux辅助软件下载,安卓自动点击器pro
  7. Android ConstraintLayout 设置子 view maxWidth 是父 ConstraintLayout width 的百分比
  8. 百度人脸识别api使用BASE64传输图片一直报错222203
  9. java if return 语句_Java 语言中的 return 语句
  10. 毕业四年同学聚会,性格决定命运----作者:伤心小叶