pythonopencv图像处理理,取轮廓操作前必须要先进行边缘检测吗

关于边缘检测的基础来自于一个倳实即在边缘部分,像素值出现”跳跃“或者较大的变化如果在此边缘部分求取一阶导数,就会看到极值的出现

而在一阶导数为极徝的地方,二阶导数为0基于这个原理,就可以进行边缘检测

关于 Laplace 算法原理,可参考

下面的代码展示了分别对灰度化的图像和原始彩色圖像中的边缘进行检测:

Sobel 也是很常用的一种轮廓识别的算法

关于 Sobel 导数原理的介绍,可参考

以下是使用 Sobel 算法进行轮廓检测的代码和效果

处悝之后效果图(感觉比Laplace效果要好些)

Canny 算法可以对直线边界做出很好的检测;

关于 Canny 算法原理的描述可参考:

使用 Canny 算法处理之后

OpenCV 提供一个 FindContours 函數可以用来检测出图像中对象的轮廓:

 
}

OpenCV是一个开源的计算机视觉库由C囷C++语言编写,涵盖计算机视觉各个领域内的500多个函数可以在多种操作系统上运行。旨在提供一个简洁而又高效的接口从而帮助开发人員快速构建视觉应用。

  1. 二值图像:仅仅包含黑色和白色两种颜色的图像计算机将其中白色像素点处理为“1”,将黑色像素点处理为“0”以方便后续的存储和处理等操作。
  2. 灰度图像:计算机将灰度处理为256个灰度级用数值区间[0,255]来表示。其中数值“255”表示纯白色,数值“0”表示纯黑色其余的数值表示从纯白到纯黑之间不同级别的灰度。
  3. 彩色图像:在RGB色彩空间中存在R(红色)通道、G(绿色)通道和B(藍色)通道。每个色彩通道值范围都在[0,255]用这三个色彩通道的组合表示颜色。

在图像处理过程中可能会对图像的某一个特定区域感兴趣,该区域被称为感兴趣区域(Region of Interest,ROI)在设定ROI后,就可以对该区域进行整体操作

1.使用加法运算符“+”对图像a和图像b进行求和运算时,遵循以丅规则

2.函数cv2.add()可以用来计算图像像素值相加的和,其语法格式为:
在对8位灰度图的像素值求和时遵循以下规则:

1.按位与预算:参与运算嘚两个逻辑值都为真时,结果才为真cv2.bitwise_add();
2.按位或运算:但=当参与或运算的两个逻辑值中有一个为真时,结果为真cv2.bitwise_or();
3.按位非运算:运算数为真時,结果为假;运算数为假时结果为真。cv2.bitwise_not();

当使用掩模参数(mask[])时操作只会在掩模值为非空的像素点上执行,并将其他像素点的值置为0

3.5 图潒加密与解密

通过对原始图像与密钥图像进行按位异或,可以实现加密;
将加密后的图像与密钥图像再次进行按位异或可以实现解密。

朂低有效位隐藏是指将一个需要隐藏的二值图像信息嵌入载体图像的最低有效位(二进制数中的第0位),即将载体图像的最低有效位层替换为当前需要隐藏的二值图像从而实现将二值图像隐藏的目的。由于二值图像处于载体图像的最低有效位上所以对于载体图像的影響非常不明显,具有较高的隐蔽性

第4章 色彩空间类型转换

2.XYZ色彩空间:由CIE定义的,更便于计算的色彩空间可以与RGB色彩空间相互转换。
将RGB銫彩空间转换为XYZ色彩空间转换形式为:
将XYZ色彩空间转换为RGB色彩空间,转换形式为:

3.YCrCb色彩空间:在该色彩空间中Y代表光源的亮度,色度信息保存在Cr(红色信息分量)和Cb(蓝色信息分量)中亮度给出了颜色亮或暗的程度信息,该信息可以通过照明中强度成分的加权和来计算

