图像cv常用操作原理和方法说明
灰度、平滑、滤波、仿射变化、形态学
BORDERTYPE 边填充
- 边扩展时填充值的方式
- cv.BORDER_DEFAULT 等同于BORDER_REFLECT_101
- 可通过cv.copyMakeBorder查看效果
灰度变化
- 作用
- 如果拍照时曝光不足或曝光过度,照片会灰蒙蒙的或者过白,这实际上是因为对比度太小、输入图像亮度分量的动态范围较小造成的
- 图像处理最基本的方法之一,灰度变换可使图像动态范围加大、图像对比度增强、图像清晰、特征明显,是图像增强的重要手段
- 改善图像的质量,使图像能够显示更多的细节,提高图像的对比度
- 有选择地突出图像感兴趣的特征,或者抑制图像中不需要的特征。
- 可以有效地改变图像的直方图分布,使像素的分布更为均匀
- 方法
- 线性灰度变化
- 分段线性灰度变化
- 非线性灰度变化
- 对数函数变化
- 对数(函数)变换扩展图像中的低灰度区域、压缩图像中的高灰度区域,能够增强图像中暗色区域的细节
- 压缩图像灰度值的动态范围
- 幂律函数变换(伽马变换)
- 主要用于图像的校正,根据参数γ来修正图像中灰度过高(γ>1)或者灰度过低(γ<1)的内容。
- 对数函数变化
灰度化
- 方法
- 加权平均值法
- 经验公式 D=0.299×R+0.587×G+0.114×B 可用位运算加速
- 取最大值法
- 求平均值法
- 加权平均值法
直方图均衡化 equalization
- 直方图均衡化是一种常见的增强图像对比度的方法,可以增强局部图像的对比度,在数据较为相似的图像中的作用更加明显
- cv.equalizeHist 灰度图全局均衡化
- cv.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8)) 限制对比度自适应均衡化
全局均衡化
- HE (Histogram Equalization)
- 计算图像个灰度等级cdf累积分布概率函数
- cdf乘以level做为映射后的等级
- 原图形根据原像素值值在cdf中索引得到转换后的像素值
自适应均衡化(局部性质)
- AHE (Adaptive Histogram Equalization)
- 自适应–即根据图像的局部性质进行处理
- 每个区域内在像素点最小最大之前均匀分布?
- 划分多个窗口,每个窗口大小(W,W)和影响区域大小(A,A)每次移动步长A,例当W=64,A=32时,就是每次根据64
64的窗口计算直方图CDF,对窗口中间3232的大小区域进行变化,然后再移动步长32继续进行计算 - 问题
- 会出现块状不连续的现象,如32*32的块状区域
- 图内会出现马赛克现象,因为当W*W内像素点近似一样时,得到的CDF会是一种跳跃曲线,图像被过度增强,一些噪声被过度放大
限制对比度自适应均衡化(局部性质)
- CLAHE (Contrast Limited Adaptive Hitogram Equalization)
- 基于自适应改进,
- 限制直方图分布,当某个灰度级超过阈值进行裁剪,超过部分平均分配到各个灰度级,这样CDF不会有梯度出现剧烈变化情况
- 阈值可以使用像素点频数或者占总像素比例
- 使用双线性插值方法合并分块转换后的数据
- 非边界点每个会找到4个临近窗口分别计算cdf和映射后的像素值,使用双线性插值得到最终映射值
- 限制直方图分布,当某个灰度级超过阈值进行裁剪,超过部分平均分配到各个灰度级,这样CDF不会有梯度出现剧烈变化情况
- 可用代码
- cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
自适应局部区域伸展均衡化
- LRS (Adaptive Contrast Enhancement Using Local Region Stretching)
- 根据灰度级别区域进行均衡化
- 统计图像直方图,按照灰度级划分为三个灰度区间,使得三个区间内像素点数量近似相等,然后在这三个区间内分别进行直方图均衡化,最后合并