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

推荐标准

推荐图像工具

  1. FastStoneImageViewer
  2. ImageJ
  3. YUVView
  4. 7yuv
  5. irfanview

相关资料汇总

精品课程

个人博客

开源项目

商业项目


职场软技能

推荐两篇博文:

  1. 5W1H8C1D分析法
  2. 3C方案设计法

参考链接

Unix教程:

  1. Linux beginner
  2. 菜鸟Linux教程
  3. 菜鸟Shell教程
  4. 博客:阮老师的SSH入门
  5. Github: Learn Vim
  6. 博客:文本三剑客教程
  7. 博客:windows上安装WSL2

Android教程:

  1. 《自拍教程45》Python adb实时监控Logcat日志

Jetson教程:

  1. NVIDIA Jetson Linux

C/C++教程:

  1. C++ Language(C++ 11)
  2. 《C++ Primer 中文版(第 5 版)》学习仓库
  3. Google 开源项目风格指南——中文版
  4. Online C++ Compiler
  5. GoogleTest Primer

Python教程:

  1. 菜鸟Python3教程
  2. Python官方入门指南(中文)
  3. 从零开始学习PYTHON3讲义

CMake教程:

  1. CMake Tutorial
  2. An Introduction to Modern CMake
  3. 博客:CMake编译目标

Matlab教程:

  1. 菜鸟Matlab教程

CUDA教程:

  1. 博客:一文详解OpenCV中的CUDA模块
  2. 博客:CUDA编程入门极简教程

Git教程:

  1. 菜鸟Git教程
  2. 博客:廖雪峰Git教程

Doxygen教程:

  1. Doxygen Manual

Docker教程:

  1. 菜鸟Docker教程
  2. docker安装

OpenCV教程:

  1. OpenCV
  2. 博客:linux下编译安装

ROS/Catkin教程:

  1. ROS教程
  2. ROS Tutorials
  3. Catkin Tutorials
  4. Catkin Command Line Tools
  5. image_view
  6. Roslaunch在大型项目中的使用技巧
  7. 博客:ROS/C++入门教程
  8. 博客:ROS教程

设计模式:

  1. 菜鸟设计模式教程
  2. 博客:Java设计模式
  3. 博客:23种经典设计模式(附c++实现代码)
  4. Github:Cpp-Design-Patterns(liu-jianhao)
  5. Github:Design Pattern(jaredtao)

V4l2教程:

  1. V4l教程
  2. 博客:v4l2l框架分析
  3. 博客:v4l2l之camera
  4. 博客:Camera V4L2 驱动层分析
  5. 博客:V4L2视频驱动框架—v4l2_device管理模块简述
  6. 博客:Linux下V4L2捕捉画面

GStream教程:

  1. Tutorials
  2. GStream中文教程

VSCode教程:

  1. 博客:VSCode+X11
  2. code server

科学上网教程:

  1. vpn工具:clash
  2. vpn工具:Qv2ray

C++清单:

  1. C/C++ 入门项目
    1. 新手清单
    2. 推荐工具
    3. 静态检查工具总结
    4. ClangFormat
    5. clang-tidy
    6. UML类图学习
  2. callgraph:
    1. callgraph: doxygen
    2. callgraph: linux tool
    3. callgraph: vscode extension
    4. callgraph: using LLVM

玩转nas教程:

  1. 群辉docker加速
  2. 大佬的docker镜像
  3. 群辉VSCodeServer
  4. bug: Nginx反向代理 VSCode Server
  5. 安全加密https使用百度云
  6. 博客1:域名访问NAS
  7. 博客2:域名访问NAS

玩转移动机器人教程:

  1. 环境配置
    1. WSL2配置ROS
    2. WSL2 ROS网络通讯
  2. turtlebot3
    1. office
    2. 手柄控制
  3. 树莓派
    1. 4B安装ROS
  4. 安卓手机
    1. ROS发布IMU和Video
    2. 博客1:安卓平台跑ORB
    3. 博客2:安卓平台跑ORB
    4. VideoIMUCapture-Android
    5. Phoenix

COMS sensor:

  1. 非常难得的 CMOS sensor 工作原理的深入技术科普
  2. Basic principles of image sensors
  3. Github:EMVA1288