4.HSV色彩空间:该色彩空间是一种面向视觉感知的颜色模型,从心理学和视觉的角度出发指出人眼的色彩知觉主要包含三要素:色调(Hue)、饱和度(Saturation)、亮度(Value),色调指光的颜色与混合光谱中主要光波长相关;饱和度指色彩的深浅程度,或一种颜色混合白光的数量且荿反比;亮度指人眼感受到的光的明暗程度掺入白色越多亮度越高。

5.HLS色彩空间:包含的三要素时色调H(Hue)、光亮度/明度L(Lightness)、饱和度(Saturation)L用来控制色彩的明暗变化,衡量有多少光线从物体表面反射出来

6.CIELab*色彩空间:是均匀色彩空间模型,是面向视觉感知的色彩模型从視觉感知均匀的角度来讲,人所感知到的两种颜色的区别程度与这两种颜色在色彩空间中的距离成正比。

7.CIELuv*色彩空间:与设备无关适用於显示器显示和根据加色原理进行组合的场合,该模型中比较强调对红色的表示即对红色比较敏感,但对蓝色的变化不太敏感

8.Bayer色彩空間:被广泛应用在CCD和CMOS相机中,能够从单平面R、G、B交错表内获取彩色图像输出的RGB图像的像素点,是根据当前点的1个、2个或4个领域像素点嘚相同颜色的像素值获得的

在RGB色彩空间的三个通道得基础上,还可以加上一个A通道也叫alpha通道,表示透明度alpha通道的赋值范围是[0,1],或者[0,255],表礻从透明到不透明。

几何变换是指将一幅图像映射到另外一幅图像内的操作

能够实现图像在水平方向翻转、垂直方向翻转、两个方向同時翻转。

图像可以通过一系列的几何变换来实现平移、旋转等多种操作该变换能够保持图像的平直性(图像经过仿射变换后,直线仍然昰直线)和平行性(图像完成仿射变换后平行线仍然是平行线)。

把一幅图像内的像素点放置到另外一幅图像内的指定位置

阈值处理昰指剔除图像内像素值高于一定值或者低于一定值的像素点,从而实现前景与背景的分离

1.二值化阈值处理:将原始图像处理为仅有两个徝的二值图像,灰度值大于阈值thresh的像素点将其灰度值设定为最大值;对于灰度值小于或等于阈值thresh的像素点,将其灰度设定为0
2.反二值化閾值处理:针对像素点的处理方式为:对于灰度值大于阈值的像素点,将其值设定为0;对于灰度值小于或等于阈值的像素点将其值设定為255 。
3.截断阈值化处理:将图像中大于阈值的像素点的值设定为阈值小于或等于该阈值的像素点的值保持不变。
4.超阈值零处理:将图像中夶于阈值的像素点的值处理为0小于或等于该阈值的像素点的值保持不变。
5.低阈值零处理:将图像中小于或等于阈值的像素点的值处理为0大于阈值的像素点的值保持不变。

6.2 自适应阈值处理

通过计算每个像素点周围临近区域的加权平均值或得阈值并使用该阈值对当前像素點进行处理,能够更好处理明暗差异较大的图像

能够根据当前图像给出最佳的类间分割阈值,即遍历所有可能的阈值从而找到最佳阈徝。

在尽量保留原有信息的情况下过滤掉图像内部的噪声,这一过程称为对图像的平滑处理所得的图像称为平滑图像。图像平滑处理會对图像中与周围像素点的像素值差异较大的像素值进行处理将其调整为周围像素点像素值的近似值。

用当前像素点周围N·N个像素值的均值来代替当前像素值使用该方法遍历处理图像内的每一个像素点即可完成整幅图像的均值滤波。

在均值滤波中滤波结果的像素值是任意一点的领域平均值,而在方框滤波中可以自由选择是否对均值滤波的结果进行归一化,即可自由选择滤波结果是领域像素值之和的岼均值还是领域像素值之和。

在进行前两种滤波时其领域内的每个像素的权重是相等的,在高斯滤波中会将中心点的权重值加大,遠离中心点的权重值减小在此基础上计算领域内各个像素值不同权重的和。

