Knowledge Graph
一个图像算法工程师的知识图谱:持续更新中
本文旨在对个人过往的工作经验做一个复盘,整理出一份 图像算法工程师的知识图谱 。利于后续的温故知新与查漏补缺。同时广而告之,便于和同行间进行交流。
编程基础
图像算法工程师作为码农的一个分支,对于编程能力也有着相当的要求。而当今不同的岗位需求对于图像算法工程师也有着截然不同的能力要求。基于笔者有限的工作经验,对于移动端的图像算法所需的基础编程能力做简单的的梳理。
基础能力 | 基础技能 | 学习途径 | 备注 |
---|---|---|---|
系统平台 | Unix | Unix教程 | Ubuntu/WSL2 |
Windows | — | — | |
Android | Android教程 | — | |
NVIDIA Jetson | Jetson教程 | — | |
编程语言 | C/C++ | C/C++教程 | — |
Python | Python教程 | — | |
Matlab | Matlab教程 | — | |
CUDA | CUDA教程 | — | |
CMake | CMake教程 | — | |
代码管理 | Git | Git教程 | — |
Repo | — | — | |
Gerrit | — | — | |
编程文档 | Markdown | — | — |
Doxygen | Doxygen教程 | — | |
LaTex | — | — | |
编程思想 | DesignPattern | 设计模式 | — |
代码重构 | — | — | |
编程工具 | VSCode | VSCode教程 | — |
OpenCV | OpenCV教程 | — | |
ROS | ROS/Catkin教程 | — | |
V4l2 | V4l2教程 | — | |
GStream | GStream教程 | — | |
Docker | Docker教程 | — |
基于上述编程基础能力,应该能独自进行图像算法开发,输出满足以下要求的算法代码/功能:
- 具有一定的兼容能力:
- 兼容不同操作系统:windows|linux|macOS etc.
- 兼容不同的指令架构:x86|x64|arm etc.
- 兼容不同调试版本:release|debug etc.
- 具有一定的版本管理能力:
- 版本定位:Change Id|Commit Id|Git Tag|Build Time etc.
- 版本发布说明:Release Note etc.
- 使用说明文档:ReadMe.md|
xxx -help
etc.
- 具有一定的日志能力(LOG系统):
- 不同等级Log:Fatal|Error|Warning|Info|Debug etc.
- 输出不同位置:CMD终端|文本文件|CSV文件 etc.
- 具有一定的模块化能力:
- 模块满足: 高内聚低耦合
- 注释模块:简单代码自注释,复杂代码有详细流程注释,支持 Doxygen
- 测试模块:具有合格的单元测试能力,以及相应的批处理(shell|python调用)
- 具有一定的工程应用能力:
- 算力:常驻,峰值
- 内存:常驻,峰值
- 耗时:常驻,峰值
- 功耗:常驻,峰值
- 依赖性:依赖库尽量少
编程应用
如果前述 编程基础 是砖头水泥等原材料,那么 编程应用 就是使用这些材料建立高楼大厦的技术能力。没有好的原材料,再高的大楼也可能轰然倒塌;同样的,没有好的技术能力,再好的原材料,也难以平地起高楼。虽然作为图像算法,这些应用例子并不一定是必要的,但是足够优秀的应用都是好的老师,能给我们打开一扇门,树一面旗帜。
应用方向 | 应用技能 | 学习途径 | 备注 |
---|---|---|---|
环境搭建 | 科学上网 | 科学上网 | VPN |
玩转C++ | C++工具 | — | |
玩转NAS | 玩转NAS | — | |
玩转移动机器人 | 玩转移动机器人 | — |
图像基础
基本单元 | 子模块/参数 | 学习途径 | 备注 |
---|---|---|---|
相机模组 | Cover Glass | — | — |
Lens | — | — | |
COMS sensor | CIS | — | |
ISP/DSP | — | — | |
FPC | — | — | |
Lens | 清晰度MTF | — | — |
光圈 | — | — | |
景深 | — | — | |
畸变 | — | — | |
杂散光 | — | ghost/flare/射线杂光/ASAP | |
CMOS Sensor | pixel size | — | — |
active pixels | — | — | |
color filter array | — | — | |
sensitivity | — | — | |
dynamic range | — | — | |
SNR | — | — | |
Image Sensor Processing | AEC/AEDC/AWB/AF | 3A | — |
pipeline | pipeline | — | |
BLC/BPC/FPNC | — | — | |
HDR | HDR | ||
NR | NR | Noise Profile | |
Lens Shading Correction | LSC | — | |
Demosaic | DEM | RGGB/RCCB | |
DRC | DRC | — | |
Gamma | Gamma | — | |
TMO | — | alaw | |
IQA | IQA | Imatest文档 | |
量产用视觉检测方案 | 清晰度算法方案 | — | ISO12233 |
脏污检测方案 | — | — | |
高低照度方案 | — | — | |
Shading标定方案 | — | — | |
补光检测方案 | — | — |
镜头选型
- MIC(Max Image Circle)|FOV|lens架构
- lens list
- MIC|EFL|F/#
- 确认CRA|barrel diameter|景深
- 样品性能确认,holder确认
- 杂光确认
- 轴向视点|FOV确认
Sensor选型
- optical format
- active pixels
- pixel size
- color filter array
- chief ray angle: fill factor|micro-lens
- FSI|BSI|stacked BSI
- Conversion gain|full well charge
- rolling shutter|global shutter
- responsivity|sensitivity
- SNR
- Noise
- Dynamic Range
- Black Level
典型 ISP Pipeline
slin -> bpc -> blc -> rdns -> rhdr -> lsc -> wbc -> demosaic -> ccm -> gamma -> gtm -> csc(rgb2yuv) -> cfc(yuv444 -> yuv422 -> yuv420)
- slin: 分段线性化,采用两个gamma(8个点和256个点)串联
- bpc:坏点校正
- blc:黑电平校正
- rdns:raw域降噪
- rhdr:raw域HDR
- lsc:lens shading correction
- wbc:白平衡校正
- demosaic:去马赛克
- ccm:颜色校正
- gamma:亮度域转变
- gtm:global tone mapping
典型 ISP IP
LSC:要考虑效果,算力(定点化,计算量优化)等
- 求当前pixel距离光心的xy方向偏移量
- 归一化,1/r = (1+frac) * 1 >> (15-exp)
- 旋转校正
- 椭圆伸缩变换校正
- 求欧式距离平方
- 33个点插值求gain
推荐读物
推荐书籍
- 《图像处理、分析与机器视觉》
- 《CCD、CMOS图像传感器基础与应用》
- 《图像传感器应用技术 第三版》
- 《多传感器图像融合技术及应用》
- 《智能CMOS图像传感器与应用》
- 《Image Processing for Embedded Devices》
- 《image sensor and signal processing for digital still cameras》
推荐论文
RS: rolling shutter imaging on the electric grid from two rolling shutters to one global shutter
exposure fusion:a simple and practical alternative to high dynmaic range photograph
NR: drunet|edvr|mctf|vmctf
- review:a comprehensive comparision of multi-dimensional image denoising methods
- fastdvd
- vnlnet
- edvr
- a brief review of real world color image denoising
- benchmarking denoising algorithms with real photographs
- unprocessing images for learned raw denoising
暗光增强
- LLE
- STAR
- LLIM
推荐标准
- mipi: mipi-csi-2 spectification
- ISO12233
- EMVA1288
推荐图像工具
相关资料汇总
精品课程
个人博客
开源项目
商业项目
职场软技能
推荐两篇博文:
参考链接
Unix教程:
Android教程:
Jetson教程:
C/C++教程:
- C++ Language(C++ 11)
- 《C++ Primer 中文版(第 5 版)》学习仓库
- Google 开源项目风格指南——中文版
- Online C++ Compiler
- GoogleTest Primer
Python教程:
CMake教程:
Matlab教程:
CUDA教程:
Git教程:
Doxygen教程:
Docker教程:
OpenCV教程:
ROS/Catkin教程:
- ROS教程
- ROS Tutorials
- Catkin Tutorials
- Catkin Command Line Tools
- image_view
- Roslaunch在大型项目中的使用技巧
- 博客:ROS/C++入门教程
- 博客:ROS教程
设计模式:
- 菜鸟设计模式教程
- 博客:Java设计模式
- 博客:23种经典设计模式(附c++实现代码)
- Github:Cpp-Design-Patterns(liu-jianhao)
- Github:Design Pattern(jaredtao)
V4l2教程:
- V4l教程
- 博客:v4l2l框架分析
- 博客:v4l2l之camera
- 博客:Camera V4L2 驱动层分析
- 博客:V4L2视频驱动框架—v4l2_device管理模块简述
- 博客:Linux下V4L2捕捉画面
GStream教程:
VSCode教程:
科学上网教程:
C++清单:
- C/C++ 入门项目
- callgraph:
玩转nas教程:
- 群辉docker加速
- 大佬的docker镜像
- 群辉VSCodeServer
- bug: Nginx反向代理 VSCode Server
- 安全加密https使用百度云
- 博客1:域名访问NAS
- 博客2:域名访问NAS
玩转移动机器人教程:
- 环境配置
- turtlebot3
- 树莓派
- 安卓手机
COMS sensor:
AEC/AEDC/AWB/AF:
- Auto Exposure Control
- Auto White Balance
- Understanding Light and Color
- Understanding Color Temperature
- Understanding White Balance Control
- Color constancy
- paper: Color Constancy
- 自动白平衡算法
- 自动白平衡算法 AWB
- Computation of Color Experiments
- 灰度世界算法(Gray World Algorithm)和White Patch Retinex算法
- 五种自动白平衡算法
- color_calibration
- Flat-Field and Colour Correction for the Raspberry Pi Camera Module
- Auto Focus
pipeline:
- m19404
- 色彩科学学习笔记
- Color image processing
- Open Image Signal Processor
- camera-pipeline-UI
- 如何深入研究ISP算法?
- Understanding Color and the In-Camera Image Processing Pipeline for Computer Vision
- Understanding ISP Pipeline
- Process Your Images with Style!
- Digital Image Processing ~ Books and Materials by Wilhelm
- 无法抗拒的图像技术
相关网站:
- website: pixls
- website: darktable
- ISP tuning: DevSuite
- Image sensor world
- ISP Image
- Calibration Target
HDR/TMO:
- HDR sensor
- HDR algo
- Deep high dynamic range imaging of dynamic scenes
- HDR关键技术:质量评价技术(续)
- HDR+ Burst Processing Pipeline
- HDR技术浅析
- 《Deep HDR Video from Sequences with Alternating Exposures》
- Robust Patch-Based HDR Reconstruction of Dynamic Scenes
- Deep high dynamic range imaging of dynamic scenes
- 《高动态范围视频图像质量评价》
- TMO
- software
NR:
- How to create camera noise profiles
- Image and video denoising by sparse 3D transform-domain collaborative filtering
LSC:
Demosaic:
DRC:
- Awesome Low Light Image Enhancement
- 《MBLLEN: Low-light Image/Video Enhancement Using CNNs》
- 《Underexposed Photo Enhancement using Deep Illumination Estimation》
- Low-Light Image Enhancement
- STAR-TIP2020
- BIMEF
- Low-light-Image-Enhancement
- DPIR
- qing zhang
- 低光图像处理方案
Gamma:
- 漫谈Gamma(三):数字魔法
- Gamma and Knee
- paper: Improved Knee Transfer Function and Gamma Correction Based Method for Contrast and Brightness Enhancement of Satellite Image
IQA: