机器视觉算法-滤波&特征提取算法

事先声明:本期只有满满的干货,对AI感兴趣的小伙伴特别是做视觉开发的小伙伴或者说你对视觉开发感兴趣的小伙伴,一定要仔细阅读这篇文章。

机器视觉其实是个非常宽泛的概念,在AI领域中我们叫视觉领域的深度学习,利用卷积神经网络Conv算法提取图像中我们想要的特征提取,而Conv算法其实就是在图像滤波算法,特征提取算法的基础之上再加上了动态优化以及高级扩展功能,本文将详细介绍常规的滤波算法以及特征提取算法的使用场景以及原理。

常用图像处理方法:

1.图像增强:

定义:通过调整对比度,亮度,色彩平衡等来改善图像质量

方法:直方图均衡化,滤波,降噪等

2.图像变换:

定义:几何变换,如:平移,旋转,镜像,缩放

方法:频域变换,如:傅里叶变换,沃尔什变换

3.图像分割:

定义:将图像分成不同的区域,例如基于阈值,边缘,颜色或者纹理的分割

场景:用于目标检测,图像识别和分析

4.特征提取:

定义:提取图像中的几何,形状,颜色,纹理等特征

场景:用于图像分类,物体辨识等

5.图像复原:

定义:通过去噪,修复损坏的图像来恢复原始图像

方法:去除模糊,运动模糊等

6.图像匹配:

定义:在图像中寻找特定的模式或目标

方法:用于目标跟踪,图像配准等

7.计算机视觉:

场景:用于人脸识别,车牌识别,行人检测,物体跟踪等

方法:基于深度学习,卷积神经网络等技术

8.图像编码和压缩:

定义:减少图像数据量以节省存储空间和传输宽带

方法:使用JPEG,PNG,WebP等编码格式

9.表面缺陷检测:

定义:检测产品表面的缺陷,裂纹,瑕疵等

场景:用于质量控制和生产线检测

10.医学图像处理:

定义:分析医学图像,如:X射线,MRI,CT扫描等
场景:用于疾病诊断和治疗

常用图像格式:

jpg:有损压缩,不支持透明,不支持动画,非矢量
png:不支持压缩,支持透明,半透明,不透明,不支持动画,非矢量
gif:有损压缩,不支持全透明,支持半透明,支持动画,非矢量
bmp:可支持有损压缩,不支持透明,不支持动画,非矢量
tiff:不支持压缩,不支持透明,不支持动画,非矢量
svg:无损压缩,任何分辨率都可高质量打印,尺寸更小,压缩性更强

如果你正在面试一些图像呀,算法处理呀之类的岗位,这个很大概率会被面试官问到,甚至一些前端岗位也会问道。

图像处理常用的一些算法
1.滤波方法

1.高斯滤波:
  特点:基于线性平滑,使用高斯核进行加权平均
  优点:良好的去噪效果
  缺点:可能模糊图像细节
  场景:图像去噪,平滑处理
  算子:cv2.GaussianBlur(输入图像,滤波核大小,X方向的标准差,Y方向的标准差,图像边界处理方式)
2.中值滤波:
  特点:非线性滤波,使用领域内像素的中值代替当前像素
  优点:有效去除椒盐噪声,保持图像边缘
  缺点:对高斯噪声去除较差
  场景:椒盐噪声去除
  算子:cv2.medianBlur(输入图像,滤波核大小)
3.均值滤波:
  特点:平滑效果明显,不改变图像的边缘和细节,适用于高斯分布噪声
  优点:简单易实现,计算快,适用于实时处理,广泛应用于,图像去噪,视频降噪,图像平滑,图像增强和特征提取
  缺点:模糊图像细节,无法处理脉冲噪声
  场景:去除高频噪声,平滑图像
  算子:cv2.blur(输入图像,滤波核大小)
4.双边滤波:
  特点:考虑空域和像素值域的信息,保持边缘和细节
  优点:去噪声的同时保留图像细节
  缺点:计算复杂度较高
  场景:图像增强,去雾处理
  算子:cv2.bilateralFilter(输入图像,滤波核大小,颜色空间标准差,坐标空间标准差)
5.小波变换滤波:
  特点:利用多尺度分析,在频域和时域同时处理信号
  优点:适用于信号去噪,特征提取,边缘检测等
  缺点:需要选择合适的小波函数
  场景:信号处理,图像压缩
  算子:cv2.dwt(输入图像,小波类型(cv2.WAVELET_HAAR等),输出参数(用于保存小波分解的结果),小波变换的模式(DWT_FORWARD或DWT_INVERSE))
6.非局部均值滤波:
  特点:利用图像其他区域的信息进行滤波,保留纹理信息
  优点:去噪声的同时保持细节
  缺点:计算复杂度较高
  场景:图像修复,图像增强
  算子:cv2.fastNlMeansDenoising(输入图像,输出图像,控制滤波强度的参数,颜色分量的滤波强度参数,模板窗口大小,搜索窗口大小)
7.自适应中值滤波:
  特点:根据领域内像素的特性动态调整滤波窗口大小
  优点:对不同类型噪声有较好的适应性
  缺点:可能在某些情况下导致细节丧失
  场景:不同噪声类型的去除
  算子:cv2.adaptiveMedianFilter(输入图像,输出图像,初始滤波器大小,最大滤波器大小)