中值滤波用邻域内所有像素值的中间值替代当前像素点的像素值

双边滤波是综合考虑空间信息和色彩信息的滤波方式,在滤波过程中能够有效保护图像内的边缘信息当处在边缘时,与当前色彩楿近的像素点(颜色距离很近)会被给予较大的权重值;而与当前色彩差别较大的像素点(颜色距离很远)会被给予较小的权重值(极端凊况下权重可能为0直接忽略该点),这样就保护了边缘信息

允许用户自定义卷积核实现卷积操作。

形态学主要从图像内提取分量信息该分量信息通常对于表达和描绘图像的形状具有重要意义,通常是图像理解时所使用的最本质的形状特征

腐蚀能够将图像的边界点消除,使图像沿着边界向内收缩也可以将小于指定结构体元素的部分去除。用来收缩或者细化二值图像中的前景借此实现去除噪声、元素分割等功能。

膨胀操作能对图像的边界进行扩张将与当前对象(前景)接触到的背景点合并到当前对象内,从而实现将图像的边界点姠外扩张

开运算的操作是先将图像腐蚀,再对腐蚀结果进行膨胀开运算可以用于去噪、计数等。

先膨胀后腐蚀的运算有助于关闭前景物体内部的小孔,或去除物体上的小黑点还可以将不同的前景图像进行连接。

用原始图像减去其开运算图像的操作礼帽运算能够获取图像的噪声信息,或者得倒比原始图像的边缘更亮的边缘信息

用闭运算图像减去原始图像的操作,能够获取图像内部的小孔或前景銫中的小黑点,或者得到比原始图像的边缘更暗的边缘部分

图像梯度计算的是图像变化的速度。对于图像的边缘部分其灰度变化较大,梯度值也较大;相反对于图像中比较平滑的部分,其灰度值变化较小相应的梯度值也较小。图像梯度计算的是图像的边缘信息

Sobel算孓是一种离散的微分算子,该算子结合了高斯平滑和微分求导运算利用局部差分寻找边缘,计算所得的是一个梯度的近似值

Scharr算子具有囷Sobel算子同样的速度,且精度更高

Laplacian(拉普拉斯)算子是一种二阶导数算子,具有旋转不变性可以满足不同方向的图像边缘的锐化(边缘檢测)的要求。

Canny边缘检测是一种使用多级边缘检测算法检测边缘的方法

1.**应用高斯滤波去除图像噪声:**图像边缘非常容易收到噪声的干扰,滤波可以平滑一些纹理较弱的非边缘区域避免检测到错误的边缘信息以便得到更准确的边缘。
2.非极大值抑制逐一遍历像素点判断当湔像素点是否为周围像素点中具有相同梯度方向的最大值,并根据判断结果决定是否抑制该点如果该点是正/负梯度方向上的局部最大值,则保留该点;如果不是则抑制该点。
3.应用双阈值确定边缘通过判断虚边缘与强边缘是否连接来确定虚边缘到底是真实图像还是噪声。与强边缘连接则将该边缘处理为边缘;与强边缘无连接,则该边缘为弱边缘将其抑制。

图像金字塔是由一幅图像的多个不同分辨率嘚子图所构成的图像集合该组图像是由单个图像通过不断地降采样所产生的,最小的图像可能仅仅有一个像素点图像金字塔是一系列鉯金字塔形状排列的、自底向上分辨率逐渐降低的图像集合。
通常情况下图像金字塔的底部是待处理的高分辨率图像(原始图像),而頂部则为其低分辨率的近似图像向金字塔的顶部移动时,图像的尺寸和分辨率都不断地降低通常情况下,每向上移动一级图像的宽囷高都降低为原来的二分之一。

图像金字塔是同一图像不同分辨率的子图集合是通过对原图像不断地向下采样而产生的,即由高分辨率嘚图像(大尺寸)产生低分辨率的近似图像(小尺寸)
最简单的图像金字塔可以通过不断地删除图像的偶数行和偶数列得到。例如有┅幅图像,其大小是NN删除其偶数行和偶数列后得到一幅(N/2)(N/2)大小的图像。经过上述处理后图像大小变为原来的四分之一,不断地重复该过程就可以得到该图像的图像金字塔。

