tb_companding_mu_law — 2D typed op

資料種類:signalsignal

呼叫:fullseye.apply(img, "tb_companding_mu_law", a=0.5, b=0.5)(2-D 的模型是一張圖 + 兩個純量旋鈕 a,b∈[0,1])

tb_companding_mu_law: input → output

*圖為在 128×128 合成輸入上實際執行的輸出。左為輸入,右為輸出。點雲以俯視散點顯示(亮度 = z),一維序列為折線,體資料為沿 z 的最大值投影,影片為中間影格,複數影像為振幅;無法成像的回傳值直接顯示數值。*

掃描旋鈕 a(0.1 / 0.5 / 0.9,另一旋鈕取預設):

tb_companding_mu_law: knob a sweep (docs site)

掃描旋鈕 b(0.1 / 0.5 / 0.9,另一旋鈕取預設):

tb_companding_mu_law: knob b sweep (docs site)

階段(前置運算子 → 本運算子,由左至右):

tb_companding_mu_law: stages (docs site)

換別的影像(合成場景 / 照片 / 硬幣。上排為輸入,下排為對應輸出。旋鈕取預設):

tb_companding_mu_law: other inputs (docs site)

用法

μ 律壓擴 —— 把 G.711 的曲線用於任意一維訊號。

> 以下的詳細說明為原文 —— 摘要與標題已翻譯。

Compress with `F(v) = sign(v) * ln(1 + mu|v|) / ln(1 + mu)` on the signal

scaled to `[-1, 1]`, quantise uniformly, expand back. The steps end up fine

near zero and coarse near full scale, which is the right allocation when the

interesting part of the signal is small compared with its peaks — speech,

vibration, anything with a large crest factor.

This is where mu-law comes from: the image operator

`companding_mu_law` is the same curve applied to intensity. Reporting both

keeps the family honest about which dimension the technique was designed for.

Applicability — it is the crest factor that decides. Measured on a sine

of amplitude *A* with one sample pinned at full scale, so the crest factor is

exactly `1/A` (mean square error relative to a uniform quantiser):

crest 50 4 bit 0.011 6 bit 0.014 (about 90x better)

crest 20 4 bit 0.122 6 bit 0.101

crest 6.7 4 bit 0.613 6 bit 0.616

crest 2.0 4 bit 4.22 6 bit 6.03 (several times WORSE)

So the rule is crest factor above roughly 7 — speech, vibration, impact.

Below that, a plain uniform quantiser wins and mu-law actively hurts.

★Note the peak is a single sample: on random signals of the same family

the advantage swung between 0.55 and 0.87 purely with the seed, because the

largest excursion sets the scale. Measure the crest factor of *your* signal,

do not assume it from the distribution.

Other limits: `mu` near 0 degenerates to uniform quantisation (that is how

you check the curve is doing anything), and the curve is fixed — unlike a

Lloyd-Max codebook fitted to the signal — which is the point when values must

stay comparable across recordings.

Typed bridge of the 1d op `companding_mu_law into the 2-D evolution registry: the same implementation, called under the op(v, a, b) convention. a drives mu (default 255) and b drives bits` (default 8).

參考(範例資料・文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

在 Studio 中試試

下面的程式已確認可以執行(與圖相同的輸入)。在 Studio 說明中,此區塊會變成按鈕,可當場載入並執行。

img_to_signal 0.50 0.50
tb_companding_mu_law 0.50 0.50

▸ Load this pipeline  ·  Load & run

可執行的範例(實際呼叫該運算子並已驗證的樣例)

下面的範例呼叫的是底層帳本運算子 companding_mu_law。此橋接運算子只是把同一實作適配為 fn(v, a, b) 慣例,行為完全相同(只是呼叫形式不同)。

gallery2d_gray_arithpy -3.11 examples/gallery2d_gray_arith.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.