ISPPipeline中的定点除法

目录

[0. 目标](#0. 目标)

[1. 最基础的数学恒等式](#1. 最基础的数学恒等式)

[2. 为什么要放大 2ⁿ?](#2. 为什么要放大 2ⁿ?)

[3. 用移位实现除以 2ⁿ](#3. 用移位实现除以 2ⁿ)

[4. 用一个具体数字彻底看懂](#4. 用一个具体数字彻底看懂)

[5. 提高精度:n 取更大](#5. 提高精度:n 取更大)

[6. 数学上的误差来源](#6. 数学上的误差来源)

[7. 最精炼的数学总结](#7. 最精炼的数学总结)

[8. 为什么图像处理必须用这个?](#8. 为什么图像处理必须用这个?)


0. 目标

我们要计算:y=a​/b

但不想做除法,想换成:y≈a×K

也就是:找到一个常数 K,使得 K ≈ 1/b


1. 最基础的数学恒等式

a/b​=a×1/b​

这是整个方法的唯一基石。

只要我们能用某种方式表示 1/b,就能把除法完全变成乘法。


2. 为什么要放大 2ⁿ?

计算机 / 硬件不能直接算小数,只能算整数。

所以我们把 1/b 放大 2ⁿ 倍,变成整数:

于是:

也就是:

这就是最核心公式。


3. 用移位实现除以 2ⁿ

在二进制里:

所以最终变成:

  • ⌊⌋ 表示取整(因为硬件只能存整数)
  • ≈ 是因为取整带来微小误差

4. 用一个具体数字彻底看懂

我们算:100/5​=20

选 n = 8(放大 256 倍)

真实值 20,计算值 19,误差来自取整。


5. 提高精度:n 取更大

n = 16(65536)

K=65536/5​=13107.2⇒13107

100×13107=1310700

1310700≫16=20

完全精确!


6. 数学上的误差来源

只有一个误差源:

即把小数强行变成整数。

n 越大,误差越小:

  • n=8 → 误差最大 1/256
  • n=16 → 误差最大 1/65536
  • n=32 → 几乎无误差

7. 最精炼的数学总结

一句话:倒数放大 → 乘法 → 缩小还原


8. 为什么图像处理必须用这个?

  1. 除法在硬件里是复杂迭代运算,慢
  2. 乘法是单周期并行运算,快
  3. 图像每秒百万像素,必须流水线
  4. 查表法延迟固定,适合 ISP
相关推荐
irislinAmelia2 小时前
缺陷检测AI关键点在哪
人工智能·嵌入式硬件·1024程序员节
Ai-_Man2 小时前
Meta Muse还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·c#·1024程序员节
安托智造2 小时前
MBD:从二维图纸到三维模型的制造革命(下)
大数据·人工智能·制造·mbd
火山引擎开发者社区2 小时前
VeOps 深度调查:让 AI 排障从“能用”走向“可靠”
人工智能
梓豪csd2 小时前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
王中阳Go2 小时前
两个入口答案不一致先别调模型:6 行入口口径对账表(附脚本)
人工智能·后端·python·大语言模型·1024程序员节
武天旭2 小时前
AI安全--AI大模型的隐私保护与法律法规
人工智能·安全
Solange__2 小时前
影视预演怎么用AI生成3D场景?从分镜、Blockout到镜头交付的完整流程
人工智能·游戏·3d·ai·自然语言处理·aigc·游戏策划
冬奇Lab3 小时前
一次 Skill 评测的复盘:我推翻了一份现成的模型选型结论,然后自己造了个评测平台
人工智能·llm·agent
奇树谦3 小时前
朴素贝叶斯(Naive Bayes)详解
机器学习·1024程序员节