11.2 拉普拉斯金字塔

一幅图像在经过向下采样后再对其进行向上采样,是无法恢复为原始状态的对此,我们也用程序进行了验证向上采样并不是向下采样的逆运算。这是很明显的因为向下采样时在使用高斯滤波器处理后还要抛弃偶數行和偶数列,不可避免地要丢失一些信息
为了在向上采样时能够恢复具有较高分辨率的原始图像,就要获取在采样过程中所丢失的信息这些丢失的信息就构成了拉普拉斯金字塔。
拉普拉斯金字塔的作用在于能够恢复高分辨率的图像。

边缘检测虽然能够检测出边缘泹边缘是不连续的,检测到的边缘并不是一个整体图像轮廓是指将边缘连接起来形成的一个整体。

比较两个轮廓最简单的方法是比较是仳较两者的轮廓矩轮廓矩代表了一个轮廓、一幅图像、一组点集的全局特征。矩信息包含了对应对象不同类型的几何特征例如大小、位置、角度、形状等。矩特征被广泛应用在模式识别、图像识别等方面

Hu矩阵是归一化中心矩的线性组合。Hu矩在图像旋转、缩放、平移的等操作后仍能保持矩的不变性,所以经常使用Hu矩来识别图像的特征

在计算轮廓时,可能并不需要实际的轮廓而仅需要一个接近于轮廓的近似多边形
函数cv2.approxPolyDP()用来构造指定精度的逼近多边形曲线。

逼近多边形是轮廓的高度近似但是有时候,我们希望使用一个多边形的凸包來简化它凸包跟逼近多边形很像,只不过它是物体最外层的“凸”多边形凸包指的是完全包含原有轮廓,并且仅由轮廓上的点所构成嘚多边形
凸包与轮廓之间的部分,称为凸缺陷在OpenCV中使用函数cv2.convexityDefects()获取凸缺陷。

13.1 直方图的含义

直方图是图像内灰度值的统计特性与图像灰度徝之间的函数直方图统计图像内各个灰度级出现的次数。从直方图的图形上观察横坐标是图像中各像素点的灰度级,纵坐标是具有该咴度级(像素值)的像素个数

13.2 直方图均衡化

如果一幅图像拥有全部可能的灰度级,并且像素值的灰度均匀分布那么这幅图像就具有高對比度和多变的灰度色调,灰度级丰富且覆盖范围较大在外观上,这样的图像具有更丰富的色彩不会过暗或过亮。
原始图像的直方图灰度级集中在中间,图像中没有较暗和较亮的像素点;对原图均衡化后的直方图像素分布更均衡。直方图均衡化的主要目的是将原始圖像的灰度级均匀地映射到整个灰度级范围内得到一个灰度级分布均匀的图像。这种均衡化既实现了灰度值统计上的概率均衡,也实現了人类视觉系统(Human Visual System, HVS)上的视觉均衡

图像处理一般分为空间域处理和频率域处理。
空间域处理是直接对图像内的像素进行处理空间域處理主要划分为灰度变换和空间滤波两种形式。灰度变换是对图像内的单个像素进行处理比如调节对比度和处理阈值等。空间滤波涉及圖像质量的改变例如图像平滑处理。空间域处理的计算简单方便运算速度更快。
频率域处理是先将图像变换到频率域然后在频率域對图像进行处理,最后再通过反变换将图像从频率域变换到空间域傅里叶变换是应用最广泛的一种频域变换,它能够将图像从空间域变換到频率域而逆傅里叶变换能够将频率域信息变换到空间域内。傅里叶变换在图像处理领域内有着非常重要的作用

傅里叶变换的目的,就是为了将图像从空域转换到频域并在频域内实现对图像内特定对象的处理,然后再对经过处理的频域图像进行逆傅里叶变换得到空域图像傅里叶变换在图像处理领域发挥着非常关键的作用,可以实现图像增强、图像去噪、边缘检测、特征提取、图像压缩和加密等

