IPCam 3917 isp 模块图: 信号处理路径模块: Crop:裁剪模块,用于裁剪图像的特定区域 BLC:黑电平补偿(Black level Correction) DPC: 坏点校正(Defect Pixel Correction) 2DNR: 2D降噪(2D Noise Reduction) GE: 边缘增强(Gain Enhancement) 3DNR & GE:3D降噪和增益增强 AE Short/Long Gain:自动曝光短/长时间增益控制 HDR Fusion:高动态范围图像融合,合并不同曝光的图像 镜头校正模块: Circle Lens Shading:圆形镜头阴影校正 Grid Lens Shading:网格镜头阴影校正 色彩处理模块: YUV to RGB:YUV色彩空间转换为RGB INTP:demosaic颜色插值, 从raw格式转换到rgb格式 CCM:色彩校正矩阵(Color Correction Matrix) RGB Gamma:RGB伽马校正 WDR:宽动态范围(Wide Dynamic Range)处理 YUV处理模块: YUV420 To YUV422:YUV色彩格式转换 YUV422 To YUV444:YUV色彩格式转换 RGB2YUV444:RGB转YUV444格式 Global Curve:全局曲线调整 UV Tune & UVS:UV通道调整和UV抑制 统计和分析模块: AF Statistics:自动对焦统计数据 AE Short/Long Statistics:自动曝光短/长时间统计数据 Raw Statistics:原始图像统计数据...

1 min

libisp api: global api: rts_av_isp_init/cleanup rts_av_isp_start/stop rts_av_isp_get_status rts_av_isp_register/unregister/get_algo rts_av_isp_bind/unbind_algo rts_av_isp_register/unregister/get/check_sensor rts_av_isp_bind/unbind_sensor rts_av_isp_register_iq mipi out api: rts_av_isp_set_mipiout rts_av_isp_get_mipiout v4l2 control: rts_isp_v4l2_query_ctrl rts_isp_v4l2_query_menu rts_isp_v4l2_g_ctrl rts_isp_v4l2_s_ctrl rts_isp_v4l2_query_ext_ctrl rts_isp_v4l2_g_ext_ctrls rts_isp_v4l2_s_ext_ctrls rts_isp_v4l2_try_ext_ctrls sensor: private mask: 3A Setting: 3A Statis: IQ tuning: other: struct isp_core { struct isp_mod_hash_table hash; struct isp_notify notify; struct v4l2_ctrl_handler ctrl_handler; struct isp_statis statis; struct isp_iq iq; int initialized:1; int running:1; }; hash: hash table, 用来保存 modules. notify: ctrl_hander: statis: iq: initialized: isp_core_init() 之后置 1....

2 min

Chapter 2 Terminology Lane: 单向物理传输 lane, 2(D-PHY) or 3(C-PHY) wire interface for clock or data transmission. Virtual channel: 逻辑层面的概念,每个虚拟通道的数据彼此独立,在 lane 上交错发送,包含标识信息,指明属于哪个外设/通道。 Chapter 7 Physical Layer 有两种 physical layer,D-PHY 和 C-PHY, transmitter 和 receiver 需要一致。 7.1 D-PHY Physical Layer option D-PHY 由多条单向的 data lanes 和一条 clk lane。 对于 clk lane, transmitter 和 receiver 必须实现 continuous clock,non-continuous clock 是可选的。 continuous clk: 保持在 high-speed mode. non-continuous clk: 在两笔数据包之间进入 LP-11 state. 7.2 C-PHY Physical Layer option Chapter 9 Low Level Protocol Features:...

2 min

v4l-ctl media-ctl media-ctl.c -p: 打印 device topology $ media-ctl -p --print-dot: 输出 graphviz DOT 格式图形描述。 # 将输出保存到文件并转换为图像 $ media-ctl --print-dot > topology.dot $ dot -Tpng topology.dot -o topology.png -e: 指定某个 entity name, 打印属于哪个 device $ media-ctl -e rtsisp_video0 /dev/video0 --get-v4l2 or --get-format: 查看某个 pad 的格式 # 使用entity ID $ media-ctl --get-v4l2 0:1 # entity 0的pad 1 $ media-ctl --get-v4l2 5:0 # entity 5的pad 0 # 使用entity 名称 $ media-ctl --get-v4l2 '"sensor":1' # 名为"sensor"的entity的pad 1 $ media-ctl --get-v4l2 '"isp":0' # 名为"isp"的entity的pad 0 -r: reset all links to inactive...

