嗨我需要将wav音频文件的采样率从44.1kHz下采样到8kHz.我必须使用字节数组手动完成所有工作......这是出于学术目的.
我目前正在使用2个类,Sink和Source来弹出和推送字节数组.一切顺利,直到我到达需要使用线性插值对数据块进行下采样的部分.
由于我从44100下采样到8000 Hz,如何插入包含128 000 000字节的字节数组?现在我正在弹出5,6或7个字节,具体取决于i%2 == 0,i%2 == 1和i%80 == 0并将这些5,6或7个字节的平均值推入新文件.
结果确实是一个比原始音频文件更小的音频文件,但它不能在Windows媒体播放器上播放(说在阅读文件时出错)并且虽然我能听到噪音背后的正确轨道,但仍有很多噪音.
因此,总而言之,我需要有关线性插值部分的帮助.提前致谢.
我正在使用ImageMagick对文本进行缩减采样.我意识到对于每种情况都没有最好的过滤器这样的东西,但是我认为在具体地对文本进行下采样时必须有一个普遍接受的标准(我可能是错的).以下是ImageMagick中可用的过滤器列表:
我有一个不同长度的N个区间的排序数组.我正在用蓝色/绿色交替颜色绘制这些间隔.
我试图找到一种方法或算法来"下采样"间隔数组,以产生视觉上相似的图,但元素较少.
理想情况下,我可以编写一些函数,我可以将目标输出间隔数作为参数传递.输出长度只需接近目标.
input = [
[0, 5, "blue"],
[5, 6, "green"],
[6, 10, "blue"],
// ...etc
]
output = downsample(input, 25)
// [[0, 10, "blue"], ... ]
Run Code Online (Sandbox Code Playgroud)
下面是我想要完成的图片.在这个例子中,输入有大约250个间隔,输出大约有25个间隔.输入长度可能会有很大差异.
所以这是我的问题:
我有一个图像,图像很大(高分辨率),它需要很小(低得多的分辨率).
所以我做了天真的事情(杀死所有其他像素),结果看起来很糟糕.
所以我尝试做一些更聪明的事情(使用傅里叶变换进行低通滤波并在傅立叶空间重新采样),结果稍好但仍然相当差.
所以我的问题是,是否有一个感知动机的图像下采样算法(或实现)?
编辑:虽然我知道一些重采样技术,但我的应用程序更关心的是保留感知功能,而不是产生平滑的图像.
edit2:可以安全地假设我对数字信号处理,卷积,小波变换等有一定程度的熟悉
在 iPhone 或 iPad 上实时缩放期间对半色调漫画书图像进行下采样时,如何减少莫尔效应?
我正在写一个漫画书查看器。提供更高分辨率的图像并允许用户在阅读漫画书时放大会很好。但是,我的客户不喜欢摩尔纹效果,如果在缩放时有明显的摩尔纹伪影(当然有),则不允许使用此功能。
将图像修改为不易受摩尔纹影响只有在修改不可察觉时才有效。模糊是被明确禁止的,任何去除心爱的半色调点的东西也是如此。
图像是黑白半色调和线条艺术。原件为 600 dpi,但我们随应用程序提供的内容最多只有 600 dpi,因此高度可能为 2500 像素或更低。
那么我的选择是什么?如果我编写自定义下采样算法,在这些设备上的实时性是否足够快?我还有其他技巧吗?仅仅避免具有最多视觉莫尔效应的尺寸比例会起作用吗?
当您放大时,肯定会出现莫尔效应最差的峰值。有没有办法计算这些点是什么,然后放大到附近没有那么糟糕的比例?
欢迎任何建议。我在图像和信号处理方面的经验很少,但我很享受学习的机会。我对小波和锐度以及其他术语一无所知,所以请详细说明。
编辑:
至少现在我们正在使用动态缩放。我们将支持放大到完全放大,但不支持任意缩放。我希望将来能重新审视这个问题。
signal-processing image-processing antialiasing downsampling
我正在尝试对pandas数据帧进行下采样以减少粒度.在示例中,我想减少此数据帧:
1 2 3 4
2 4 3 3
2 2 1 3
3 1 3 2
Run Code Online (Sandbox Code Playgroud)
对此(下采样以使用均值获得2x2数据帧):
2.25 3.25
2 2.25
Run Code Online (Sandbox Code Playgroud)
是否有内置的方式或有效的方法来做它或我必须自己写?
谢谢
我试图在大数据矩阵中寻找趋势,比如50,000 x 1000个元素.如果我使用该image命令,矩阵将打印到屏幕上.我想知道Matlab的image功能如何决定显示矩阵的哪些元素,因为我的屏幕上没有足够的像素来显示这么多元素?换句话说,哪种下采样算法适用于矩阵?
我在Matlab中有2个数据集,我需要相互绘图 - 一个在x轴上,一个在y轴上.使用不同的方法收集每组的数据,因此采样率显着不同,直到我在两组中没有相同数量的数据点,我不能相互映射一个.
使用downsampleMatlab函数在Matlab中对数据进行下采样非常简单.
A = [-3 -1.5 0 1.5 3 4.5 6 7.5 9...] (goes on until 21)
B = [-3.9 -3.8 -3.7 -3.6 -3.5 -3.5 -3.3 -3.2 -3.1 -3.0 -2.9 -2.8...] (goes on until 22)
Run Code Online (Sandbox Code Playgroud)
A的采样率为1.5s,B的采样率为0.1s.我已经能够成功地使用downsample为downsample(B,15,10)得到它在同一时间启动"-3S"(这意味着在我的数据的东西,所以我需要得到它在那个点开始),并在1.5秒的采样的采样率.
然而,现在,我想知道是否有一种方法可以让我取15分的平均值,而不是每15分选一分?downsample,我使用它的方式只是选择每15分.但是,我希望能为我平均得到15分.有办法做到这一点吗?
我为一个简单/较小的向量写了一个for循环,看看我是否可以做到.因为A = [1 2 3 4]我想要压缩数据,以便A只有2个条目,这样它平均为A(1)和A(2),然后是A(3)和A(4).
A = [1 2 3 4]
for i = 1:3
P(i) = mean(A(i:i+1))
end
Run Code Online (Sandbox Code Playgroud)
然而,这并不像我想要的那样工作,因为我不希望它平均为A(2)和A(3).我希望它获取前两个条目,平均它们,然后接下来的两个条目,然后平均它们.等等.
有人可以帮忙吗?
谢谢
我找到了以下方法来对 python 中的信号进行下采样。我想在 asample_rate为 100.21 时使用此方法,但我认为目前它仅适用于 2 的整数幂。是否可以将频率 100.21 Hz 的信号下采样至 8 Hz?
def interpolateDataTo8Hz(data,sample_rate,startTime):
# Downsample
idx_range = range(0,len(data))
data = data.iloc[idx_range[0::int(sample_rate)/8]]
# Set the index to be 8Hz
data.index = pd.DatetimeIndex(start=startTime,periods = len(data),freq='125L')
# Interpolate all empty values
data = interpolateEmptyValues(data)
return data
def interpolateEmptyValues(data):
cols = data.columns.values
for c in cols:
data[c] = data[c].interpolate()
return data
Run Code Online (Sandbox Code Playgroud) resize我对使用插值时OpenCV 函数的工作范围有疑问INTER_AREA。以下是三种不同的插值:
import cv2
import numpy as np
cv2.resize(np.zeros((17, 99, 99), dtype=np.uint8), (64, 32), interpolation=cv2.INTER_AREA)
# OK
cv2.resize(np.zeros((200, 64, 4), dtype=np.uint8), (64, 32), interpolation=cv2.INTER_AREA)
# OK
cv2.resize(np.zeros((200, 64, 64), dtype=np.uint8), (64, 32), interpolation=cv2.INTER_AREA)
# error: OpenCV(4.1.1) ..\modules\imgproc\src\resize.cpp:3557: error: (-215:Assertion failed) func != 0 && cn <= 4 in function 'cv::hal::resize'
Run Code Online (Sandbox Code Playgroud)
前两个工作正常,但最后一个失败。为什么会这样呢?什么样的输入/输出形状组合是可以接受的?
(请注意,该问题特定于INTER_AREA,因为其他插值方案似乎适用于所有三种情况)。
downsampling ×10
image ×3
python ×3
algorithm ×2
matlab ×2
pandas ×2
antialiasing ×1
audio ×1
dataframe ×1
filtering ×1
for-loop ×1
imagemagick ×1
intervals ×1
java ×1
opencv ×1
resampling ×1
text ×1
vector ×1
wav ×1