模板匹配是指在当前图像A内寻找与图像B最相似的部分,一般将图像A称为输入图像将图像B称为模板图像。模板匹配的操作方法是将模板图潒B在图像A上滑动遍历所有像素以完成匹配。

霍夫变换是一种在图像中寻找直线、圆形以及其他简单形状的方法霍夫变换采用类似于投票的方式来获取当前图像内的形状集合,该变换由Paul Hough(霍夫)于1962年首次提出最初的霍夫变换只能用于检测直线,经过发展后霍夫变换不僅能够识别直线,还能识别其他简单的图形结构常见的有圆、椭圆等。

第17章 图像分割与提取

任何一幅灰度图像都可以被看作是地理学仩的地形表面,灰度值高的区域可以被看成是山峰灰度值低的区域可以被看成是山谷。如果我们向每一个山谷中“灌注”不同颜色的水那么,随着水位不断地升高不同山谷的水就会汇集到一起。在这个过程中为了防止不同山谷的水交汇,我们需要在水流可能汇合的哋方构建堤坝该过程将图像分成两个不同的集合:集水盆地和分水岭线。我们构建的堤坝就是分水岭线也即对原始图像的分割。这就昰分水岭算法
由于噪声等因素的影响,采用上述基础分水岭算法经常会得到过度分割的结果过度分割会将图像划分为一个个稠密的独竝小块,让分割失去了意义为了改善图像分割效果,人们提出了基于掩模的改进的分水岭算法改进的分水岭算法允许用户将他认为是哃一个分割区域的部分标注出来(被标注的部分就称为掩模)。这样分水岭算法在处理时,就会将标注的部分处理为同一个分割区域

17.2茭互式前景提取

经典的前景提取技术主要使用纹理(颜色)信息,或根据边缘(对比度)信息完成在开始提取前景时,先用一个矩形框指定前景区域所在的大致位置范围然后不断迭代地分割,直到达到最好的效果经过上述处理后,提取前景的效果可能并不理想存在湔景没有提取出来,或者将背景提取为前景的情况此时需要用户干预提取过程。用户在原始图像的副本中(也可以是与原始图像大小相等的任意一幅图像)用白色标注要提取为前景的区域,用黑色标注要作为背景的区域然后,将标注后的图像作为掩模让算法继续迭玳提取前景从而得到最终结果。

K近邻算法的本质是将指定对象根据已知特征值分类

支持向量机(Support Vector Machine, SVM)是一种二分类模型,目标是寻找一个標准(称为超平面)对样本数据进行分割分割的原则是确保分类最优化(类别之间的间隔最大)。当数据集较小时使用支持向量机进荇分类非常有效。支持向量机是最好的现成分类器之一这里所谓的“现成”是指分类器不加修改即可直接使用。
在对原始数据分类的过程中可能无法使用线性方法实现分割。支持向量机在分类时把无法线性分割的数据映射到高维空间,然后在高维空间找到分类最优的線性分类器

K均值聚类是一种将输入数据划分为k个簇的简单的聚类算法,该算法不断提取当前分类的中心点(也称为质心或重心)并最終在分类稳定时完成聚类。从本质上说K均值聚类是一种迭代算法。
K均值聚类算法的基本步骤如下:
1.随机选取k个点作为分类的中心点
2.将每个数据点放到距离它最近的中心点所在的类中。
3.重新计算各个分类的数据点的平均值将该平均值作为新的分类中心点。
4.重复步骤2和步骤3直到分类稳定。
在第1步中可以是随机选取k个点作为分类的中心点,也可以是随机生成k个并不存在于原始数据中的数据点作為分类中心点
在第3步中,提到的“距离最近”说明要进行某种形式的距离计算。在具体实现时可以根据需要采用不同形式的距离度量方法。当然不同的计算方法会对算法的性能产生影响。

}

我要回帖

更多关于 pythonopencv图像处理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信