问题标签 [quantization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1471 浏览

opengl-es - 抖动 gouraud 着色的顶点色多边形以去除条带

我在低分辨率嵌入式设备上使用OpenGL ES

我已经使用顶点着色将垂直颜色渐变应用到用作渲染场景背景的大多边形上。我可以在颜色渐变中看到清晰可见的条带伪影。

我的主要经验是使用软件渲染器。使用软件渲染器,通常会抖动掉马赫带和其他带状伪影。我们经常在渲染帧的量化步骤中执行此操作,其中浮点、高精度的颜色表示被转换为较低精度的输出(通常带有整数分量)。我们通过随机向上或向下舍入最终整数分量来实现抖动,以在图像中插入最微小的噪声,从而欺骗眼睛看到颜色之间的连续和平滑混合。

我的问题是我是否可以使用 OpenGL ES 来实现这一点?这种抖动是OpenGL管道的一部分,还是我应该跳过顶点着色并将渐变渲染到纹理并对其应用一些噪声?

0 投票
2 回答
13028 浏览

floating-point - 将浮点范围转换/量化为整数范围

假设我有一个 [0, 1] 范围内的浮点数,我想量化它并将其存储在一个无符号字节中。听起来很简单,但实际上它相当复杂:

显而易见的解决方案如下所示:

到目前为止,这有效,我得到了从 0 到 255 的所有数字,但整数的分布并不均匀。该函数仅255在 a 恰好为时返回1.0f。不是一个好的解决方案。

如果我进行适当的舍入,我只是转移问题:

这里的结果0只覆盖了浮动范围的一半,而不是任何其他数字。

如何进行浮点范围均匀分布的量化?理想情况下,如果我量化均匀分布的随机浮点数,我希望得到整数的均匀分布。

有任何想法吗?


顺便说一句:我的代码也在 C 中,问题与语言无关。对于非 C 语言的人:假设float转换会int截断浮点数。

编辑:因为我们在这里有些困惑:我需要一个映射,将最小的输入浮点数(0)映射到最小的无符号字符,并将我范围的最高浮点数(1.0f)映射到最高的无符号字节(255)。

0 投票
4 回答
5278 浏览

audio - 8 位音频样本到 16 位

这是我的“周末”爱好问题。

我从经典合成器的 ROM 中获得了一些深受喜爱的单周期波形。

这些是 8 位样本(256 个可能的值)。

因为它们只有 8 位,所以本底噪声非常高。这是由于量化误差。量化误差非常奇怪。它使所有频率有点混乱。

我想利用这些周期并制作它们的“干净” 16 位版本。(是的,我知道人们喜欢脏版本,所以我会让用户在脏和干净之间插入他们喜欢的任何程度。)

这听起来不可能,对吧,因为我已经永远失去了低 8 位,对吧?但这在我脑海里已经有一段时间了,我很确定我能做到。

请记住,这些是单周期波形,会一遍又一遍地重复播放,所以这是一种特殊情况。(当然,合成器会做各种各样的事情来让声音变得有趣,包括包络、调制、滤波器交叉淡入淡出等)

对于每个单独的字节样本,我真正知道的是它是 16 位版本中的 256 个值之一。(想象一下相反的过程,其中 16 位值被截断或舍入为 8 位。)

我的评估功能是试图获得最小的本底噪声。我应该能够通过一个或多个 FFT 来判断这一点。

详尽的测试可能需要很长时间,所以我可以先通过较低分辨率的测试。还是我只是随机推送随机选择的值(在保持相同 8 位版本的已知值内)并进行评估并保持更清晰的版本?或者有什么更快的我可以做的吗?当搜索空间的其他地方可能有更好的最小值时,我是否有陷入局部最小值的危险?我在其他类似的情况下也遇到过这种情况。

有没有我可以做出的初步猜测,也许是通过查看相邻值?


编辑:有几个人指出,如果我取消新波形采样到原始波形的要求,问题会更容易。确实如此。事实上,如果我只是在寻找更干净的声音,那么解决方案是微不足道的。

0 投票
5 回答
6528 浏览

c - C中最快的抖动/半色调库

我正在开发一个定制的瘦客户端服务器,为它的客户端提供渲染的网页。服务器运行在多核 Linux 机器上,Webkit 提供 html 渲染引擎。

唯一的问题是客户端显示受限于 4 位(16 色)灰度调色板。我目前正在使用 LibGraphicsMagick 来抖动图像(RGB->4 位灰度),这显然是服务器性能的瓶颈。分析表明,超过 70% 的时间用于运行 GraphicsMagick 抖动函数。

我已经探索了 stackoverflow 和 Interwebs 以获得良好的高性能解决方案,但似乎没有人对各种图像处理库和抖动解决方案进行任何基准测试。

我会更高兴地发现:

  1. 关于抖动/半色调/将 RGB 图像量化为 4 位灰度的最高性能库是什么。
  2. 是否有任何您可以指出我的特定抖动库或任何公共域代码片段?
  3. 在高性能方面,您更喜欢哪些库来处理图形?

首选 C 语言库。

0 投票
3 回答
3170 浏览

machine-learning - 从图像中提取主要/最常用的颜色

我想提取图像中最常用的颜色,或者至少是主色调你能推荐我如何开始这项任务吗?或指向我类似的代码?我一直在寻找它,但没有成功。

0 投票
3 回答
5954 浏览

c - C有量化功能吗?

我有一个包含许多正 16 位值(存储为双精度值)的缓冲区,我想将其量化为 8 位(0-255 值)。

根据维基百科,该过程将是:

  • 标准化 16 位值。即找到最大的并以此划分。
  • 使用 M=8 的 Q(x) 公式。

所以我想知道,如果 C 有一个可以进行这种量化的函数,或者有人知道我可以使用的 C 实现吗?

很多爱,路易丝

0 投票
1 回答
1336 浏览

python - quantize() 和 str.format() 有什么区别?

我并不是说技术上的区别是什么,而是说更快/更合乎逻辑或 Pythonic 等的方法是什么:

或者

它们似乎完全相同,所以我只是想知道为什么它们在创建 quantize 时

0 投票
1 回答
2722 浏览

vector - 语音处理中的向量量化解释

我无法从这篇研究论文中确切地确定如何根据训练数据集重现标准矢量量化算法来确定身份不明的语音输入的语言。以下是一些基本信息:

摘要信息 使用声学特征的语言识别(如日语、英语、德语等)是当前语音技术的一个重要而困难的问题。... 本文使用的语音数据库包含 20 种语言:16 个句子,由 4 名男性和 4 名女性说出两次。每个句子的持续时间约为 8 秒。第一种算法基于标准矢量量化 (VQ) 技术。每种语言都有自己的 VQ 码本,替代文字.

识别算法 第一个算法基于标准矢量量化(VQ)技术。每种语言 ,k都有其自己的 VQ 码本 , 替代文字。在识别阶段,输入语音被量化替代文字并计算累积量化失真 d_k。作为最小失真的语言被识别。计算 VQ 失真,应用了几个 LPC 频谱失真测量......在这种情况下,WLR - 加权最小比率 - 距离:

.

标准 VQ 算法: 码本,替代文字

,对于每种语言都是使用训练句子生成的。句子中输入向量的累积距离![alt text][4] 定义为:[![alt text][5]][5]

该距离d可以是与声学特征相对应的任何距离,并且必须与用于码本生成的距离相同。每种语言都以其 VQ 码本为特征,替代文字.

我的问题是,我到底该怎么做?我有一组50个英语句子。在 MATLAB 中,我可以轻松计算任何给定信号的 WLR。但是,我该如何制定码本,因为我必须使用 WLR 来生成英语的“码本”。我也很好奇如何将大小为 16 的 VQ 码本(被发现是最佳大小)与给定的输入信号进行比较。如果有人可以帮我提炼这篇论文,我将不胜感激。

谢谢!

0 投票
4 回答
3737 浏览

audio - 通过截断减少样本位深度

我必须将数字音频信号的位深度从 24 位降低到 16 位。

只取每个样本的 16 个最高有效位(即截断)相当于进行比例计算(out = in * 0xFFFF / 0xFFFFFF)?

0 投票
4 回答
265 浏览

algorithm - 量化线段路径差异的算法

假设我有两条线段路径,例如下面示例的子集。如何量化它们之间的差异?

  1. |__
  2. \_
  3. _ _
  4. /\
  5. \/
  6. |
  7. _

两条路径可能有不同数量的段,并且每段的长度和它们之间的角度是可变的。

我认为建立一个坐标系并将段定义为节点和边会很好。这种差异也许可以通过将一个转换为另一个所需的操作来量化,类似于Levenshtein 距离算法。可惜操作空间很大。有任何想法吗?谢谢!