一、偏振图像分离(核心目标:提取多方向偏振分量)
利用偏振相机的微偏振阵列(如 0°/45°/90°/135° 四方向),将原始成像数据分解为不同偏振方向的单通道图像,需满足 Nyquist 采样定理以避免混叠。
- 通道对齐:通过相机内参校正(畸变校正、像素配准),确保四方向偏振图像像素位置完全对应;
- 噪声抑制:采用高斯滤波(σ=0.8-1.2)或小波阈值去噪,保留偏振信息的同时降低暗电流噪声;
-
数据格式:输出单通道 16 位灰度图,每个通道对应一个偏振方向(记为 I₀、I₄₅、I₉₀、I₁₃₅)。
-
相邻通道的峰值信噪比(PSNR)≥35dB,确保分离后图像无明显错位。
二、图像插值(核心目标:提升偏振图像空间分辨率)
|---------|----------------|----------------|
| 算法类型 | 优势 | 适用场景 |
| 双线性插值 | 计算速度快,边缘平滑 | 实时导航(如无人机) |
| 双三次插值 | 细节保留好,分辨率提升显著 | 高精度导航(如航天器) |
| 导向滤波插值 | 保留偏振边缘特征,抗模糊 | 复杂场景(云层、复杂地形) |
- 以分离后的四方向偏振图为输入,设定插值倍率(通常 2-4 倍,需匹配相机硬件分辨率);
- 插值后进行边缘增强(如 Sobel 算子),避免偏振信息在插值过程中模糊;
- 输出插值后的四方向偏振图像,像素尺寸统一为目标分辨率(如 1920×1080)。
三、偏振角图计算(核心目标:获取像素级偏振方向分布)

