当前位置: 首页 > news >正文

嵌入式图像处理(五):整合 —— 从单一帧到完整质量报告

前几篇的工具各自跑各自的每次要手动输命令、记参数、对比输出。太散了。这篇把所有模块拼成一个大号工具——iq_analyzer输入一帧 YUYV一次跑完亮度、曝光、色彩、噪点、清晰度五维分析直接出综合评分。外加 JSON 导出。1. 文件结构六个源文件 一个头文件Makefile 管编译iq_analyzer.h— 四个 report 结构体所有模块共享iq_analyzer.c— main()参数解析 → 读帧 → 调各模块 → 出报告luminance.c— 亮度统计直方图/均值/std/median/曝光color.c— 色彩分析U/V 均值 → 偏色方向noise.c— 噪点评估空间域相邻像素差方差sharpness.c— 清晰度Sobel 3×3 边缘能量新算法report.c— 加权评分 终端输出 JSON 导出typedefstruct{doublemean,stddev;intmedian,min,max,hist[256];doubleover_pct,under_pct;intdyn_range;constchar*status;}LumReport;typedefstruct{doubleu_mean,v_mean;constchar*cast;}ColorReport;typedefstruct{doubley_noise_var,uv_noise_var;constchar*y_level,*uv_level;}NoiseReport;typedefstruct{doubleedge_energy;constchar*level;}SharpReport;分析的对象就是之前拍的那帧——关掉 AWB 和锐化后的原始画面2. 亮度统计和之前 frame_analyzer 不太一样——这里所有统计从直方图算不是从原始像素数组。先建一次 256 桶 histogram后续全是 O(256)/* 均值加权求和 */sum0.0;for(i0;i256;i)sumi*hist[i];r.meansum/total;/* 标准差同样从直方图算 */sum0.0;for(i0;i256;i){doublediffi-r.mean;sumdiff*diff*hist[i];}r.stddevsqrt(sum/total);/* 中位数累加直方图到 halfway */sum0.0;for(i0;i256;i){sumhist[i];if(sumtotal/2){r.mediani;break;}}曝光用累积分布的 P1 和 P99 间距作为动态范围比之前简单的 0-255 范围更鲁棒。3. 偏色检测YUYV 里每 4 字节有 1 个 U 和 1 个 V。遍历取均值后看 UV 偏离 128 的方向和幅度duu_mean-128.0;dvv_mean-128.0;if(fabs(du)3fabs(dv)3)r.castneutral;elseif(dv5)r.castwarm;elseif(dv-5)r.castcool;elseif(du5)r.castmagenta;elseif(du-5)r.castgreen;elser.castslight cast;阈值是试出来的——3 以内肉眼基本看不出偏色5 以上方向明确。4. 噪点评估用最简单的水平相邻像素差方差。值越小说明相邻像素越接近画面越干净for(y_idx0;y_idxh;y_idx){for(x0;xw-1;x){diffy_plane[y_idx*wx]-y_plane[y_idx*wx1];y_sumdiff*diff;y_cnt;}}r.y_noise_vary_sum/y_cnt;UV 噪点用同样逻辑但每 2 行 2 列采样一次——色度通道天然低分辨率全采样没意义。5. 清晰度Sobel 边缘能量这是前面没涉及的新模块。思路很直觉清晰图像的边缘锐利、亮度落差大模糊图像边缘平缓、落差小。Sobel 算子用两个 3×3 核分别测水平和垂直梯度Sobel X: Sobel Y: [-1 0 1] [-1 -2 -1] [-2 0 2] [ 0 0 0] [-1 0 1] [1 2 1]对每个内部像素跳过边界 1px算 gx 和 gy梯度幅值mag sqrt(gx² gy²)全体取均值for(y_idx1;y_idxh-1;y_idx){for(x1;xw-1;x){gx-1*y[(y_idx-1)*w(x-1)]1*y[(y_idx-1)*w(x1)]-2*y[y_idx*w(x-1)]2*y[y_idx*w(x1)]-1*y[(y_idx1)*w(x-1)]1*y[(y_idx1)*w(x1)];gy-1*y[(y_idx-1)*w(x-1)]-2*y[(y_idx-1)*wx]-1*y[(y_idx-1)*w(x1)]1*y[(y_idx1)*w(x-1)]2*y[(y_idx1)*wx]1*y[(y_idx1)*w(x1)];magsqrt(gx*gxgy*gy);summag;count;}}r.edge_energysum/count;edge_energy 15 判 soft 30 判 normal以上 sharp。6. 综合评分五项加权满分 10。亮度占 30%最重要——人眼先看亮度曝光和色彩各 20%噪点和清晰度各 15%lum_sclamp(1.0-fabs(l.mean-120)/80,0.0,1.0);exp_sclamp(1.0-(l.over_pctl.under_pct)/25,0.0,1.0);col_sstrcmp(c.cast,neutral)0?1.0:0.5;noise_sstrcmp(n.y_level,clean)0?1.0:0.5;sharp_sstrcmp(s.level,normal)0?1.0:0.5;score(lum_s*0.30exp_s*0.20col_s*0.20noise_s*0.15sharp_s*0.15)*10;权重和阈值是我自己拍的——没有标准参考纯凭调试感觉。生产中的 ISP 评分系统远比这个复杂但核心思路一样多维打分、加权综合。白平衡加增强后的实际输出 Image Quality Analysis Report LUMINANCE Mean: 169.7 (normal) StdDev: 69.8 Median: 184 Min/Max: 17 / 255 EXPOSURE Over-exposed: 28.0% Dynamic Range: 209 COLOR U Mean: 124.2 Cast: cool NOISE Y Noise Var: 44.2 (heavy) UV Noise Var: 131.4 (heavy) SHARPNESS Edge Energy: 30.3 (sharp) OVERALL SCORE: 3.6 / 107. 完整管线三个工具串成管线原始帧 → auto_wb (Gray World) → image_enhance → iq_analyzer → JSON 报告三步处理后原始帧从偏绿、噪声 24.5 变成白平衡校正 均衡化 Gamma 模糊的综合增强结果full_pipeline.sh一行跑完。完整代码github.com/cjh1230/learn-embedded-linux-video
http://www.gsyq.cn/news/1407088.html

