图像预处理
内容提要:
- 图像显示与存储原理
- 图像增强的目标
- 点运算:基于直方图的对比度增强
- 形态学处理
- 空间域处理:卷积
- 卷积的应用(平滑、边缘检测、锐化等)
- 频率域处理:傅里叶变换、小波变换
- 应用案例:平滑、边缘检测、CLAHE等
1.图像的显示与储存原理
(1)颜色空间
RGB:越叠加越亮
CMYK:Cyan(青),Magenta(品红),Yellow,Key
HSV:Hue(色调,颜色种类),Saturation(饱和度,色彩的纯度),Value(明度,色彩的明亮度)
(2)颜色存储原理
Gray = R*0.3 + G*0.59 + B*0.11(典型的比例分配)
常见的存储的格式有:bmp, jpg, png, tiff, gif, pcx, tga, exif, fpx, svg, psd, cdr, pcd, dxf, ufo, eps, ai, raw, WMF, webp等
- BMP:采用位映射存储格式,不采用其他任何 压缩,所占用的空间很大。
- JPG:最常见的有损压缩格式,能够将图像压缩 到很小的空间,压缩比可达10:1到40:1之间。
- GIF:基于LZW算法的连续色调的无损压缩格式 ,其压缩率一般在50%左右。
- PNG:是比较新的图像文件格式,能够提供长 度比GIF小30%的无损压缩图像文件
2.图像增强的目标
改善图像的视觉效果;
转换为更适合于人或机器分析处理的形式;
突出对人或机器分析有意义的信息;
抑制无用信息,提高图像的使用价值
常见操作有:平滑、锐化、去噪、对比度增强(灰度调整)
图像处理方法:
3.点运算:直方图均衡化(HE)
直方图均衡化: 实质上是对图像 进行非线性拉伸
重新分配各个灰 度单位中的像素 点数量,使一定 灰度范围像素点 数量的值大致相 等。
直方图均衡的经典算法对整幅图像的像素使用相同的变换,如果图像中包括明显亮的或 者暗的区域,则经典算法作用有限。
自适应直方图均衡化 (AHE)
- 移动模板在原始图片上按特定步长滑动;
- 每次移动后,模板区域内做直方图均衡,映射 后的结果赋值给模板区域内所有点
- 每个点会有多次赋值,最终的取值为这些赋值 的均值。
限制对比度自适应直方图均衡(CLAHE)
AHE会过度放大图像中相对均匀区域的噪音,与普通的自适应直方图均衡相比,CLAHE的不 同地方在于直方图修剪过程,用修剪后的直方图 均衡图像时,图像对比度会更自然。
- 小黑点的灰度直接由映射函数计算得到;
- 粉色区域内点的灰度由映射函数计算而得;
- 绿色区域内点的灰度由相邻2块灰度映射值线性 插值而得;
- 其他区域所有点的灰度由相邻4块的灰度映射值双 线性插值而得
CLAHE算法步骤
1.图像分块,以块为单位;
2.先计算直方图,然后修剪直方图,最后均衡;
3.遍历操作各个图像块,进行块间双线性插值;
4.与原图做图层滤色混合操作。(可选)
4.形态学处理
膨胀是图像中的高亮部分进行膨胀,类似于 领域扩张。
腐蚀是原图的高亮部分被腐蚀,类似于领域 被蚕食。
开运算:先腐蚀再膨胀,可以去掉目标外的孤立点
闭运算:先膨胀再腐蚀,可以去掉目标内的孔
通常,当有噪声的图像用阈值二值化后,所 得到的边界是很不平滑的,物体区域具有一 些错判的孔洞,背景区域散布着一些小的噪 声物体,连续的开和闭运算可以显著的改善 这种情况。
5.空间域处理及其变换
首先明确几个相同表达意思的黑话
卷积=滤波
卷积核 = 卷积模板 = 扫描窗 = 滤波核 = 滤波模板
• 参数解释
• x, y是像素在图片中的位置/坐标
• k, l是卷积核中的位置/坐标 ,中心点的坐标是(0,0)
• f[k, l]是卷积核中在(k, l)上的权重参数
• I[x+k, y+l]是与f[k, l]相对应的图片像素值
• h[x, y]是图片中(x, y)像素的滤波/卷积结果
不同功能需要定义不同函数:
- 平滑/去噪
- 梯度/锐化
- 边缘、显著点、纹理
- 模式检测
边界填充策略
- 补零(zero-padding)
- 边界复制(replication)
- 镜像(reflection)
- 块复制(wraparound)
平滑均值滤波/卷积
特征:3*3,扫描步长:1,边框补0
均值滤波本身存在缺陷,既没有 很好地去除噪声点,也破坏了图 像的细节反而使图像变得模糊
特点: 奇数尺寸 • 3x3,5x5,7x7,2n-1 x 2n-1
• 参数和为:1
import cv2 as cv
import numpy as np
# 均值模糊
def blur_demo(img):
dst = cv.blur(img, (5, 5))
cv.imshow("blur image", dst)
平滑中值滤波/卷积
• 奇数尺寸
• 3x3,5x5,7x7,2n-1 x 2n-1
• 操作原理
• 卷积域内的像素值从小到大排序
• 取中间值作为卷积输出
• 有效去除椒盐噪声
将领域矩阵中的N个像素 进行排序,并将这个矩阵 的中心点赋值为这N个像 素的中值。
import cv2 as cv
import numpy as np
# 中值模糊
def median_blur_demo(img):
dst = cv.medianBlur(img, 5)
cv.imshow("median_blur_demo", dst)
平滑高斯滤波/卷积
• 奇数尺寸
• 3x3,5x5,7x7,2n-1 x 2n-1
• 模拟人眼,关注中心区域
• 有效去除高斯噪声
• 参数
• x, y是卷积参数坐标
• 标准差
越小,关注区域越集中
分解特性(级联高斯)
2D卷积拆分成两个相同的1D卷积
• 列卷积
• 行卷积
降计算
• 2D卷积:KxK次计算
• 2x1D卷积:2K次计算