AEC/AEDC/AWB/AF:

  1. Auto Exposure Control
    1. 知乎:PID控制算法原理
    2. PID控制算法原理
    3. PID调试步骤(附口诀)
    4. Understanding Auto Exposure Control
    5. DXOMARK:如何测试相机的视频影像性能质量
  2. Auto White Balance
    1. Understanding Light and Color
    2. Understanding Color Temperature
    3. Understanding White Balance Control
    4. Color constancy
    5. paper: Color Constancy
    6. 自动白平衡算法
    7. 自动白平衡算法 AWB
    8. Computation of Color Experiments
    9. 灰度世界算法(Gray World Algorithm)和White Patch Retinex算法
    10. 五种自动白平衡算法
    11. color_calibration
    12. Flat-Field and Colour Correction for the Raspberry Pi Camera Module
  3. Auto Focus
    1. Understanding Auto Focus

pipeline:

  1. m19404
  2. 色彩科学学习笔记
  3. Color image processing
  4. Open Image Signal Processor
  5. camera-pipeline-UI
  6. 如何深入研究ISP算法?
  7. Understanding Color and the In-Camera Image Processing Pipeline for Computer Vision
  8. Understanding ISP Pipeline
  9. Process Your Images with Style!
  10. Digital Image Processing ~ Books and Materials by Wilhelm
  11. 无法抗拒的图像技术

相关网站:

  1. website: pixls
  2. website: darktable
  3. ISP tuning: DevSuite
  4. Image sensor world
  5. ISP Image
  6. Calibration Target

HDR/TMO:

  1. HDR sensor
    1. HDR sensor 原理介绍
    2. 浅析HDR拍照构想(4)号称永不过曝的完美方案?神奇的余数相机
    3. 再次科普讨论:HDR高动态范围背后的技术
    4. HDR imaging(3)—-split/sub pixel 技术
    5. Quad Bayer sensors
    6. Quad-Bayer Camera Sensors For Better Photos
    7. SENSOR HDR技术的发展与思考
  2. HDR algo
    1. Deep high dynamic range imaging of dynamic scenes
    2. HDR关键技术:质量评价技术(续)
    3. HDR+ Burst Processing Pipeline
    4. HDR技术浅析
    5. 《Deep HDR Video from Sequences with Alternating Exposures》
    6. Robust Patch-Based HDR Reconstruction of Dynamic Scenes
    7. Deep high dynamic range imaging of dynamic scenes
    8. 《高动态范围视频图像质量评价》
  3. TMO
    1. Tone mapping进化论
    2. Understanding ISP Pipeline - Tone Mapping
    3. Tone-Mapped Image Quality Assessment
    4. HDR中tone mapping operator的设计参考
    5. TMQI: Tone Mapped Image Quality Index
    6. Gradient Domain High Dynamic Range Compression
    7. L1L0_TM-CVPR2018
  4. software
    1. Luminance HDR

NR:

  1. How to create camera noise profiles
  2. Image and video denoising by sparse 3D transform-domain collaborative filtering

LSC:

  1. Lens shading correction 的四种方法
  2. 图像暗角阴影去除算法
  3. Shading_Correction

Demosaic:

  1. Color Filter Array
  2. Demosaicing
  3. github: demosaicing
  4. ISP算法简述与逻辑实现-demosaic

DRC:

  1. Awesome Low Light Image Enhancement
  2. 《MBLLEN: Low-light Image/Video Enhancement Using CNNs》
  3. 《Underexposed Photo Enhancement using Deep Illumination Estimation》
  4. Low-Light Image Enhancement
  5. STAR-TIP2020
  6. BIMEF
  7. Low-light-Image-Enhancement
  8. DPIR
  9. qing zhang
  10. 低光图像处理方案

Gamma:

  1. 漫谈Gamma(三):数字魔法
  2. Gamma and Knee
  3. paper: Improved Knee Transfer Function and Gamma Correction Based Method for Contrast and Brightness Enhancement of Satellite Image

IQA:

  1. 图像质量评价
  2. MTF
  3. CIE
  4. 如何定义图像的质量?
  5. sharpness
  6. imatest

Knowledge Graph
https://howlee1203.github.io/2023/09/30/Knowledge-Graph/
Author
how.lee
Posted on
September 30, 2023
Licensed under