相关文章:

  • 华为韬(τ)定律:一场对热管理行业的“压力测试”
  • 2026年广州GEO服务商推荐榜,这几家靠谱又专业 - 资讯纵览
  • 2026年,程序员的核心竞争力不再是“写代码“——而是“驾驭AI的能力“
  • 霍邱黄金回收2026指南:高性价比变现的底层逻辑 - 奔跑123
  • 2026中山方形条纹圈吸顶灯配件优质厂家盘点:宏盟照明领衔筑牢品质与供货优势 - 资讯纵览
  • 2026年北京沥青路面施工、沥青混凝土供应、二灰集料厂家推荐:适配中小型工程、施工响应快、材料稳定的本地服务商指南 - 海棠依旧大
  • 自动驾驶运动学建模:从自行车模型到控制器设计
  • 保姆级教程:在RK3588开发板上为FPGA编译并部署Xilinx XDMA驱动(ARM64)
  • 【ChatGPT知识问答黄金法则】:20年AI专家亲授5大反直觉提问技巧,92%用户从未用对
  • 考编上岸学员众多的公司,究竟有何独特之处助力考生成功? - 资讯纵览
  • 2026年广州GEO服务公司推荐排行榜TOP5 - 资讯纵览
  • 微信聊天记录永久保存完整指南:WeChatMsg免费工具终极方案
  • 钉钉消息防撤回补丁:告别消息丢失,全面保护重要信息
  • 2026 年6月天津律师权威测评,主攻中高管股权期权估值/隐匿财产挖掘 - 资讯快报
  • 2026年广州GEO推荐排行榜:这5家质量口碑双高 - 资讯纵览
  • 60GHz毫米波无线数据中心:Cayley架构如何颠覆传统网络
  • DankDroneDownloader:终极大疆无人机固件下载工具完整指南
  • 2026年度测评:10款AI面试工具真实体验与选择指南
  • brooks-lint v0.7.0:基于经典软件工程原则的AI代码审查工具
  • 使用Taotoken CLI工具一键配置多平台开发环境与API密钥
  • METADEF 元数据定义 - 算子元数据管理机制
  • 2026年AI智能体监控新选择:TraceHawk与Datadog深度对比
  • 解锁学术创作新思路:paperxie 论文智能撰写功能实用使用指南
  • 异构多集群调度实战:标准化资源评估与亲和性感知算法
  • 如何用ok-ww解放双手:鸣潮自动化战斗终极指南
  • 零基础入门Digital逻辑设计器:5个步骤快速掌握电路仿真
  • BiliDownloader:轻松下载B站视频,打造你的专属离线视频库
  • 基于MCP协议构建本地AI记忆服务器:Wyrm项目实战与原理剖析
  • 学术创作效率升级:paperxie 学术写作模块解锁毕业论文高效撰写模式
  • ShotgunWSD 2.0:基于k-means聚类的无监督词义消歧算法详解