一、改变色彩空间: 1.最常用的颜色转换方法:BGR和GRAY、BGR和HSV 2.对象追踪:给出想要追踪的对象的颜色,就可以提取该对象。需要先将其转换为HSV颜色空间。
二、图像集合变换: 可以实现: 1.缩放(resize) 2.平移、旋转、仿射变换(warpAffine) 3.透视变换(warpPerspective)
三、图像阈值: 1.简单阈值: 用来二分化图像。 2.自适应阈值: 对于有着不同照明条件的图像,用简单阈值明显不太合适,这时可以使用自适应阈值。 3.大津二值化: 在这个方法中可以不给出具体的阈值而是让其自动找到一个合适的阈值。
四、平滑图像 1.平均 通过将图像和盒式滤波器进行卷积来完成的,取内核区域下所有像素的平均值并替换中心元素。我们应该指定内核的宽度和高度。 2.高斯模糊 使用高斯核来替代盒式滤波器,同样指定它的宽度和高度(应为正数和奇数)。还可以指定X和Y方向的标准偏差(?),如果两者都为零则跟根据内核大小自动计算。高斯模糊对于图像去除高斯噪音非常有效。 3.中值模糊 这里,函数cv.medianBlur()取内核区域下所有像素的中值,并将中心元素(?)替换为该中值。这对图像中的椒盐噪声非常有效。有趣的是,在之前的过滤器中,中心元素是新计算的值(可能是原图像中的像素值或新值),但是在中值模糊中,中心元素总是被图像中的某个像素值替换。它有效地降低了噪音。它的内核大小应该是一个正奇数。 4.双边过滤 双边过滤可以解决高斯模糊总会模糊边缘的不足。双边过滤也在空间上采用高斯滤波器,但多了一个用于像素差的函数的高斯滤波器。前者确保只考虑附近的像素进行模糊处理;而后者只考虑那些与中心像素具有相似强度的像素进行模糊处理。因为边缘处的像素会有很大的强度变化,所以它保留了边缘。
五、形态变换 1.侵蚀 内核在图像中滑动,只有当内核区域中的所有像素都为1时,该区域中的一个像素(1或0)才会被认为是1,否则它会被侵蚀(变为0)。即根据内核大小前景物体的边缘会被丢弃(即1变为0,白变黑),具体表现为前景物体的厚度增大或减少,或者是图像中的白色区域变化。 2.扩张 与侵蚀相反,如果内核区域内的至少一个像素为1,则该区域都为1。通常用于侵蚀消除了白噪声后,可以再将其扩张到原来大小,噪音就消失了。 3.opening 先侵蚀再扩张,可用于消除前景物体以外的小白点。 4.closing 先扩张再侵蚀,可用于消除前景物体的小孔或小黑点。 5.形态梯度 生成前景物体的轮廓。 6.top hat 输出原图和opening后的差异。 7.black hat 输出原图和closing后的差异。 8.getStructuringElement 生成圆形、椭圆形或十字形的内核。(长方形可由Numpy创建)
六、Image Gradients(?) 使用Soble、Scharr、Laplacian导数来锐化图像。
七、Canny 边缘检测 这是一个多阶段算法。 1.降噪:由于边缘检测容易受到图像中噪声的影响,因此第一步是使用 5x5 高斯滤波器去除图像中的噪声。 2.寻找图像的强度梯度:然后在水平和垂直方向上使用 Sobel 内核对平滑后的图像进行滤波,以获得水平方向的一阶导数和垂直方向。 3.非最大抑制:在获得梯度幅度和方向后,对图像进行全面扫描以去除可能不构成边缘的任何不需要的像素。为此,在每个像素处,检查像素是否是其邻域中沿梯度方向的局部最大值。 4.迟滞阈值:这个阶段决定哪些所有的边都是真正的边,哪些不是。为此,我们需要两个阈值 minVal 和 maxVal。任何强度梯度大于 maxVal 的边缘肯定是边缘,低于 minVal 的边缘肯定是非边缘,因此丢弃。位于这两个阈值之间的那些根据它们的连通性被分类为边缘或非边缘。如果它们连接到“确定边缘”像素,则它们被认为是边缘的一部分。否则,它们也会被丢弃。
八、图像金字塔(代码?) 在搜索图像中的某些内容时,例如人脸,我们不确定该对象在所述图像中的大小。在这种情况下,我们需要创建一组具有不同分辨率的相同图像并在所有图像中搜索对象。这些具有不同分辨率的图像集称为图像金字塔。 拉普拉斯金字塔是由高斯金字塔形成的。没有专门的功能。拉普拉斯金字塔图像仅类似于边缘图像。它的大部分元素都是零。它们用于图像压缩。拉普拉斯金字塔中的一个级别是由高斯金字塔中的该级别与高斯金字塔中其上层的扩展版本之间的差异形成的。 金字塔的一种应用是图像混合。例如,在图像拼接中,您需要将两张图像堆叠在一起,但由于图像之间的不连续性,它可能看起来不太好。在这种情况下,使用金字塔进行图像混合可为您提供无缝混合,而不会在图像中留下太多数据。
九、模板匹配 模板匹配是一种在较大图像中搜索和查找模板图像位置的方法。为此,OpenCV 附带了一个函数cv.matchTemplate()。它只是将模板图??像滑到输入图像上(如在 2D 卷积中),并在模板图像下比较输入图像的模板和补丁。OpenCV 中实现了几种比较方法。它返回一个灰度图像,其中每个像素表示该像素的邻域与模板匹配的程度。 假设您正在搜索一个多次出现的对象,cv.minMaxLoc()不会为您提供所有位置。在这种情况下,我们将使用阈值。
|