- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
或者,也许,我没有得到的是 unary coding :
在 Golomb, or Rice, coding , 你拆分了一个号码 N
将其除以另一个数字 M
分成两部分然后用一元编码该除法的整数结果,用二进制编码余数。
在维基百科 example ,他们使用 42 作为 N
和 10 为 M
,所以我们最终得到商 q
4(一元:1110)和余数 r
2(二进制 010),所以结果消息是 1110,010
, 或 8 位(逗号可以跳过)。 42 的简单二进制表示是 101010
, 或 6 位。
对我来说,这似乎是由于 q
的一元表示它总是必须比二进制多。
显然,我在这里遗漏了一些重要的观点。它是什么?
最佳答案
重要的一点是,哥伦布码并不意味着比一个特定数字的最短二进制编码更短。相反,通过提供特定类型的 variable-length encoding , 他们 与固定宽度编码相比,减少每个编码值的平均长度,如果编码值来自一个大范围,但最常见的值通常很小(因此大多数时间只使用该范围的一小部分)。
例如,如果您要传输 0 到 1000 范围内的整数,但大部分实际值都在 0 到 10 之间的范围内,在固定宽度编码中,大多数传输的代码将具有前导不包含任何信息的 0:
要覆盖 0 到 1000 之间的所有值,您需要使用 10 位宽的固定宽度二进制编码。现在,由于您的大多数值都低于 10,因此大多数数字的前 6 位至少为 0,并且携带的信息很少。
要使用 Golomb 代码纠正此问题,您可以通过将数字除以 10 并分别对商和余数进行编码来拆分数字。对于大多数值,必须传输的只是余数,最多可以使用 4 位进行编码(如果对余数使用截断的二进制,则可以更少)。然后以一元形式传输商,其编码为单个 0
小于 10 的所有值的位,如 10
对于 10..19,110
20..29 等
现在,对于您的大多数值,您已将消息大小减少到最大 5 位,但您仍然可以在没有分隔符的情况下明确传输所有值。
对于较大的值(例如,范围 990..999 中的值需要 100 位作为商),这带来了相当高的成本,这就是编码对于 2 边几何分布是最佳的原因。
较大值的商中 1 位的长游程可以通过后续游程长度编码来解决。但是,如果商在结果消息中占用太多空间,这可能表明其他代码可能比 Golomb/Rice 更合适。
关于compression - 我没有得到 Golomb/Rice 编码 : It does make more bits of the input, 还是它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/728966/
我正在尝试将 ffmpeg 作为静态库与 android NDK 链接,但我收到如下“多重定义错误”错误。我还包含了我的构建脚本,该脚本可以很好地运行所有内容,但是当我将 Eclipse 中的库与 A
尝试解码 H.264 视频流的 SDP sprop-parameter-sets 值并发现访问某些值将涉及 Exp-Golomb 编码数据的解析,我的方法包含 base64 解码的 sprop-par
我正在使用 ffmpeg 捕获 UDP 多播流并将其保存到文件中,但我遇到了“无效的 UE golomb 代码”的问题 命令: ffmpeg -i "udp://238.0.0.1:1234" -c
或者,也许,我没有得到的是 unary coding : 在 Golomb, or Rice, coding , 你拆分了一个号码 N将其除以另一个数字 M 分成两部分然后用一元编码该除法的整数结果,
我是一名优秀的程序员,十分优秀!