OpenCV Android应用开发学习

一,图像预处理

1,OpenCV

Open Source Computer Vision libarary 开源的计算机视觉库

2,Mat

用来存储图像的自定义对象,该对象保存了行数、列数、数据等能唯一标识该图像的信息,并能在需要的时候重新创建图像。

3,为什么要对图像进行模糊处理?

减少图像计算等操作时间。

4,模糊处理有哪些方法?

滤波,卷积

5,线性滤波的用途?

线性滤波的作用最常见的是降噪。噪声是图像中亮度或色彩信息的随机变化,我们用模糊操作来减少图像中的噪声。

6,什么是核?

数字向量。可以看作沿着像素滑动的窗口,并把计算结果输出给该像素。很多线性滤波算法都利用了称为核kernel的数字向量。

7,卷积的过程是怎样?

将核经过上下及左右两个方向的翻转,再做线性滤波计算。

8,均值模糊

均值模糊是最简单的模糊。它对给定核所覆盖的所有像素计算均值。这种操作所采用的核只是一个所有元素为1的Mat,这说明每一个领域像素都有相同的权值。

9,高斯模糊(GaussianBlur())

高斯模糊是最常用的模糊方法。高斯核是通过高斯函数获得。

10,中值模糊(MedianBlur ())

将核覆盖的像素点按照升序或降序排列,将中值作为锚点像素的最终结果。椒盐噪声是一种在图像中较常见的噪声,该噪声是稀疏分布于整幅图像中的黑色或白色像素点。这一类噪声使用中值滤波去除。

11,什么是锐化?

锐化可以看作一种线性滤波,并且锚点像素有较高的权重,而周围的像素权重较低。

锐化的核要保证所有权值的核等于1,一般中心锚点的权值为较大的正数,其周围相邻像素的权值为负数,以使原始图像中亮度变化频繁的区域中,像素间的亮度差异进一步扩大。

12,膨胀

膨胀是一种将亮区域扩张的方法。膨胀可以用来融合可能被分割的目标。

13,腐蚀

腐蚀是一种将图像中暗区域扩张的方法。腐蚀可以用来去除图像中的噪声。

14,腐蚀和膨胀并不是逆运算。

15,阀值化

阀值化是一种将我们想要图像中分析的区域分割出来的方法。

二,检测图像的基本特征

1,计算机视觉和图像处理的语境中,所提取的信息即特征包括:边缘、直线、圆、椭圆、色块、或轮廓、用户定义形状以及角点等。

2,边缘是什么?

边缘是图像中像素变化明显的点。

3,高斯差分技术(Difference of Gaussian)

1),将给定图像转化为灰度图像。

2),用两个不同的模糊半径对灰度图像执行高斯模糊。

3),将前一步中产生的两幅图像相减(算术减法),得到一幅只包含缘点(即边缘)的结果图像。

4,Canny边缘检测器

最优边缘检测方法。

1),平滑图像:使用合适的模糊半径执行高斯模糊来减少图像内的噪声。

2),计算图像的梯度:计算图像梯度,病将梯度分类为垂直、水平和斜对角。这一步的输出背用于在下一步中计算真正的边缘。

3),非最大值抑制:利用前一步中计算得到的梯度方向,检查某一像素的梯度的正方向和负方向上是否是局部最大值,如果是,则抑制该像素(也就是说,像素不属于边缘)。这是一种边缘细化技术,用最急剧的变化选出边缘点。

4),用滞后阀值化选择边缘:检测某一条边缘是否明显到足以作为最终输出,最后去除所有不够明显的边缘。

5,图像中的点归为以下三类:被抑制点、弱边缘点和强边缘点。

所有灰度梯度值小于低阀值的点被归类为被抑制点,灰度梯度值在低阀值和高阀值之间的点被归类为弱边缘点,灰度梯度值大于高阀值的点被归类为强边缘点。

根据算法,我们忽略所有的被抑制点,它们不会出现在图像的任何边缘上。强边缘点一定属于边缘。对于弱边缘点,我们通过检测其周围的8个点来查看弱边缘点是否与图像中的任何强边缘点相连接。如果在8个点当中包含任意的强边缘点,就把改弱边缘点也算作边缘的一部分。这就是Canny边缘检测。

6,Sobel算子

1),将图像转化为灰度图像。

2),计算水平方向灰度梯度的绝对值。

3),计算垂直方向灰度梯度的绝对值。

4),计算最终的梯度。

7,Harris角点检测

角点是两条边缘的交点或者在局部领域中有多个显著边缘方向的点。

你可能感兴趣的:(OpenCV Android应用开发学习)