tb_quantize — 2D typed op

• 数据种类:signal → signal

• 调用:fullseye.apply(img, "tb_quantize", a=0.5, b=0.5)(2-D 的模型是一张图 + 两个标量旋钮 a,b∈[0,1])

tb_quantize: input → output

*图为在 128×128 合成输入上实际运行的输出。左为输入,右为输出。点云以俯视散点显示(亮度 = z),一维序列为折线,体数据为沿 z 的最大值投影,视频为中间帧,复数图像为幅值;无法成像的返回值直接显示数值。*

扫描旋钮 a(0.1 / 0.5 / 0.9,另一旋钮取默认):

▸ tb_quantize: 旋钮 a 扫描 (文档网站)

*旋钮 b 不改变输出(实测: 0.1 / 0.5 / 0.9 相同)。*

阶段(前置算子 → 本算子,从左到右):

▸ tb_quantize: 处理阶段 (文档网站)

换别的图像(合成场景 / 照片 / 硬币。上排为输入,下排为对应输出。旋钮取默认):

▸ tb_quantize: 其他输入图像 (文档网站)

用法

给出误差模型的标量量化器(可选抖动)。

> 以下的详细说明为原文 —— 摘要与标题已翻译。

*bits* sets the number of levels L = 2**bits over the signal's own min..max range. *mode* is "round" (mid-tread, unbiased) or "truncate" (floor, the convention PIL's posterize and most fixed-point casts use).

The two differ by more than a rounding convention. With step Delta = range/(L-1) both have error variance Delta**2/12, but truncation also carries a mean of -Delta/2, so its mean square error is

truncate: Delta**2/12 + (Delta/2)**2 = Delta**2/3

round: Delta**2/12

— a factor of 4. Anything that measures a level (not just displays it) must round.

*dither* adds noise before quantising so the error stops being a function of the signal: "tpdf" (triangular, the audio standard — two uniform draws summed, so the error's variance no longer depends on the sample value) or "rpdf" (one uniform draw). Dither raises the total error power but removes the correlation that makes quantisation audible as distortion rather than as hiss. seed fixes the draw so the op stays deterministic.

Applicability. (1) The range is taken from *this* signal, so two signals quantised separately do not share a scale. (2) bits=1 with no dither is a comparator, not a quantiser — the error model does not apply. (3) The error model assumes the signal moves by more than a step between samples; on a flat stretch the error is a constant offset, not noise.

Typed bridge of the 1d op quantize into the 2-D evolution registry: the same implementation, called under the op(v, a, b) convention. a drives bits (default 8); b is unused.

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

在 Studio 中试试

下面的程序已确认可以运行(与图相同的输入)。在 Studio 帮助中,此块会变成按钮,可当场加载并运行。

img_to_signal 0.50 0.50
tb_quantize 0.50 0.50

▸ 载入此流水线  ·  载入并运行

可运行的示例(实际调用该算子并已验证的样例)

下面的示例调用的是底层账本算子 quantize。此桥接算子只是把同一实现适配为 fn(v, a, b) 约定,行为完全相同(只是调用形式不同)。

• poc_cold_chain_excursion — py -3.11 examples/poc_cold_chain_excursion.py

类型可衔接的下一个算子(可接受 signal 作为输入)

identity · tb_create_funct_1d_array · tb_smooth_funct_1d_gauss · tb_smooth_funct_1d_mean · tb_derivate_funct_1d · tb_integrate_funct_1d · tb_zero_crossings_funct_1d · tb_abs_funct_1d

同类别(typed)

tb_points_to_voxel · tb_estimate_point_normals · tb_iss_keypoints · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal · tb_voxel_grid_downsample


*Provenance: ops.py — 2D 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.