1 颜色空间转换
1.1. OpenCV有超过150种进行颜色空间转换的方法,最常用BGR与GRAY/HSV转换
1.2. HSV:Hue色调,Saturation饱和度,Value明度,HSV比GBR更容易表示特定颜色
1.3. 函数:cv2.cvtColor()
1.4. cv2.inRange()可根据阈值,生成特定颜色的掩模
2 几何变换
2.1. 扩展缩放:cv2.resize()
2.2. 平移/旋转:cv2.warpAffine() + 2x3移动矩阵
2.3. 旋转矩阵:cv2.getRotationMatrix2D()=>构建旋转矩阵
2.4. 仿射变换矩阵:cv2.getAffineTransform()=>构建仿射变换矩阵2x3
2.5. 透视变换矩阵:cv2.getPerspectiveTransform()=>3x3透视变换矩阵
2.6. 透视变换:cv2.warpPerspective()+ 3x3移动矩阵,常用于图像矫正
2.7. 仿射变换可保证物体形状平直性和平行性,透视不能保证平行性,仿射是透视特例
3 图像阈值
3.1. 简单阈值:cv2.threshold()
3.2. 自适应阈值:cv2.adaptiveThreshold()
3.3. Otsu’s二值化:大津法,最大类间方差法,该算法返回最优阈值,不适合非双峰图像
4 图像平滑
4.1. 与一维信号一样,我们也可以对2D图像实施低通滤波器(LPF)来去除噪声、模糊图像,使用高通滤波器(HPF)找到图像的边缘。
4.2. 卷积操作:cv2.filter2D() + 卷积核
4.3. 图像模糊(图像平滑)使用LPF来实现。OpenCV提供了四种模糊技术:
4.3.1 平均:平均值代替中心元素=》cv2.blur() 和cv2.boxFilter()
4.3.2 高斯模糊:卷积核换成高斯核=》cv2.GaussianBlur(),自己也可以构造高斯核:cv2.getGaussianKernel()
4.3.3 中值模糊:中值代替中心元素=》cv2.medianBlur()
4.3.4 双边滤波:同时考虑空间高斯权重(确保邻域像素对中心点有影响)和灰度值相似权重(确保只有与中心点灰度值相近的才会用来做模糊运算),边界处灰度值变化大,不会被模糊掉,保持边界清晰=》cv2.bilateralFilter()
5 形态学转换
5.1. 前景为白色,背景为黑色。两个基本形态学操作为:腐蚀和膨胀
5.2. 腐蚀:卷积核沿图像滑动,若卷积核对应图像所有像素为1,则中心元素就保持原像素值,否则变为0(白色变少,黑色变多)=》cv2.erode()
5.3. 膨胀:与腐蚀相反,与卷积核对应的原图像的像素值