8.均值迁移滤波:
  特点:用于状态估计,适用于跟踪任务
  优点:能够在观测数据和预测数据中融合估计状态
  缺点:对于复杂非线性问题可能不适用
  场景:目标跟踪,姿态估计
  算子:cv2.pyrMeanShiftFiltering(输入图像,漂移物理空间半径大小,漂移颜色空间半径大小)

2.特征提取方法
1.颜色,形状,纹理提取:适用于图像项目中的彩色空间分析,如HSV,LAB,灰度等

2.Harris角点检测:用于检测图像中的角点,适合需要识别角落变化的应用,简单计算快,对光照变化和噪声有一定的鲁棒性,但对旋转和尺度变化不够稳定,只能检测角点不适用于其他特征
函数:cv2.cornerHarris()
参数:

1.image:输入图像
2.blockSize:角点检测中要考虑的领域大小
3.ksize:Sobel求导中使用的窗口大小
4.k:角点检测方程中的自由参数,取值范围[0.04, 0.06]

场景:主要用于检测图像中的角点,角点在物体识别,图像匹配,摄像头标定等领域中具有重要作用
代码:

dst = cv2.cornerHarris(gray,blockSize=2,ksize=23,k=0.04)

# 角点标记
img[dst > 0.01 * dst.max()] = [0,0,255]

3.SIFT:使用于检测图像中的角,斑点,圆等,对旋转和缩放不敏感,特征稳定,对旋转,尺度变换,亮度保持不变性,对视角变换,噪声也有一定程度的稳定性,但实时性不高,并且对于边缘光滑目标的特征点提取能力较弱
函数:sift = cv2.SIFT().create()
参数:

1.nfeatures:特征点数目
2.nOctaveLayers:金字塔中每组的层数
3.contrastThreshold:过滤掉较差的特征点的阈值,较大的值会返回更少的特征点
4.edgeThreshold:过滤掉边缘效应的阈值,较大值会返回更多的特征点
5.sigma:金字塔第0层图像的高斯滤波系数

场景:图像识别与分类,物体检测与跟踪,图像拼接,三维重建,视频内容分析,机器人导航与地图构建,图像编辑与修饰
代码:

sift = cv2.SIFT().create(500,contrastThreshold=0.01,edgeThreshold=30,sigma=1.6)
keypoints = sift.detect(image,None)

4.SURF:类似于SIFT,但计算更快,适用于实时应用,亮度变化下效果好,模糊方面优于SIFT,尺度不变性不如SIFT,旋转不边上差很多

5.ORB:结合了FAST关键点检测和BRIEF描述符,适用于计算资源有限的情况,局部像素灰度变化明显的地方,速度快,计算像素间亮度差异,具有一定的旋转不变性,但不如SIFT具有高区分度,对尺度变化不够稳定
函数:cv2.ORB().create()
参数:

1.nfeatures:默认为500,确定要查找的最大关键点数
2.scaleFactor:默认为1.2,金字塔的抽取率,必须大于
3.nlevels:默认为8,金字塔的层数
4.edgeThreshold:默认为31,用于过滤掉边缘效应的阈值
5.firstLevel:默认为0,表示金字塔的第一层
6.WTA_K:默认为2,表示BRIEF算法中的WTA_K参数
7.scoreType:默认为HARRIS_SCORE,表示关键点的评分类型
8.patchSize:默认为31,表示计算关键点方向时的区域大小
9.fastThreshold:默认为20,用于FAST算法的阈值

场景:图像识别与分类,通过提取图像中的ORB特征,可以对图像有效的进行识别和分类,物体检测与跟踪,图像拼接,三维重建,机器人导航与地图构建
代码:

orb = cv2.ORB().create(500,1.2,8,31,0,2,cv2.ORB_HARRIS_SCORE,31,20)
keypoints = orb.detect(image,None)

6.BRISK:是一种改进型的特征提取算法,它在保持SIFT算法优良性能特点的基础上,同时解决了SIFT计算复杂度高,耗时长的缺点,提升了算法的执行效率,适用于实时计算机视觉系统
函数:brisk = cv2.BRISK().create()
参数:

1.thresh:默认为30,用于过滤掉较差的特征点的阈值
2.octaves:默认为3,金字塔的层数
3.patternScale:默认为1.0,用于控制特征点的尺度

场景:图像识别分类,物体检测与跟踪,图像拼接,三维重建,机器人导航与地图构建
代码:

brisk = cv2.BRISK().create(30,3,1.0)
keypoints = brisk.detect(image,None)

算法迭代更新很快,一个算子的开发可能就会耗费科研人员一身的心血,而快速高效的算子也会被利用到AI不同领域:CV视觉领域,NLP自然语言处理等,搞不好以后在出个嗅觉领域,让具身智能不光能视、听、说、动还要让它能闻和尝,真正将人体所有感官移植到“具身智能”上,这是一个人类与AI不断进化与探索的过程,有生之年赶上AI大爆发。感兴趣的小伙伴微信公众号关注“CrazyNET”,博主有空就会更新新的文章,新的看法欢迎大家来积极讨论和学习,然我们推进人类社会共同进步。

原文链接地址:https://mp.weixin.qq.com/s/Wdb9eX1MCQ1v6dPbrheGPw

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值