gray op• 数据种类:image → image
• 调用:fullseye.apply(img, "banding_map", a=0.5, b=0.5)(2-D 的模型是一张图 + 两个标量旋钮 a,b∈[0,1])

*图为在 128×128 合成输入上实际运行的输出。左为输入,右为输出。点云以俯视散点显示(亮度 = z),一维序列为折线,体数据为沿 z 的最大值投影,视频为中间帧,复数图像为幅值;无法成像的返回值直接显示数值。*
扫描旋钮 a(0.1 / 0.5 / 0.9,另一旋钮取默认):
▸ banding_map: 旋钮 a 扫描 (文档网站)
*旋钮 b 不改变输出(实测: 0.1 / 0.5 / 0.9 相同)。*
换别的图像(合成场景 / 照片 / 硬币。上排为输入,下排为对应输出。旋钮取默认):
▸ banding_map: 其他输入图像 (文档网站)
*第 4 列是彩色 (H,W,3) 输入。此算子能正确处理颜色而不跨通道(不把颜色通道当作第三个空间轴卷积)。*
返回可见色阶断层(色带)的位置。a 为位数,b 为窗口。
阶跃“可见”的条件是 3 个条件同时成立,本 op 把这 3 个依次相乘。
1. 落在步长网格上 —— 值位于 k*Δ 的网格上。未经量化的图像没有色带(浮点噪声在这一步被去掉)。
2. 窗口内恰好变化 1 个步长 —— 窗口内最大与最小之差(peak-to-peak)为 Δ 的 1 倍。既不是 0 倍(平坦),也不是 2 倍以上(真正的轮廓)。
3. 是稀疏的线 —— 阶跃以沿等高线的细线形式出现。若大范围一齐响应,那不是阶跃,而是抖动或细密的纹样。
a 是量化的比特数 1〜8(若输入已量化,则指定其级数)。b 是窗口的大小(3〜9 像素)。
做成这 3 级的理由(实测):只用 peak-to-peak 判定时,白噪声中 41.7 % 的像素、有序抖动后的图像中 97.7 % 的像素被判为“阶跃”—— 因为局部 ptp 只要碰巧等于 Δ 就满足条件。条件 1 去掉噪声,条件 3 去掉抖动。在量化到 3-bit 的斜坡上,7.0 %(即阶跃线本身)被保留下来。
适用条件:(1) 输入的比特数弄错就完全不起作用 —— 不清楚时先用 effective_bit_depth 测量。(2) 输入只要经过一次平滑插值、重采样,条件 1 就会失效(偏离网格)。若要测量阶跃,应作用于刚量化后的图像。
• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。
• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。
• 算法的正典(作者、年份)与用途见上面的族使用指南。
下面的程序已确认可以运行(与图相同的输入)。在 Studio 帮助中,此块会变成按钮,可当场加载并运行。
banding_map 0.50 0.50
• gallery2d_gray_arith — py -3.11 examples/gallery2d_gray_arith.py
image 作为输入)identity · gaussian · mean_box · bilateral · unsharp · median · min_filter · max_filter
gray)gamma · quantize_uniform · quantize_lloyd_max · quantization_error · dither_ordered · dither_floyd_steinberg · companding_mu_law · invert
*Provenance: ops.py — 2D 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.