python opencv3

三、图像预处理2

1、图像滤波

为图像滤波通过滤波器得到另一个图像。也就是加深图像之间的间隙,增强视觉效果;也可以模糊化间隙,造成图像的噪点被抹平。

2、卷积核

在深度学习中,卷积核越大,看到的信息越多,提取的特征越好,同时计算量越大。

卷积核一般为奇数,为了保证锚点处于中间。

3、图像平滑处理

图像噪声‌是指存在于图像数据中的不必要的或多余的干扰信息。它妨碍了人们通过视觉器官对接收信息的理解。噪声在理论上可以定义为"不可预测,只能用概率统计方法来认识的随机误差"。因此,将图像噪声看成是多维随机过程是合适的,描述噪声的方法可以借用随机过程的描述,即用其概率分布函数和概率密度分布函数。

3.1、高斯滤波

高斯滤波是图像处理中常用的一种平滑滤波方法,其主要作用是去除图像中的噪声,并减少图像细节,以实现图像的平滑处理。

cv2.GaussianBlur(src, ksize, sigmaX) :ksize:高斯核的大小,通常以元组 (width, height) 形式指定;sigmaX:高斯核在 x 方向上的标准差。

ksize = (11, 11)

sigma = 1

blurrred_image = cv2.GaussianBlur(img, ksize, sigma)

3.2、双边滤波

通过考虑像素点的空间距离和灰度差异,实现了对图像进行平滑的同时,尽量保留图像的边缘细节。

cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace) :d:滤波器的直径,用于指定在每个像素周围考虑的像素邻域大小,一般为正奇数;sigmaColor:颜色空间的标准差,用于控制滤波过程中颜色相似性的权重(较大时,在更大范围内进行平滑处理,导致图像细节的丢失较多 );sigmaSpace:坐标空间的标准差,用于控制滤波过程中空间相似性的权重(较大时,在更大的空间范围内进行平滑处理,导致图像的局部细节被进一步平滑 )。

c = 19

color = 3

space = 17

b_img = cv2.bilateralFilter(img, c, space, color)

3.3、中值 滤波

因为椒盐噪声或脉冲噪声的灰度值通常远远偏离周围像素的灰度值,通过中值滤波可以有效地将这些异常值去除,从而使图像变得更加平滑。

cv2.medianBlur(src, ksize) :ksize 是用于中值滤波的孔径大小,必须是大于1的奇数。

c = 5

m_img = cv2.medianBlur(img, c)

4、图像边缘检测

Canny边缘检测

cv2.Canny(image, threshold1, threshold2):threshold1 : 第一个阈值,用于边缘检测的低阈值;threshold2: 第二个阈值,用于边缘检测的高阈值;返回检测到的边缘图像,边缘部分为白色,其他部分为黑色。

import cv2

image = cv2.imread("images/car.png")

从BGR到灰度图像

image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

Canny

edges = cv2.Canny(image, 200, 300)

cv2.imshow('边缘检测', edges)

cv2.waitKey(0)

cv2.destroyAllWindows()

5、图像形态学操作

主要用于提取图像中的有用特征,如边界检测、噪声去除等;常见的形态学操作包括腐蚀、膨胀、开运算、闭运算、梯度、顶帽和黑帽等

5.1、腐蚀

减少图像中白色区域的大小,常用于消除小的白色噪声点。

eroded = cv2.erode(src, kernel, dst,iterations=1):kernel : 结构元素,用于定义腐蚀操作的方式,是一个矩阵结构数据;dst (可选): 输出图像,默认自动创建一个新的图像;iterations (可选): 腐蚀操作的迭代次数,默认为1。

k = np.ones((5, 5), np.uint8)

num = 2

e_img = cv2.erode(img, k, iterations=num)

5.2、膨胀

与腐蚀相反,它会增加图像中白色区域的大小。

dilated = cv2.dilate(src, kernel, iterations=1)

5.3、开运算

先腐蚀后膨胀的过程,常用于去除小的物体、平滑较大的物体边界以及填充细长的突出部分。

cv2.morphologyEx(img, cv2.MORPH_OPEN,kernel)

5.4、闭运算

先膨胀后腐蚀的过程,常用于填充前景物体中的小洞, 平滑较大物体的边界以及连接邻近的物体。

cv2.morphologyEx(img, cv2.MORPH_CLOSE,kernel)

5.5、形态学梯度

计算膨胀后的图像与腐蚀后的图像之间的差值,突出物体的边缘。

cv2.morphologyEx(src, cv2.MORPH_GRADIENT, kernel)

5.6、顶帽

原图像与开运算结果的差值,用于获取图像中的亮细节。

cv2.morphologyEx(src, cv2.MORPH_TOPHAT, kernel)

5.7、黑帽

闭运算结果与原图像的差值,用于获取图像中的暗细节。

cv2.morphologyEx(src, cv2.MORPH_BLACKHAT, kernel)

相关推荐
不如语冰12 小时前
AI大模型入门-pytorch-张量2 tensor创建
python
NPE~12 小时前
[AI]Agent开发——ADK框架使用
人工智能·python·ai·教程·adk·agent开发
矮个史蒂芬12 小时前
统计verilog .v文件中output 的bit数
python
gwf21613 小时前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
爱吃提升13 小时前
python 分布式爬虫、爬虫合规与综合实战项目
分布式·爬虫·python
审小匠OpenCPAi13 小时前
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比
java·前端·人工智能·python·审计
元Y亨H14 小时前
Pandas 解析 Excel 导致的内存溢出(MemoryError)
python·excel
金銀銅鐵15 小时前
[Python] 用 turtle 来绘制瑞典国旗
python
Albert Edison15 小时前
【GUI 自动化测试】Pywinauto 常见操作
自动化测试·python·pywinauto
海兰15 小时前
【高速缓存】RedisVL为文本生成嵌入向量实践指南
人工智能·python·机器学习