问题标签 [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 投票
0 回答
646 浏览

android - 在 Android 中:从文件中读取图像,对于大图像,通过降低分辨率来减小尺寸,将其保存在 Blob 中

我的 Android 应用程序从 sd 卡读取图像文件并将图像存储在 sqlite 数据库中的 blob 中。

目前我正在将 FileInputStream 转换为字节数组并将其存储在 blob 中。一个 blob 不能超过 1MB 的大小,所以在这种情况下,我会发布一条错误消息并取消操作。

我想通过降低分辨率(而不是大小)来摆脱 1MB 的限制并存储更大的图像。

我可以使用 BitmapFactory 选项 inSampleSize 来压缩图像和/或将位图转换回字节 [],例如使用 bitmap.compress 来寻求解决方案。然而,即使是使用 BitmapFactory 创建的未压缩位图的大小也比原始字节 [] 大得多,所以我担心我会失去质量。

任何想法如何解决我的问题?非常感谢,格哈德。

0 投票
3 回答
1311 浏览

python - 如何重新采样/下采样不规则的时间戳列表?

简单的问题,但我无法找到简单的答案。

我有一个数据列表,以秒为单位计算事件发生的时间:

我想计算每小时(3600 秒)发生多少事件并创建这些计数的新列表。

我知道这称为下采样,但我能找到的所有信息都与传统时间序列有关。

对于上面的示例,新列表如下所示:

任何帮助将不胜感激。

0 投票
0 回答
137 浏览

opengl - 在屏幕 OpenGL 上获取纹理坐标

我正在尝试创建一个实时变化的色调映射运算符。

我有一个球形纹理上的 LDR 图像(在将运算符应用于 HDR 图像之后),在一个始终围绕 Y 轴旋转的球体上,并且相机在球体内;这是一个例子:

我正在做手动下采样来计算图像的对数平均亮度,它现在工作正常。

现在,我希望操作员实时更改,因此我只想计算我在每一帧看到的图像部分的对数平均亮度,以实时重新计算和更改操作员效果。

所以,要做到这一点,我需要知道我的纹理在每一帧屏幕上的坐标,选择它们并丢弃其他的进行下采样。

有什么帮助吗?

0 投票
0 回答
523 浏览

python - Python 快速对称中心图像下采样算法

我正在尝试在 Python 中加速一个简单的对称居中图像下采样算法。我已经使用一种天真的方法作为下限基准对其进行了编码,但是我希望它能够更快地工作。

为简单起见,我的图像是一个分辨率为 4608x4608 的圆(我将使用此比例的分辨率),我希望将图像下采样 9 倍(即 512x512)。下面是我生成的代码,它以高分辨率创建图像并将其下采样 9 倍。

所有这些基本上都是从高分辨率映射一个像素。空间到低分辨率空间中的一个(围绕质心对称),并将给定高分辨率区域中的所有像素与低分辨率的一个像素相加。

我在我的机器上设置了 BLAS 和 LAPACK 的 numpy ,我知道利用这一点可以获得显着的收益,但是我对如何进行有点困惑。这是我迄今为止的进步。

这个当前版本在我的机器上快了大约 16 倍,但它并不完整。我不确定如何从高分辨率映射新的下采样像素。图像有效。

可能有另一种方法可以加快速度?不确定...谢谢!

0 投票
2 回答
4099 浏览

matlab - 在matlab中对二维矩阵进行下采样,按块取平均

假设我有一个矩阵 A,其尺寸为 4x4。

现在我想通过因子 2 对该矩阵进行下采样,以获得一个维度为 2x2 的新矩阵 B。

我想通过以下方式进行下采样:

让 A 成为

我希望 B 成为

为了得到 B(1,1) = 我取平均值 (1, 5, 2 and 6)

要得到 B(1,2) = 我取平均数 (9, 13, 10 和 14)

为了得到 B(2,1) = 我取平均值 (3, 7, 4 and 8) 等等。

因此,对于 B 中的每个元素,我从 A 中获取相应的 2x2 块并取其平均值。

在我的例子中,矩阵 A 的维度很大。此外,下采样因子可以是任意的。

例如,A =

用于大小为 3/2 的下采样。

矩阵 B 的大小为 4x4。

对于每个 B 单元,我必须采用不重叠的 1.5x1.5 块 A。

例如,

B(1,1) = 平均值(1, 0.5x7, 0.5x2, 0.5x8)

B(2,1) = 平均值(0.5x2, 0.5x8, 3, 9)

B(3,1) = 平均值(4, 0.5x10, 0.5x5, 0.5x11)

B(4,1) = 平均值(0.5x5, 0.5x11, 6, 12)

等等。

没有for循环有没有更快的方法来做到这一点?

0 投票
1 回答
1438 浏览

textures - How to downsample a texture

(I'm doing this in Apple Metal, but I think the question applies to OpenGL and DirectX too. Code examples from Metal or OpenGL are highly welcome.)

I have one texture smallTex whose size is a multiple of the size of another texture bigTex.

For example, smallTex has dimensions 32x32 and bigTex has 128x128.

I need to downsample the contents of bigTex into smallTex so that every pixel in smallTex contains the average values of the corresponding pixels in bigTex.

First I thought I could create a fragment shader which samples from bigTex and renders to smallTex. However, this way I would lose much information, since the sampling reads from at most four pixels and interpolates between them.

What I need is real downsampling, where every pixel in the source has the same influence on the result.

I read that this could be done using mipmaps (which essentially are downsampled copies of the original texture). But then I would have to enable mipmapping on bigTex, which will have a negative performance impact since I'm doing many rendering (compute) steps on bigTex, which would result in a lot of work for the GPU to update the mipmaps.

What I need is a direct GPU command to downsample the texture.

Is that possible? Any hints?

0 投票
0 回答
34 浏览

android - 使用 LayoutParams 对图像进行下采样会导致不平滑

我正在尝试使用 LayoutParams 在用户滚动时使 ImageView 更小。问题是,当图像视图大小减小时,由于发生默认的下采样,它看起来很糟糕 -

原来的

调整大小和锯齿状的图像

调整大小

原始布局

代码

下采样

位图的设定

我应该怎么做才能改善缩小比例并获得平滑的图像

0 投票
6 回答
61499 浏览

python - 下采样 wav 音频文件

我必须在不使用任何外部 Python 库的情况下将 wav 文件从 44100Hz 降采样到 16000Hz,因此最好使用wave和/或audioop. 我尝试使用setframerate函数将 wav 文件的帧速率更改为 16000,但这只会减慢整个录制的速度。如何将音频文件下采样到 16kHz 并保持相同的音频长度?

0 投票
1 回答
342 浏览

matlab - 如何在 Matlab 中找到 interp1 的正确采样率

我正在尝试为 interp1(或抽取或重新采样)找到正确的采样率,以绘制 imfreehand 获得的轴上的多个点。

首先我绘制一些东西(任何不是正弦特定的东西)

在此处输入图像描述

然后在轴上用 imfreehand 画一些东西,如下所示:

在此处输入图像描述

我从 imfreehand 对象中提取数据部分(大小 1x413) ,然后我尝试用原始线的长度绘制它们,但缩放是错误的......

在此处输入图像描述

有什么提示吗??

此外,与建议的下采样相同的结果..

在此处输入图像描述

有什么提示吗??x2

0 投票
3 回答
10322 浏览

javascript - 将 PCM 音频从 44100 下采样到 8000

我从事音频识别演示已经有一段时间了,api 需要我传递一个采样率为800016000的 .wav 文件,所以我必须对其进行下采样。我尝试了以下两种算法。尽管它们都没有像我希望的那样解决问题,但结果存在一些差异,我希望这会让它更清楚。

这是我的第一次尝试,当sampleRate % outputSampleRate = 0时它工作正常,但是当outputSampleRate = 8000 或 1600时,输出音频文件是无声的(这意味着输出数组的每个元素的值都是 0):

所以这是我的第二次尝试,它来自一家大公司,但它也不起作用。更重要的是,当我设置sampleRate % outputSampleRate = 0它仍然输出一个静默文件:

如果我的设置有误,这里是encodeWAV函数:

困扰了我很长时间,请告诉我我错过了什么...

------------------解决后-------- --------------

我很高兴它现在运行良好,这是函数interleave()的正确版本:

所以你可以看到这是我传递给它的变量类型不正确~再次感谢亲爱的@jaket和其他朋友~虽然我自己想通了,但他们让我更好地了解了原来的东西~~~: )