2 min

Syntax --- title: Bank example --- classDiagram class BankAccount BankAccount : +String owner BankAccount : +Bigdecimal balance BankAccount : +deposit(amount) BankAccount : +withdrawal(amount) classDiagram class BankAccount BankAccount : +String owner BankAccount : +Bigdecimal balance BankAccount : +deposit(amount) BankAccount : +withdrawal(amount) Define a class class label classDiagram class Animal["Animal with a label"] class Car["Car with *! symbols"] Animal --> Car classDiagram class Animal["Animal with a label"] class Car["Car with *! symbols"] Animal --> Car Define members of a class classDiagram class BankAccount{ +String owner +BigDecimal balance +deposit(amount) +withdrawal(amount) } classDiagram class BankAccount{ +String owner +BigDecimal balance +deposit(amount) bool +withdrawal(amount) int } 区别 attributes 和 methods 的方法是,带()的是 methods。...

2 min

Syntax ->> 同步消息,-)异步消息。 sequenceDiagram Alice->>John: Hello John, how are you? John-->>Alice: Great! Alice-)John: See you later! sequenceDiagram Alice->>John: Hello John, how are you? John-->>Alice: Great! Alice-)John: See you later! Participants sequenceDiagram participant Alice participant Bob Bob->>Alice: Hi Alice Alice->>Bob: Hi Bob sequenceDiagram participant Alice participant Bob Bob->>Alice: Hi Alice Alice->>Bob: Hi Bob Actors actor 会有一个人物的标志。 sequenceDiagram actor Alice actor Bob Alice->>Bob: Hi Bob Bob->>Alice: Hi Alice sequenceDiagram actor Alice actor Bob Alice->>Bob: Hi Bob Bob->>Alice: Hi Alice Aliases sequenceDiagram participant A as Alice participant J as John A->>J: Hello John, how are you?...

2 min

Lab >>> print('Go') Go HW Q1 A Plus Abs B python3 ok -q a_plus_abs_b --local def a_plus_abs_b(a, b): if b < 0: f = sub else: f = add return f(a, b) Q2 Two of Three python3 ok -q two_of_three --local 返回三个数中最小的两个数。先取 min(i, j)得到较小的一个数,在从 min(max(i, j), k)中得到第二小的数。 def two_of_three(i, j, k): return min(i, j)**2 + min(max(i, j), k)**2 Q3 Largest Factor python3 ok -q largest_factor --local 返回能被整除的最大数。从 1 到 n 遍历,如果 n%i==0 即能够整除,返回最大值。...

1 min

Lab Q1 Short Circuiting >>> True and 13 13 >>> False or 0 0 >>> not 10 False >>> print(3) or "" # 首先会打印3,再打印“” 3 "" Q2 High-order Function ...

1 min

Lab Q1 WWPD: Lists & Ranges python3 ok -q lists-wwpd -u --local >>> list(range(3, 6)) [3,4,5,6,7,8] >>> range(3, 6) range(3,6) >>> range(4)[-1] 3 Q4 WWPD: List Comprehensions >>> [[1] + s for s in [[4], [5, 6]]] [[1, 4], [1, 5, 6]] Q8 Making Onions HW Q1 Num Eights 计算 n 中 8 出现的次数。 def num_eights(n): """Returns the number of times 8 appears as a digit of n. >>> num_eights(3) 0 >>> num_eights(8) 1 >>> num_eights(88888888) 8 >>> num_eights(2638) 1 >>> num_eights(86380) 2 >>> num_eights(12345) 0 >>> num_eights(8782089) 3 """ if n == 0: return 0 return num_eights(n // 10) + (1 if n % 10 == 8 else 0) Q2 Digit Distance 递归计算 n 各位差的总和。...

4 min

Lab 检查所有得分: python3 ok --score --local Q1: WWPD: List-Mutation python3 ok -q list-mutation -u --local >>> s = [9, 7, 8] >>> a, b = s, s[:] # s[:] 是 s 的浅拷贝 >>> s = [3] >>> s.extend([4, 5]) >>> a [9, 7, 8] 注意在 s 重新赋值后, a 和 s 不指向同一位置了. 初始状态: s —-> [9,7,8] a —-> [9,7,8] (和 s 指向同一个对象) b —-> [9,7,8] (独立的副本) 执行 s = [3] 后: s —-> [3] a —-> [9,7,8] (保持不变) b —-> [9,7,8] (保持不变)...

6 min