IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> OpenCV计算机视觉实战 | 第3章 阈值与平滑处理 -> 正文阅读

[人工智能]OpenCV计算机视觉实战 | 第3章 阈值与平滑处理

本文为《OpenCV计算机视觉实战》课程的笔记。

1 图像阈值

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

src:输入图,只能输入单通道图像,通常来说是灰度图

dst:输出图

thresh:阈值

maxval:当像素值超过了阈值(或小于阈值,根据type决定)所赋予的值

type:二值化操作的类型:

  • cv2.THRESH_BINARY:超过阈值取maxval,否则0
  • cv2.THRESH_BINARY_INV:BINARY的反转
  • cv2.THRESH_TRUNC:大于阈值部分设为阈值,否则不变
  • cv2.THRESH_TOZERO:大于阈值取0
  • cv2.THRESH_TOZERO_INV:反转
thresh, maxval = 127, 255
ret, thresh1 = cv2.threshold(img_gray, thresh, maxval, cv2.THRESH_BINARY)
ret, thresh2 = cv2.threshold(img_gray, thresh, maxval, cv2.THRESH_BINARY_INV)
ret, thresh3 = cv2.threshold(img_gray, thresh, maxval, cv2.THRESH_TRUNC)
ret, thresh4 = cv2.threshold(img_gray, thresh, maxval, cv2.THRESH_TOZERO)
ret, thresh5 = cv2.threshold(img_gray, thresh, maxval, cv2.THRESH_TOZERO_INV)

titles = ['Orignal image', 'THRESH_BINARY', 'THRESH_BINARY_INV', 'THRESH_TRUNC', 'THRESH_TOZERO', 'THRESH_TOZERO_INV']
images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]

for i in range(6):
    plt.subplot(2,3,i+1),plt.imshow(images[i], 'gray')
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])
plt.show()

在这里插入图片描述

2 图像平滑

图像平滑的本质是卷积操作。常见的有均值滤波、高斯滤波、中值滤波。

详细介绍可以看这篇博文

2.1 均值滤波

一种线性滤波器,将卷积核(窗口区域)中像素的平均值作为锚点上的像素值。

优点:效率高,思路简单。

缺点:会将图像中的边缘信息及特征信息“模糊”掉,从而丢失很多特征。

# 均值滤波
blur = cv2.blur(img1,(3,3))
cv_show('blur',blur)# 均值滤波

2.2 方框滤波

# 方框滤波:和均值滤波基本一样
box = cv2.boxFilter(img,-1,(3,3),normalize=False)
#-1表示自适应通道数
# normalize是一个归一化参数,若不进行归一化,那么一旦越界则使用255替代
cv_show('box',box)

2.3 高斯滤波

一种线性滤波,利用二维高斯函数的分布对图像进行平滑。

根据高斯函数的特点,高斯滤波方法有以下优点:

  1. 高斯函数旋转对称,故在各个方向上平滑程度相同,不会改变图像的边缘走向。

    ※在实际应用过程中,卷积核不一定是对称的

  2. 高斯函数是单值函数,高斯卷积核的锚点为极值,在所有方向上递减,锚点像素不会受到距离锚点较远的像素影响过大,保证了特征点和边缘的特性。

  3. 在频域上,滤波过程中不会被高频信号污染。

# 高斯滤波
# 高斯模糊的卷积核里的数值是满足高斯分布,相当于更重视中间的(即越靠近中心的权重越大)
aussian =  cv2.GaussianBlur(img1,(5, 5),1)
cv_show('aussian', aussian)

2.4 中值滤波

一种非线性滤波,在处理脉冲噪声以及椒盐噪声时效果极佳。

脉冲噪声:离散型噪声的总称,由时间上无规律出现的突发性干扰组成。

椒盐噪声:随机出现的白点或黑点。成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。

在这里插入图片描述

处理思路:将卷积核中像素值排序后的中值作为锚点的值。

优化:huang算法,基于像素直方图,从小到大累加像素直方图的值直到大于等于锚点在卷积核中的序号。详见博文

# 中值滤波:用于去噪
# 用filter的中值替代原值
median = cv2.medianBlur(img1, 5)
cv_show('median', median)

将以上三种滤波结果组合后输出:

res = np.hstack((blur,aussian,median))
print(res)
cv_show('res', res)

在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-14 21:08:29  更:2022-02-14 21:08:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年6日历 -2024/6/18 16:06:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码