问题标签 [downsampling]

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 投票
1 回答
352 浏览

windows-phone-7 - 对波形文件进行下采样

我需要将 16000 赫兹 PCM 16 位波形文件下采样到 8000 赫兹。我对音频处理知之甚少(几乎没有),我只了解所有程序员都了解的位、字节、移位等。

它是一个 Windows Phone 应用程序。

你有什么建议?此外,据我了解,XNA 框架中 Microphone 类的 SampleRate 是不可定制的,因此它只能为您提供 16000 赫兹的数据。有没有办法在 Windows Phone 中获取 8000 赫兹的原始音频数据?那将是一个更容易的解决方案:)

谢谢你。

0 投票
2 回答
2197 浏览

android - 将 pcm/wav 音频从 22khz 下采样到 8khz

我的 android 应用程序需要将 PCM(22khz) 转换为 AMR ,但 API AmrInputStream仅支持pcm 为 8khz

如何将pcm 从 22 khz下采样到 8 khz?

0 投票
0 回答
1623 浏览

opengl - GLSL 330:下采样纹理

我想将输入纹理从 800x600 降低到本身的四分之一(200x150 像素)。但如果我这样做,我只能看到一小部分图像。框架着色器似乎没有对整个纹理进行采样。以下示例是创建景深效果。

顶点着色器:

片段着色器:

输入纹理为 800x600,输出纹理为 200x150 像素。作为 m_InvertedScreenSize,我使用 1/800 和 1/600 像素。那正确吗?

我上传了两个三角形,它们代表 OpenGL 的屏幕坐标。

我的屏幕矩阵通过正交矩阵将这些顶点转换为裁剪空间。

下图显示了输入纹理和结果。第一个是没有下采样的原始图像。其次是实际的下采样纹理。第三个是计算 ScreenCoords *= 4.0f; 的下采样纹理。

这是进入着色器的纹理,应该向下采样。 下采样后的结果... 我想拥有的形象。

0 投票
1 回答
730 浏览

python - Pandas 下采样问题

我有一个包含日期和 0 或 1 的两列的 csv 文件,如下所示:

我将此文件加载到 DataFrame 中raw_data,然后将索引更改为 Timestamp :

然后我尝试使用以下方法对数据进行下采样:

它适用于所有日子(有超过 7 个月的日期,这里我只包括一个子集),除了我得到这个输出的一天:

从数据中可以看出,这没有意义。有趣的是,如果我使用像“h”这样的更高频率进行下采样,我会在特定的日子得到正确的结果。我得到不存在的小时的空值 0 存在但只有 0 的小时和存在但 ==1 的小时的正确总和。请问有什么想法吗?

0 投票
3 回答
19703 浏览

android - 如何正确下采样图像?

背景

创建一个包含大量高质量图像的应用程序,我决定将图像缩小到所需的大小(这意味着如果图像大于屏幕,我会缩小它)。

问题

我注意到在某些设备上,如果图像被缩小,它们会变得模糊/像素化,但在相同的设备上,对于相同的目标 imageView 大小,如果图像没有被缩小,它们看起来就很好。

我试过的

我决定进一步检查这个问题,并创建了一个显示该问题的小型 POC 应用程序。

在向您展示代码之前,这是我正在谈论的内容的演示:

在此处输入图像描述

有点难以看出区别,但你可以看到第二个有点像素化。这可以显示在任何图像上。

xml:

问题

为什么会发生?

两种方法都应该具有相同的结果,因为它们都来自相同的来源并使用相同的因子。

我尝试过使用下采样方法,但没有任何帮助。

使用 inDensity(而不是 inSampleSize)似乎可以修复它,但我不确定要为它设置什么。我认为对于外部图像(例如来自互联网),我可以将其设置为屏幕密度乘以我希望使用的样本大小。

但它甚至是一个好的解决方案吗?如果图像位于资源文件夹中,我该怎么办(我认为没有功能可以获取位图所在的密度文件夹)?为什么它在使用推荐的方式(在此处讨论)时效果不佳?


编辑:我发现了一个技巧,可以从资源中获取用于绘制的可绘制对象(此处的链接)。但是,这不是未来的证据,因为您需要特定于要检测的密度。

0 投票
1 回答
1159 浏览

python - Python:使用频率数据对总体进行下采样

给定一个代表总体中元素频率的数据系列,对其进行下采样的最简单方法是什么?

以下人群:pop = ['a', 'b', 'a', 'c', 'c', 'd', 'c', 'a', 'a', 'b', 'a']

