赞
踩
本文代码全部可运行,笔者运行环境:python3.7+pycharm+opencv4.6。此文是学习记录,记录实现图像识别所需知识,对各知识点并不做深入探究,但笔者提供了相关链接以便读者进行深入学习。文章较长,建议收藏;若本文对您有所帮助,希望能够点赞、收藏哦!十分感谢!!!
传统图像识别技术是指利用机器学习进行特征提取与图像分类。图像识别的过程包括信息获取、预处理、特征提取、图像分类。
目录
简单理解就是把一幅图像转换成适合输入计算机和数字设备的数字信号。这需要要两个部件以获取数字图像:
常见的图像输入设备有:扫描仪、摄像机、数码相机、图像采集卡等。
图像预处理的主要目的是消除图像中无关的信息,恢复有用的真实信息,增强有关信息的可检测性和最大限度地简化数据,从而改进特征抽取、图像分割、匹配和识别的可靠性。
图像预处理的一般步骤为:灰度化-->几何变换-->图像增强,在具体项目中根据需要进行灵活运用。
灰度化是将图像转变成灰度图像,一般有分量法、最大值法、平均值法、加权平均法等。
表述:图像的灰度值可以是RGB三通道中的任意一通道的亮度值,也就是说可以将图像的R通道值作为灰度值,也可以是G通道或B通道。
数学表达:F(x, y) = R(x, y)或F(x, y) = G(x, y)或F(x, y) = B(x, y)
OpenCv中复现:
- def image_gray1(img):
- # 分量法灰度化图像
- # 判断输入图像是否为灰度图
- if len(img.shape) > 2:
- b, g, r = img[:, :, 0], img[:, :, 1], img[:, :, 2]
- gray = b # B通道值作为灰度值
- gray = g # G通道值作为灰度值
- gray = r # R通道值作为灰度值
-
- return gray
- else:
- return img
表述:取图像中(x, y)位置像素的RGB通道中的最大值为灰度值。
数学表达:F(x, y) = max(R(x, y), G(x, y), B(x, y))
OpenCv中复现:
- def image_gray2(img):
- # 最大值法灰度化图像
- grayimg = np.zeros(shape=(img.shape[0],img.shape[1]))
- if len(img.shape) > 2:
- for i in range(img.shape[0]):
- for j in range(img.shape[1]):
- grayimg[i,j] = max(img[i,j][0], img[i,j][1], img[i,j][2])
- return grayimg
- else:
- return img
表述:图像中每个像素的灰度值是其原图像三通道值得平均值。
数学表达:F(x, y) = (R(x, y) + G(x, y) + B(x, y)) / 3
OpenCv中复现:
- def image_gray3(img):
- # 平均值法灰度化图像
- grayimg = np.zeros(shape=(img.shape[0], img.shape[1]))
- if len(img.shape) > 2:
- for i in range(img.shape[0]):
- for j in range(img.shape[1]):
- grayimg[i, j] = (int(img[i, j][0])+int(img[i, j][1])+int(img[i, j][2]))/3
- return grayimg
- else:
- return img
表述:每个通道都有加权系数,根据系数计算其加权平均值。
数学表达:F(x, y) = 0.2989R(x, y)+0.5870G(x, y)+0.1140B(x, y)
OpenCv中复现:
- def convert2gray(img):
- # 加权平均分灰度化图像
- if len(img.shape) > 2:
- r, g, b = img[:, :, 0], img[:, :, 1], img[:, :, 2]
- gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
- return gray
- else:
- return img
opencv中内置了两个函数对图像灰度化,即cv2.imread(filaname, cv2.IMREAD_GRAYSCALE)
和cv2.cvColor(src, code[, dst[, dstCn]])
(转换为灰度图时code = cv2.COLOR_BGR2GRAY
)。
图像几何变换又称为图像空间变换,通过平移、转置、镜像、旋转、缩放等几何变换对采集的图像进行处理,用于改正图像采集系统的系统误差和仪器位置(成像角度、透视关系乃至镜头自身原因)的随机误差。此外,还需要使用灰度插值算法,因为按照这种变换关系进行计算,输出图像的像素可能被映射到输入图像的非整数坐标上。通常采用的方法有最近邻插值、双线性插值和双三次插值。
opencv中的几何变换可见,CV学习:OpenCv快速入门(python版)_水果好好吃哦的博客-CSDN博客
增强图像中的有用信息,它可以是一个失真的过程,其目的是要改善图像的视觉效果,针对给定图像的应用场合,有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。
图像增强可分成两大类:频率域法和空间域法。
频率域法把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。
高频图像是指强度变化很多的图像,亮度水平从一个像素到另一个像素变化很快。低频图像可能是亮度比较均匀或变化很慢的图像。
频率域法是一种间接图像增强算法,把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则可增强边缘等高频信号,使模糊的图片变得清晰。
opencv中频率域图像滤波的有关算法见:
【youcans的OpenCV例程300篇】总目录_youcans_的博客-CSDN博客
空间域图像增强技术指在空间域中,通过线性和非线性变换来增强构成图像的像素
增强的方法主要分为点运算算法、形态学运算法、邻域增强算法。
点运算法
点运算算法即灰度级校正、灰度变换(伽马变换、对数增强)和直方图修正等,目的或使图像成像均匀,或扩大图像动态范围,扩展对比度。
opencv中灰度变换与直方图见:
【youcans的OpenCV例程300篇】总目录_youcans_的博客-CSDN博客
形态学运算法
图像处理中的形态学是指基于形状的图像处理操作,以数学形态学为工具从图像中提取表达和描绘区域形状的图像结构信息,还包括用于预处理或后处理的形态学过滤、细化和修剪等。
opencv中形态学图像处理见:
【youcans的OpenCV例程300篇】总目录_youcans_的博客-CSDN博客
邻域增强算法
邻域增强算法分为图像平滑和锐化两种。平滑一般用于消除图像噪声,但是也容易引起边缘的模糊。常用算法有均值滤波、中值滤波。锐化的目的在于突出物体的边缘轮廓,便于目标识别。锐化常用算法有梯度法(如Roberts梯度法)、算子法(Sobel算子和拉普拉斯算子等)、掩模匹配法、统计差值法等常用算法有梯度法、算子、高通滤波、掩模匹配法、统计差值法等。
opencv中空间域图像滤波见:
【youcans的OpenCV例程300篇】总目录_youcans_的博客-CSDN博客
特征提取的英文叫做feature extractor,它是将一些原始的输入的数据维度减少或者将原始的特征进行重新组合以便于后续的使用。简单来说有两个作用:减少数据维度,整理已有的数据特征。
Haar、Gabor、LBP、SIFI、HOG、SURF等算法。
Haar |
Gabor |
LBP |
|
概述 |
Haar特征通常被用来检测图像中的局部特征,如边缘、线和角等。Haar特征是通过在图像中滑动一个固定大小的窗口,并计算窗口内像素的灰度差异来确定的。这些特征通常由矩形区域的亮度差异组成,其中矩形区域可以是水平、竖直或对角线方向的。 |
在计算机视觉中,Gabor滤波器通常被用来检测图像中的纹理和边缘等特征。它可以通过在图像上滑动一个Gabor核来提取特定方向、尺度和频率的特征,从而生成滤波响应图像。Gabor滤波器的参数包括中心频率、方向、尺度和带宽等。 |
LBP(Local Binary Pattern,局部二值模式)是一种用于图像分析和计算机视觉的特征描述符。它可以对图像中的纹理和结构进行描述,并且非常适合于目标检测、人脸识别、纹理分类等应用。 |
优点 |
简单有效、不受光照影响、不受目标大小变化影响、鲁棒性好、可以结合其他方法使用 |
较好的方向选择性、尺度不变性、可以提取细节信息、可以结合其他方法使用 |
计算简单、不受光照变化影响、可以处理局部纹理特征、可以与其他方法结合 |
缺点 |
对目标旋转敏感、计算复杂度高、只适用于灰度图像、对目标变形敏感 |
计算复杂度高、对图像噪声敏感、对光照变化敏感、参数选择困难 |
对噪声敏感、不具备旋转不变性、不能描述全局纹理信息 |
应用场景 |
人脸、人眼检测,车牌检测 |
纹理分析、人脸识别、指纹识别、目标检测 |
图形分类目标检测、人脸识别 |
SIFT |
HOG |
SURF |
|
概述 |
SIFT(Scale-Invariant Feature Transform:尺度不变特性变换)是一种在计算机视觉领域 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。