计算机视觉初接触总结

本文是作者初次接触计算机视觉的总结,介绍了计算机视觉的基本概念,包括图像处理、采样与量化、图像滤波和卷积操作。通过学习,作者认识到计算机视觉在图像识别、自动驾驶等领域的重要应用,并强调了OpenCV在图像处理中的作用。
摘要由CSDN通过智能技术生成

序言:

借此次培训课的机会第一次接触计算机视觉,让我又开启了一扇新的大门,也拓宽了自己的知识面,认识到了很多有意思的东西… 总的来说,amazing!!!借本篇博客记录下此次培训的一些总结和心得。


介绍(为简要概括,细化靠自己)

  • what:就是研究如何让机器,给计算机安上眼睛(照相机)和大脑(算法),让其去认知世界,试图建立能够从图像或者多维数据中获取帮助做一个“决定”的人工智能系统。由此不难想象其应用前景之广泛。
  • for:图像识别,无人汽车,人脸识别,交通事故自主检测,AR,VR,三维重建,工程测绘,图像分割等等等。目前医学方面应用显著。
  • how:与图像处理,模式识别(文字,语音,指纹识别,遥感,医学诊断等),图像理解相关。其中实现图像理解是计算机视觉的终极目标。熟练使用OpenCV(用于图像处理、分析、机器视觉方面的开源函数库) 参考教程OpenCV 3.4.1
  • benefit:对于比赛的你,CV研究各种高深的方向和算法,有广泛的应用场景,结合计算机视觉会有很多有意思的idea;对于就业的你,从事图像处理或者视觉相关的岗位薪资较高;对于读研的你,计算机视觉仍是科研的热门方向。
    CV体系结构