- 逐像素代入公式计算,对分母为 0 的像素(I₀=I₉₀),设定 θ=45° 或标记为无效像素;
- 偏振角归一化:将 θ 值映射为 0-255 灰度值(θ=0°→0,θ=180°→255),生成偏振角灰度图;
-
异常值处理:采用 3×3 邻域均值滤波,替换超过 ±15° 偏差的孤立像素(排除噪声干扰)。
-
与标准偏振角校准板(已知偏振方向)对比,误差≤2°。
四、图像形态变换(核心目标:优化偏振角图空间特征)
预处理:腐蚀操作(3×3 矩形结构元素),去除偏振角图中的微小噪声点(面积 < 5 像素);
- 主体增强:膨胀操作(同结构元素),恢复有效区域的连通性;
- 边缘优化:开运算(先腐蚀后膨胀),平滑偏振角突变区域(如天空 - 地面交界);
- 细节保留:顶帽变换,增强弱偏振区域(如薄云覆盖区域)的偏振角特征。
结构元素尺寸根据图像分辨率调整(通常 3×3-5×5),避免过度腐蚀导致有效区域丢失。
五、筛选过滤可用区域(核心目标:排除无效偏振信息区域)
- 偏振度(DoP)阈值:DoP = √[(I₀-I₉₀)² + (2I₄₅-I₀-I₉₀)²]/(2 (I₀+I₉₀)),设定 DoP≥0.15(排除无偏振信息的区域,如强反射地面);
- 灰度方差阈值:计算偏振角图的局部方差(5×5 窗口),方差≥10(排除均匀无特征区域,如纯蓝天);
-
连通性筛选:保留面积≥500 像素的连通区域,排除孤立小区域(噪声干扰)。
-
生成二值掩码图:满足所有指标的区域标记为 1(可用),否则为 0(无效);
-
掩码膨胀:对二值图进行 1 次膨胀操作,填补可用区域内的微小空洞;
- 输出 "偏振角图 + 可用区域掩码" 的叠加数据。
六、计算拟合子午线(核心目标:确定太阳子午线直线参数)
在可用区域内,提取偏振角梯度最大值点:通过 Sobel 算子计算 x/y 方向梯度,选取梯度模值前 30% 的像素作为特征点;
- 特征点聚类:采用 K-means 聚类(K=2),分离太阳子午线两侧的特征点集群。
- 直线拟合算法
- 采用加权最小二乘法:以特征点梯度模值为权重(梯度越大权重越高),拟合直线方程 y = kx + b;
-
鲁棒性优化:剔除残差>3σ 的异常特征点(σ 为残差标准差),迭代拟合直至异常点占比<5%;
-
计算直线与图像水平轴的夹角 α(即太阳子午线方位角的图像映射值);
-
输出拟合直线的斜率 k、截距 b 及置信度(R²≥0.95,确保拟合精度)。
七、处理流程(具体代码后续整理后上传)
1.线程框架图
┌─────────────────────┐
│ 主线程 (main) │
│ 系统初始化 │
└─────────────────────┘
│
┌────────────────────┼─────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌────────────┐
│ Thread 1 │ │ Thread 2 │ │ Thread 3 │
│ 偏振角计算 │───▶│ 伪彩色映射 │───▶ │ 边界检测 │
└─────────────┘ └─────────────┘ └────────────┘
2.**为什么用HSV而非BGR?**
| 特性 | BGR | HSV |
| ----- | ----- | ----- |
| 颜色表示 | 蓝绿红混合 | 色调+饱和度+亮度 |
| 光照鲁棒性 | ❌ 差 | ✅ 好 |
| 颜色分离 | ❌ 困难 | ✅ 简单 |
| 阈值设定 | ❌ 复杂 | ✅ 直观 |
3.**HSV色环示意图:**
90° (绿色)
│
│
180°(红色) ──────┼────── 0° (红色)
│
│
270° (蓝色)
4.**连通域分析示意图:**
原始掩码(多个区域): 过滤后(单个主区域):
┌────────────────────┐ ┌────────────────────┐
│ ●小蓝 ●小蓝 │ │ │
│ │ │ │
│ ██████ 小红● │ │ ██████ │
│ ██████ │ │ ██████ │
│ ██████ ●小红 │ ─▶ │ ██████ ████ │
│ 大蓝区域 ████ │ │ 大蓝区域 ████ │
│ ██████ ████ │ │ ██████ ████ │
│ ██████ 相邻红 │ │ ██████ 相邻红 │
└────────────────────┘ └────────────────────┘
5.**距离变换示意图:**
原始掩码: 距离图:
┌─────┐ ┌─────┐
│██░░░│ │01234 │
│██░░░│ ───▶ │01234 │
│██░░░│ │01234 │
└─────┘ └─────┘
(黑=目标区域) (数字=距离值)
6.**HUBER拟合 vs 最小二乘法:**
| 方法 | 对离群点 | 精度 | 速度 |
|-------------|--------------|------------------------|--------|
| 最小二乘 | ❌ 敏感 | 高(无噪声时) | 快 |
| HUBER | ✅ 鲁棒 | 高(有噪声时) | 中等 |
7.**HUBER vs 最小二乘法损失函数对比:**
损失值
│
│ ╱ 最小二乘(e²增长)
│ ╱
│ ╱
│ ╱
│ ╱ ╱─ HUBER(线性增长)
│ ╱ ╱
│ ╱ ╱
│ ╱ ╱
│╱╱
└────────────▶ 误差e
8.数据流程图
main
│
┌──────────────────────────┼──────────────────────────┐
│ │ │
▼ ▼ ▼
┌────────────────┐ ┌────────────────┐ ┌────────────────┐
│ Thread 1 │ │ Thread 2 │ │ Thread 3 │
│ 偏振角计算 │ │ 伪彩色映射 │ │ 边界检测 │
├────────────────┤ ├────────────────┤ ├────────────────┤
│ 输入: │ │ 输入: │ │ 输入: │
│ 灰度图 │ │ 偏振角图 │ │ 伪彩色图 │
│ CV_8U │ │ CV_32F │ │ CV_8UC3 │
├────────────────┤ ├────────────────┤ ├────────────────┤
│ 处理流程: │ │ 处理流程: │ │ 处理流程: │
│ 1. 通道分离 │ │ 1. 归一化 │ │ 1. BGR→HSV │
│ 2. 高斯滤波 │ │ 2. 反转 │ │ 2. 颜色掩码 │
│ 3. 通道插值 │ │ 3. JET映射 │ │ 3. 腐蚀膨胀 │
│ 4. 偏振计算 │ │ │ │ 4. 连通域 │
│ │ │ │ │ 5. 距离变换 │
│ │ │ │ │ 6. 边界检测 │
│ │ │ │ │ 7. 直线拟合 │
│ │ │ │ │ 8. 绘制结果 │
├────────────────┤ ├────────────────┤ ├────────────────┤
│ 输出: │ │ 输出: │ │ 输出: │
│ 偏振角图 │───────▶│ JET伪彩色图 │───────▶│ 掩码+边界点 │
│ CV_32F │ │ CV_8UC3 │ │ CV_8UC3 │
└────────────────┘ └────────────────┘ └────────────────┘