文章目录
- 前言
- 一、通用目的
- 1.1 数据标准化
- 目的
- 实现
- 1.2 噪声抑制
- 目的
- 实现
- 高斯滤波
- 中值滤波
- 双边滤波
- 1.3 尺寸统一化
- 目的
- 实现
- 1.4 数据增强
- 目的
- 实现
- 1.5 特征增强
- 目的
- 实现:
- 边缘检测
- 直方图均衡化
- 锐化
- 二、分领域预处理
- 2.1 传统机器学习(如SVM、随机森林)
- 2.1.1 特点
- 2.1.2 预处理重点
- 灰度化
- 二值化
- 形态学操作
- 特征工程
- 2.2 深度学习(如CNN、Transformer)
- 2.2.1 特点
- 2.2.2 预处理重点
- 通道顺序调整
- 批量归一化
- 高级增强
- 预训练模型适配
- 2.3 其他领域
- 2.3.1医学影像(如MRI、CT)
- 去伪影
- 标准化
- 2.3.2 卫星遥感
- 多光谱融合
- 辐射校正
- 2.3.3 工业检测
- 背景分割
- 高动态范围
- 三、工具与库
- 3.1 OpenCV
- 3.2 PIL/Pillow
- 3.3 scikit-image
- 3.4 TensorFlow
- 3.5 PyTorch
- 四、总结
- 4.1 目标检测
- 4.2 语义分割
- 4.3 低光照场景
前言
图像预处理是机器学习和计算机视觉任务中至关重要的一环,其核心目的是通过对原始图像进行优化和调整,提升模型性能、降低噪声干扰、增强关键特征,并适应模型的输入要求。以下是分领域的详细说明:
一、通用目的
1.1 数据标准化
目的
目的:统一输入数据的分布,避免因像素值范围差异(如0-255或0-1)导致模型训练不稳定。
实现
#归一化到 [0, 1]
image_normalized = image / 255.0
#标准化(均值中心化 + 方差归一化)
image_standardized = (image - mean) / std
1.2 噪声抑制
目的
目的:消除图像中的随机噪声(如高斯噪声、椒盐噪声),提升特征提取的鲁棒性。
实现
高斯滤波
高斯滤波:cv2.GaussianBlur()
中值滤波
中值滤波:cv2.medianBlur()
双边滤波
双边滤波:保留边缘的同时去噪,cv2.bilateralFilter()
1.3 尺寸统一化
目的
目的:确保所有输入图像尺寸一致,适配模型输入层(如CNN要求固定尺寸)。
实现
resized_image = cv2.resize(image, (width, height))
1.4 数据增强
目的
目的:通过**几何变换(旋转、翻转、裁剪)或颜色扰动(亮度、对比度调整)**扩充数据集,防止过拟合。
实现
#使用OpenCV或深度学习框架(如TensorFlow的ImageDataGenerator)
flipped = cv2.flip(image, 1) # 水平翻转
rotated = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE)
1.5 特征增强
目的
目的:突出目标区域的关键特征(如边缘、纹理)。
实现:
边缘检测
边缘检测:Sobel算子、Canny算子
直方图均衡化
直方图均衡化:cv2.equalizeHist()(增强对比度)
锐化
锐化:拉普拉斯算子或自定义卷积核
二、分领域预处理
2.1 传统机器学习(如SVM、随机森林)
2.1.1 特点
特点:依赖手工提取特征(如HOG、LBP、颜色直方图)。
2.1.2 预处理重点
灰度化
灰度化:减少计算量,cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
二值化
二值化:cv2.threshold()(如文档OCR任务)
形态学操作
形态学操作:腐蚀、膨胀(去除小斑点或连接断裂区域)
特征工程
特征工程:提取统计特征(均值、方差)或结构特征。
2.2 深度学习(如CNN、Transformer)
2.2.1 特点
特点:端到端学习特征,但依赖大量数据和标准化输入。
2.2.2 预处理重点
通道顺序调整
通道顺序调整:适配框架要求(如TensorFlow的HWC格式或PyTorch的CHW格式)。
批量归一化
批量归一化:在数据加载阶段统一处理(如torchvision.transforms.Normalize)。
高级增强
高级增强:MixUp、CutMix等基于混合样本的策略。
预训练模型适配
预训练模型适配:输入需与预训练数据分布一致(如ImageNet的均值方差)。
2.3 其他领域
2.3.1医学影像(如MRI、CT)
去伪影
去伪影:消除扫描过程中的运动伪影或设备噪声。
标准化
标准化:使用Z-score或直方图匹配**(不同设备间的数据一致性**)。
2.3.2 卫星遥感
多光谱融合
多光谱融合:合并不同波段的图像(如红外与可见光)。
辐射校正
辐射校正:消除大气干扰。
2.3.3 工业检测
背景分割
背景分割:提取ROI(如产品表面缺陷检测)。
高动态范围
高动态范围(HDR):处理过曝或欠曝区域。
三、工具与库
3.1 OpenCV
OpenCV:基础操作(滤波、几何变换、颜色空间转换)。
3.2 PIL/Pillow
PIL/Pillow:简单的图像增强(缩放、裁剪)。
3.3 scikit-image
scikit-image:高级滤波和特征提取(如局部二值模式)。
3.4 TensorFlow
TensorFlow:tf.image模块
3.5 PyTorch
PyTorch:torchvision.transforms
四、总结
图像预处理的选择需结合具体任务:
4.1 目标检测
目标检测:可能更关注多尺度输入和颜色增强。
4.2 语义分割
语义分割:需保留空间信息,避免过度下采样。
4.3 低光照场景
低光照场景:需Retinex算法或深度学习去噪(如AutoEncoder)。
通过合理设计预处理流程,可显著提升模型泛化能力和收敛速度。