知识小点(纯属自学,如有错误欢迎指正)

  • 图像处理
    1. 相关定义:二维函数f(x,y),其中,x与y是空间坐标,f(x,y)是其幅值
    灰度图像是一个二维灰度(亮度)函数分f(x,y);彩色图像是由三个二维灰度(亮度)函数f(x,y)组成
    灰度图像 彩色图片
    数字图像:由二维像素组成,每一个像素具有一个特定的位置(x,y)和幅值f(x,y),且通常用矩阵来表达
    静态图像:用函数分f(x,y)表示
    动态图像:即视频,用图像函数分f(x,y,t)来表示,即利用时间轴产生的一组图片序列
    2. 目的:改善图片质量(去除噪声,图像增强),提取图像中的特征信息(如其边界和纹理等),进行图像的编码与压缩等。

  • 采样与量化
    相关概念:
    就是把一幅连续图像在空间上分割成M×N个网格,每个网格用一亮度值来表示。一个网格称为一个像素。M×N的取值满足采样定理。
    数字化坐标值称为取样(图像空间坐标(x,y)的数字化);数字化幅度值称为量化(图像函数值f(x,y)的数字化)。
    举例:
    1. 取样
    每个采样点对应于数字化图像中的一个像素。 即采样点越高,采样间隔越小,所得图像像素数越多,空间分辨率高,图像质量好。采样点降低采样点降低
    2. 量化
    给每一个像素的图像数值f(x,y)用一个离散的数字(灰度值)来表示
    由图像可知,量化等级越多,所得图像层次越丰富,灰度分辨率高,图像质量好,但数据量大量化举例
    补充:上采样与下采样
    上采样(放大原图像)几乎都是采用内插值方法,即在原有图像像素的基础上在像素点之间采用合适的插值算法插入新的元素。(对插值算法分类比较混乱,各人有各人的分类算法)具体可自行参考相关文献。
    下采样(所小原图像)对于一幅图像I尺寸为MN,对其进行s倍下采样,即得到(M/s)(N/s)尺寸的得分辨率图像,当然s应该是M和N的公约数才行,如果考虑的是矩阵形式的图像,就是把原始图像s*s窗口内的图像变成一个像素,这个像素点的值就是窗口内所有像素的均值:
    P k = s u m i ∈ w i n ( k ) I i / s 2 P{k}=sum_{i\in win(k)}{I_i}/s^{2} Pk=sumiwin(k)Ii/s2

  • 图像滤波
    理解:保留原有图像的特征条件下对目标图像的噪声进行抑制。
    常用二维滤波器分为低通滤波器(保留低频部分,舍去高频部分,包含均值滤波器和高斯滤波器), 中值滤波器 (去除椒盐噪点), 方向滤波器 (为了求解图像中灰度变化强烈的区域,利用函数一阶导数和二阶导数,属于高通滤波器)

  1. 均值滤波(最常用),去高频,消除图像尖锐噪声,实现图像平滑,模糊等功能,即用每个像素和它周围像素计算出来的平均值替换图像中每个像素。
  2. 高斯滤波器:对图像来说,常用二维零均值离散高斯函数作平滑滤波器,参数σ反应加权系数的标准差,σ越大,高斯滤波器的频带就越宽,对图像的平滑程度就越大。
  3. 中值滤波:即将周围像素和中心像素按顺序排好序以后,取中间值作为其像素。
  • 卷积
    模仿视觉皮层结构机制理解卷积神经网络,它由多个卷积层构成,每个卷积层包含多个卷积核,用这些卷积核从左到右,从上到下依次扫描整个图像,得到称为特征图的输出数据。网络前面的卷积层捕捉图像局部,细节信息,,后面的卷积层用于捕获更复杂,更抽象的信息。经过多个卷积层的运算,最后得到图像在各个不同尺度的抽象表示。(我所理解的卷积核就是所谓的神经元)
  1. 卷积运算(用于图像去噪,增强,边缘检测等问题,还可以提取图像特征等问题)
    利用卷积核矩阵的大小在图像向上滑动(自左向右,自上向下),将图像上各个对应图像元素与该卷积核矩阵进行线性运算,依次计算核中每个元素和其覆盖的图像像素值的乘积并求和,得到的结构就是该位置的新像素值。 下面以Soebel边缘检测算子为例:
    卷积核矩阵为:
    A = [ A 1 A 2 A 3 A 4 A 5 A 6 A 7 A 8 A 9 ] A=\left[ \begin{matrix} A1&A2&A3&\\ A4&A5&A6&\\ A7&A8&A9& \end{matrix} \right] A=A1A4A7A2A5A8A3A6A9
    假设输入图像的矩阵为以B5为中心的3X3子图像为:
    B = [ B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8 B 9 ] B=\left[ \begin{matrix} B1&B2&B3&\\ B4&B5&B6&\\ B7&B8&B9& \end{matrix} \right] B=B1B4B7B2B5B8B3B6B9
    则按照以下方法进行卷积运算得到中心像素:
    A1B1+A2B2+A3B3+A4B4+A5B5+A6B6+A7B7+A8B8+A9*B9
    如果图像矩阵行列数大于其卷积核矩阵则依次自左向右,自上向下即可得到中心像素。
    卷积效果示意图:
    卷积对比
    2.图像去噪(以高斯滤波举例,Sigma=0.4)
    去噪
 void GuassFilter(CvMat *pGrayMat, CvMat* pFilterMat, int nWidth, int nHeight, double dSigma)
{
	int nWidowSize = (int)(1+2*ceil(3*dSigma));  //定义滤波窗口的大小
	int nCenter = (nWidowSize)/2;                //定义滤波窗口中心的索引
	//生成二维的高斯滤波系数
	double* pdKernal = new double[nWidowSize*nWidowSize]; //定义一维高斯核数组
	double  dSum = 0.0;	                                  //求和,进行归一化		
	//利用二维高斯函数
	for(int i=0; i<nWidowSize; i++)
	{
		for(int j=0; j<nWidowSize; j++)
		{
			int nDis_x = i-nCenter;
			int nDis_y = j-nCenter;
			pdKernal[i+j*nWidowSize]=exp(-(1/2)*(nDis_x*nDis_x+nDis_y*nDis_y)
				/(dSigma*dSigma))/(2*3.1415926*dSigma*dSigma);
			dSum += pdKernal[i+j*nWidowSize];
		}
	}
	//进行归一化
	for(i=0; i<nWidowSize; i++)
	{
		for(int j=0; j<nWidowSize; j++)
		{
			pdKernal[i+j*nWidowSize] /= dSum;
		}
	}
	for(i=0; i<nHeight; i++)
	{
		for(int j=0; j<nWidth; j++)
		{
			double dFilter=0.0;
			double dSum = 0.0;
			for(int x=(-nCenter); x<=nCenter; x++)			//行
			{
				for(int y=(-nCenter); y<=nCenter; y++)		//列
				{
					if( (j+x)>=0 && (j+x)<nWidth && (i+y)>=0 && (i+y)<nHeight)	//判断边缘
					{
						double ImageData = cvmGet(pGrayMat ,i+y, j+x);
						dFilter += ImageData * pdKernal[(y+nCenter)*nWidowSize+(x+nCenter)];
						dSum += pdKernal[(y+nCenter)*nWidowSize+(x+nCenter)];
					}
				}
			}
			cvmSet(pFilterMat, i, j, dFilter/dSum);
		}
	}
	delete[]pdKernal;
}

参数说明:
(pGrayMat:待处理图像数组)(/pFilterMat:保存高斯滤波结果)
(nWidth:图像宽度)(nHeight:图像高度)(dSigma:高斯滤波参数,方差)
原图:
原图
效果图:

效果图

  • 高斯模糊(Gaussian Blur)
    定义:高斯模糊,也叫高斯平滑,通常用及降低图片细节层次,即对指定像素和其周围像素进行加权平均来得到最终结果,使用高斯分布作为滤波器。
    正态分布密度函数(一维二维):函数值表示在相应点(x或(x,y))处的像素的权重,或者说在模糊后周围像素分别对目标像素产生多大影响
    一维
    二维
    u为期望,σ为标准差,μ±σ为函数图像的拐点,σ越大曲线越矮越宽,即采样范围越大。在这两个函数中,x,y表示相对于中心像素(0,0)的偏移量(以像素为单位)
    推荐个链接 --> 关于高斯模糊原理及例子
  • 参考链接有关于采样与量化)(关于卷积)(关于去噪
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值