尧图精选

燃油喷雾图像处理:直方图分割与Kalman滤波的锥角测量实践

🕒 发布时间:2026/9/17 11:42:51 📁 来源:尧图网络
简介一份燃油喷雾图像宏观特性参数测量算法优化及Matlab_GUI程序实现的毕业论文PDF面向内燃机喷雾研究、图像处理算法及Matlab界面开发方向的本科生或研究生。论文基于高速摄影法获取的喷雾图像通过灰度直方图分布提出目标分割算法与OTSU法等常见阈值分割算法对比可有效保护油束边缘同时考虑油束对称性与均匀性设计喷雾锥角测量方法并将所得锥角变化曲线与Naber定义进行对比验证了该方法更符合广安博之喷雾锥角公式拟合曲线收敛性和误差更优。噪声抑制方面采用先获取边界数据再滤波的思路借助SPSS线性回归对比中值滤波、均值滤波与Kalman滤波最终选用回归性更高、误差更小的Kalman滤波。全文共1个PDF文件压缩包大小2.84MB内容涵盖喷雾图像直方图分析、最小二乘拟合、锥角变化曲线对比以及Matlab_GUI程序实现并包含完整的中英文摘要、目录与章节论述方便直接阅读和引用。已有204人学习适合需要系统梳理喷雾图像处理算法优化流程和Matlab_GUI设计方法的读者。1. 燃油喷雾图像处理先把宏观特性测量的难点讲透燃油喷雾宏观特性参数的测量卡点从来不在实验台架而在图像处理那一长串环节。高速摄影拍回的喷雾图像背景全黑、油束占比小、边缘灰度又低直接用 OTSU 一类全局阈值分割边缘薄掉一层算出的锥角偏大、贯穿距离偏短。这篇论文拆开看很有价值先按直方图分布设计目标分割算法保住边缘再把油束对称性写进锥角定义边界数据用 Kalman 滤波处理最后封装成 Matlab GUI 程序。适合做喷雾可视化、数字图像处理方向毕业设计或者要复现宏观特性参数测量流程的工程师。2. 油束图像分割直方图分布分析与目标分割算法优化2.1 为什么 OTSU 在喷雾图像上会丢边缘高速摄影法拍出来的油束图像有三个固定特征全黑背景、稀疏噪声点、油束本体。油束区域在整幅图里占比通常不到 15%灰度又和背景拉不开直方图呈现背景主峰加前景缓坡的单峰拖尾形态而不是教科书里理想的双峰结构。OTSU 最大化类间方差的前提是两类像素量级接近一旦前景占比过小阈值会被主峰拖向右侧偏低的位置油束两侧那些灰度介于背景和前景区之间的边缘像素被当成背景剔除。边缘薄掉一层后续拟合边界直线时整体内缩锥角偏大、贯穿距离偏短。论文里对比过几组工况这个偏差在低喷射压力下更明显因为这时油束边缘更模糊、过渡带更宽。2.2 基于背景主峰与谷点的目标分割思路论文算法优化的切入点在这里先分析直方图结构再定位分割阈值。思路分三步第一步在低灰度区找背景主峰得到背景灰度基准第二步从主峰右侧寻找直方图第一个低于峰值一定比例的谷点作为前景起始位置第三步以谷点灰度作为阈值低于阈值的像素归为背景高于阈值的保留为油束目标。和 OTSU 相比这个阈值更贴近前景一侧油束边缘的弱信号被保留下来边缘轮廓更完整。% spray_segment.m 基于直方图分布的目标分割 I imread(spray_006.png); Ig im2gray(I); % 转 8 位灰度图 [counts, edges] imhist(Ig); % 256 级灰度直方图 maxCount max(counts(1:128)); % 低灰度区主峰幅值 bgPeakIdx find(counts(1:128) maxCount, 1, first); bgPeak edges(bgPeakIdx); % 背景主峰对应灰度 T bgPeak; for k bgPeakIdx1 : numel(counts) % 从主峰右侧找第一个谷点 if counts(k) 0.1 * maxCount T edges(k); break; end end BW Ig T; % 谷点灰度作为分割阈值 BW imfill(BW, holes); % 孔填充补掉油束内部暗区 BW bwareaopen(BW, 50); % 去掉小于 50 像素的噪声连通域说明三处关键参数。0.1 * maxCount是谷点判定灵敏度调小会让阈值更靠右、多保留弱边缘但噪声点也会进来喷雾图像噪声规律时从 0.1 起调先看 BW 里背景区域的噪点数量再决定。imfill填的是油束内部的孔洞喷雾过程中液滴聚合会产生局部暗区不填充的话后续边缘提取会把内部孔洞当边界。bwareaopen(..., 50)的 50 是像素面积下限取决于图像分辨率和拍摄距离尺寸标定后按每个像素对应的物理面积换算来设。2.3 分割效果对比与参数换用建议评价项OTSU基于直方图分布的目标分割阈值位置偏向背景主峰右肩贴近前景起始谷点油束边缘弱灰度像素大量丢失保留完整边缘平滑小目标占比敏感度高前景占比小时失效低依赖主峰定位计算量一次遍历灰度级一次直方图加一次线性扫描这套方法也不是没有代价。对光照不均或背景存在反光的图像主峰位置会偏移谷点判定需要先做背景估计论文实验条件是全黑暗环境加固定光源主峰非常稳定所以能直接生效。换到其他拍摄环境时建议先跑 imhist 看一眼主峰形态确认是单峰拖尾再套用否则用 OTSU 或自适应阈值更稳。3. 喷雾锥角测量把对称性写进定义的改进方法3.1 Naber 锥角定义的两个盲区目前被采用最多的锥角定义是 Naber 提出的在贯穿距离一半处画水平直线与油束左右边界交于 B、C 两点再和喷孔顶点 A 连成三角形角 BAC 就是锥角。这个定义实现简单但它只用了两个边界交点油束内部的灰度分布、左右两边的形态差异完全不参与计算。论文指出了两个实际问题一是油束中轴线未必与喷孔轴线重合Naber 定义下左右夹角被合并成一个角非对称油束的信息被平均掉了二是锥角对边界定位误差非常敏感边界提取一旦有系统性偏移角 BAC 的误差会被放大。论文拿 Naber 定义绘制的锥角变化曲线和广安博之经验公式对比前者随喷射压差变化的趋势抖动大、收敛性差后者的变化趋势更平稳。3.2 左右分侧夹角与对称率改进做法是把锥角拆成左右两个夹角分别测量再相加。以油束中轴线为界左侧边界与中轴线的夹角记为 θ1右侧记为 θ2论文定义的喷雾锥角就是 θ1 与 θ2 之和。非对称油束会在 θ1、θ2 的差值上直接体现出来不用再靠人眼判读。对称性则用一个复合指标 η 量化η (α1/α2) · (M1/M2) · (M1/M2)其中 α 是边界夹角M 是中轴线两侧区域的灰度平均值M 是垂直中轴线方向的一阶微分平均值下标 1、2 分别代表夹角较小侧和另一侧。η 越接近 1说明两侧在形态、液体分布和边缘梯度上越一致。论文还做了灰度梯度处理和渐变颜色图像复原把中轴线两侧的灰度差异可视化对称性评价从定性变成定量。3.3 最小二乘法拟合边界直线求锥角具体计算时中轴线用逐行油束宽度中心点做一次线性拟合得到左右边界线同理先用 polyfit 拟合但剔除贯穿距离一半以下的数据点。近喷嘴区域油束未完全展开边界波动大拟合进去会把斜率带偏。贯穿距离的测量相对直接找到油束最前端像素的轴向坐标乘上标定系数就是毫米值难点在前端雾化区呈稀疏液滴bwareaopen 的面积下限设得太大前端会被误删。% spray_cone_angle.m 边界直线拟合与锥角计算 [H, W] size(BW); rows (1:H); leftEdge nan(H, 1); rightEdge nan(H, 1); for r 1:H idxL find(BW(r,:), 1, first); idxR find(BW(r,:), 1, last); if ~isempty(idxL), leftEdge(r) idxL; end if ~isempty(idxR), rightEdge(r) idxR; end end % 只取贯穿距离 50% 以上的边界点拟合 mask rows 0.5 * H ~isnan(leftEdge) ~isnan(rightEdge); x rows(mask); yL leftEdge(mask); yR rightEdge(mask); pL polyfit(x, yL, 1); % 左边界直线 y k*x b pR polyfit(x, yR, 1); thetaL atand(abs(pL(1))); % 边界与水平轴的夹角 thetaR atand(abs(pR(1))); coneAngle thetaL thetaR; % 论文定义的喷雾锥角polyfit 返回的 p(1) 是直线斜率atand 把斜率转成角度。这里拟合的是轴向距离-边界横向位置曲线斜率本身不是锥角左右两个夹角相加才是。截断比例 0.5 对应 Naber 定义里的半贯穿距离位置也可以改成 0.6 或 0.7近喷嘴区干扰越大截断比例越要往上提但提太高会导致有效拟合点不足。论文还对比了 Radon 正变换直线检测法Radon 对边界不连续更鲁棒但弱边缘会检测出伪直线实际使用中建议 polyfit 做初测、Radon 做交叉验证。对比项Naber 定义论文改进定义边界利用半贯穿距离处两个交点左右边界全程参与拟合对称性不参与计算θ1、θ2 分侧测量并计算对称率 η中轴线隐含假设与喷孔轴线重合拟合得到允许偏移抗边界误差差两点定位误差被放大好多点拟合平均掉随机误差4. 边界数据滤波先取边界再滤波与 Kalman 选型4.1 为什么不在原图上直接滤波常规图像去噪是直接在灰度图上做中值或均值滤波但这套流程刻意跳过了这一步。原因在于滤波会改变像素值油束边缘灰度本来就低滤波窗口一压边缘像素可能被抹到背景灰度以下后续分割出来的边界整体内缩。论文把顺序反过来先分割、先提取边界坐标再对边界坐标序列滤波。边界坐标是一维序列滤波窗口和参数比二维图像好控制得多而且原始图像始终没有被改动实验数据的原始性保留住了。4.2 中值、均值、Kalman 三种滤波的差异对边界坐标序列来说三种滤波器行为差异很明显。中值滤波对孤立毛刺不敏感边界上偶尔出现的离群点会被直接去掉但连续弯曲段会被削平。均值滤波平滑力度最大边界抖动小却会把真实弯曲位置拉偏。Kalman 滤波本质上是动态模型驱动对位置缓慢变化、测量有噪声的边界信号最合适参数调好后既能跟住趋势又不会过度平滑拐角。% kalman_filter_1d.m 一维边界坐标的 Kalman 滤波 function yKf kalmanFilter1D(y, Q, R) N numel(y); X zeros(2, N); % 状态 [位置; 速度] P eye(2); % 初始协方差 A [1 1; 0 1]; % 恒定速度状态转移矩阵 H [1 0]; % 观测矩阵只观测位置 for i 1:N if i 1 X(:,i) A * X(:,i-1); % 预测 P A * P * A Q; % 预测协方差 end K P * H / (H * P * H R); % 卡尔曼增益 X(:,i) X(:,i) K * (y(i) - H * X(:,i)); % 更新 P (eye(2) - K * H) * P; end yKf X(1, :); endQ 和 R 是这套滤波的两个调参旋钮。Q 是过程噪声协方差代表边界位置在相邻行之间变化被信任的程度Q 越大滤波器越相信当前测量跟随越紧噪声也保留越多R 是测量噪声协方差R 越大滤波器越倾向模型预测曲线越平滑。论文实验里 Q 取 0.01、R 取 2 附近边界既平滑又没破坏锥角拐点。换图像分辨率时R 要按边界像素波动幅度重调。提示R 的初值可取边界局部抖动幅值的 12 倍Q 从比 R 小两个数量级起步再按平滑效果微调。4.3 SPSS 线性回归在滤波选型里做了什么三种滤波结果摆在一起肉眼很难判断谁更好论文的做法是引入线性回归量化。对同一组边界数据分别用三种滤波处理再对滤波后的边界点做最小二乘线性拟合用 SPSS 做回归分析。核心指标是决定系数 R² 和残差R² 越高说明边界点越接近一条直线滤波后的边界越干净残差分布越随机、范围越小说明滤波器没有引入系统性偏差。分析报告里 Kalman 滤波的 R² 最高、误差最小所以被选为最终方案。这套逻辑在 Matlab 里可以直接复现不必专门开 SPSS% 用 R^2 量化三种滤波后的边界线性度 yRaw leftEdge(mask); yMed medfilt1(yRaw, 7); yMean movmean(yRaw, 7); yKf kalmanFilter1D(yRaw, 0.01, 2); pMed polyfit(x, yMed, 1); rMed 1 - sum((yMed-polyval(pMed,x)).^2) / sum((yMed-mean(yMed)).^2); pMean polyfit(x, yMean, 1); rMean 1 - sum((yMean-polyval(pMean,x)).^2) / sum((yMean-mean(yMean)).^2); pKf polyfit(x, yKf, 1); rKf 1 - sum((yKf-polyval(pKf,x)).^2) / sum((yKf-mean(yKf)).^2);滤波方法平滑力度边界拐点保持线性回归结果中值滤波中较好连续弯曲被削平中等均值滤波强差拐点被拉偏较低Kalman 滤波可调好参数控制拐点跟随R² 最高、残差最小有个容易踩的坑R² 高不代表一定正确它只说明边界更像直线。如果滤波器把真实弯曲边界硬压成直线R² 反而虚高。所以论文同时对比了锥角变化趋势和广安博之公式的贴合程度滤波方案是在R² 最高和趋势最符合经验公式两项都满足时定下来的。只跑 R² 选型很可能选出过度平滑的那一个。5. Matlab GUI 程序实现把测量链路做成可复现工具5.1 界面模块与数据流论文把整套流程做成了《燃油喷雾宏观特性参数测量》GUI结构上分五个界面主界面负责图像载入和参数设置图像处理界面跑分割、孔填充、连通域滤波锥角区域选取界面让用户交互圈定计算范围锥角计算界面输出 θ1、θ2 和总锥角还单独保留了一个 naber 锥角对比界面拟合菜单栏处理边界拟合和趋势曲线。模块之间用 handles 结构体传递图像数据和中间结果避免重复读盘。5.2 批量测量与结果导出单张图测完只是起点实验通常是一个工况一组序列图。GUI 里把测量函数抽出来用循环批量跑再用 writetable 导出files dir(exp1/*.png); results table(); for i 1:numel(files) I imread(fullfile(files(i).folder, files(i).name)); [theta, S] measureSprayMacro(I, params); % 封装好的测量函数 results [results; table({files(i).name}, theta, S, ... VariableNames, {File,ConeAngle,Penetration})]; end writetable(results, exp1_results.xlsx);5.3 验证技巧用广安博之公式做趋势校验界面跑完数据别直接采信把锥角随喷射压差的变化曲线和广安博之经验公式曲线叠在一起看趋势。广安博之公式把锥角写成气液密度比和喷射条件的函数趋势上锥角随喷射压差增大而增大。论文对比结果是改进定义的锥角曲线比 Naber 定义更贴公式曲线收敛性也更好。你测出来的趋势如果和公式反着走先查两点一是尺寸标定系数是否写错二是分割阈值是否把边缘吃掉了。GUI 里把两条曲线画在同一个 axes 上用不同颜色区分偏差一眼就能看出来。本文还有配套的精品资源点击获取
上一篇/下一篇内容由系统自动关联 返回资讯列表 →