可以概括为:freq = {'a': 5, 'c': 3, 'b': 2, 'd': 1}

使用简单:from collections import Counter; Counter(pop)

要将人口随机下采样到 5 个人,我可以这样做:

但我正在寻找一种直接从freq信息中执行此操作而无需构建pop列表的方法。您将同意不需要这样的程序:

出于内存考虑和速度要求,我想避免将pop列表放在内存中。这肯定可以使用某种类型的加权随机生成器来完成。

0 投票
0 回答
304 浏览

filtering - 在抽取之前/之后过滤

我处理一个采样频率为 48000 Hz 的信号。

为了达到 8000 Hz,我不需要这么多并进行抽取,因此,抽取 6 阶。

此外,我知道我需要滤除 50 Hz 及其谐波。我将在 FFT-iFFT 程序的帮助下做到这一点,因为我真的不知道如何设计一个具有所有零点和极点的 FIR 滤波器......

我的问题是

我应该在抽取之前滤除谐波,还是可以稍后再做?

因为如果我之前需要过滤掉谐波,那么过滤掉 24000/50=480 个谐波会很疯狂,并且在抽取计算内存后会减少时间(4000/50=80)!

0 投票
0 回答
626 浏览

audio - 如何修剪 PCM 数据以识别要馈送的样本数或帧数?

我想提供 libsamplerate (一个需要填充以下结构的音频数据下采样库:

调用者必须填写的这个结构的字段是:

为了填充这个结构,我有 data_in 但我不知道帧数,所以我无法定义 input_frames。有没有一种简单的方法来修剪 PCM 字节流?所以我也可以用正确的帧数将它输入到这个函数中。(所以这个问题与 libsamplerate 没有直接关系)

0 投票
1 回答
1108 浏览

c++ - 在 VST 仪器中快速(实时)下采样 96 到 44.1 kHz 音频

我正在尝试在我的 VSTi (c++) 中创建一个快速的下采样功能,但我很难让它工作。这就是我所拥有的,也是我正在尝试做的。首先是低通滤波器..

使用上述低通滤波器后,我通过步进 96000/44100=2,1769 播放缓冲区。截断这意味着我将通过 pp->cOffset[o] 2, 4, 6, 8, 10, 13, 15, 17, 19, 21, 23, 26, 28, 30 获得索引(int)系列。 . 来自 96kHZ 缓冲器。我可以听到滤波器在高频上取得了成功,但由于我从缓冲区中读取系列的方式,有更深的金属声音。

然后我尝试添加以下内容来处理它(请不要笑):

这使一些金属声音消失了,但不是全部,我迷路了,不知道该怎么做。我现在头上的头发比昨天少!

输出是主机的输出缓冲区,主机设置为 44.1kHz 采样率,而我的波形采样为 96kHz。

请让我找到继续前进的方法。

0 投票
1 回答
3903 浏览

monitoring - OpenTSDB 如何对数据进行下采样

我有一个关于 OpenTSDB 下采样的两部分问题。

首先是我想知道是否有人知道 OpenTSDB 在计算下采样时是否采用最后一个端点(包含或不包含),或者它是否计算结束数据点两次?

例如,如果我的时间间隔是下午 12:30 到下午 1:30,并且我从下午 12:29:44 开始每 5 分钟获取一次 DP,并且我的下采样间隔是每 10 分钟求和一次,那么系统是否从 12:30 开始获取 DP -12:39 和它们相加,12:40-12:49 和它们相加,等等,或者它从 12:30-12:40 开始,然后从 12:40-12:50 开始等等。是的,我知道我的数据关闭了 15 秒,但我无法控制。

我试图手动计算它,但我拥有的数据对我没有帮助。我计算的数字与上述不相加,也不与图表显示的相匹配。我无权访问将数字推送到 OpenTSDB 的系统,因此我无法设置要检查的虚拟数据。

第二个问题是下采样如何根据我的时间范围和下采样间隔在图表上绘制它的点?我将下采样设置为总和 10 分钟块。我将我的范围设置为下午 12:30 到下午 1:30。该图显示了从下午 12:35 开始的下采样图的第一个点。这是合乎逻辑的。
我将范围更改为 12:24 pm-1:29 pm,并预计第一个点从 12:30 开始,但显示的第一个点是 12:25 pm。

希望有人可以为我回答这些问题。与此同时,我将继续尝试在我的系统中找到一些有助于显示/证明下采样应该如何工作的数据。

在此先感谢您的帮助。