重采样

AAC---音频重采样

北城以北 提交于 2020-03-01 02:35:49
音频处理中,有时不同的编解码器支持的音频格式不一样,原始采样的音频数据可能没法直接直接为编解码器支持,如FFMPEG编码MP3格式的音频,就要求样本采用AV_SAMPLE_FMT_S16P格式保存。 这就需要对不同的音频格式转换,需要重采样。 1 、如果PCM文件采用交叉存储方式,视频帧的概念可能没什么影响,因为数据都是LRLRLR . . . LR方式; 2 、如果采用平行存储方式,L . . . LR . . . RL . . . LR . . . R , 一帧必须按照指定的数据读取了 , 如MP3读取一帧需要读取 1152 * 2 ( 通道数 ) 个样本,然后前 1152 为左声道,后 1152 为右声道。 代码实现音频重采样 把交叉存储的双声道立体声转换成平行存储的双声道立体声 /******************************************************************************* Copyright (c) wubihe Tech. Co., Ltd. All rights reserved. -------------------------------------------------------------------------------- Date Created: 2014-10-25 Author:

OpenGL--抗锯齿

荒凉一梦 提交于 2020-01-15 05:21:15
理论基础 1,锯齿:在图元边缘处我们能相当清楚地看到两种颜色的分界,我们把这种称之为锯齿。为什么会产生?这是因为我们的图像是由一个个像素组成的,而每个像素近似一个很小的正方形,这样由正方形组成的图像边缘肯定会产生锯齿。示意图如下: 2,抗锯齿:常见的抗锯齿方法有两种:混合和多重采样。使用混合消除锯齿的原理是,在边缘处降低alpha值再做混合操作从而达到欺骗眼睛的目的。然而混合操作受绘制顺序的影响,对于整个场景的抗锯齿操作是很麻烦的(排序)。这时可以使用另一种抗锯齿方式,多重采样:它在边缘的像素颜色是采集了多种颜色信息最终计算得出个平滑的颜色。其实这种模式它是单独又开辟了一个缓冲区来保存这些信息,这些处理都是要额外带来开销的,有可能对性能造成影响。因此有些opengl实现可能并不支持多重采样。 注释:现在手机上貌似都不需要考虑锯齿问题了,因为分辨率普遍都很高了。 实例代码 1,使用混合形式的抗锯齿 #include "GLTools.h" #include "GLShaderManager.h" #ifdef __APPLE__ #include <glut/glut.h> #else #define FREEGLUT_STATIC #include <GL/glut.h> #endif static float rotAngle = 0.; void init(void) {

医学影像重采样

筅森魡賤 提交于 2019-12-08 19:32:24
1. 重采样 在医学图像预处理的过程中,常常需要对数据进行重采样,采样到我们需要的尺度。因为医学图像是和真实空间的物理尺寸相对应的。例如一个体素的大小是0.97mm 0.97mm 2.5mm,我们想将体素块的大小采样到1mm 1mm 1mm,这样可以帮助我们进行下一步处理。利用 sitk 可以完成这一项工作。 2. 代码 import SimpleITK as sitk """ resample """ def resampleVolume(outspacing,vol): """ 将体数据重采样的指定的spacing大小\n paras: outpacing:指定的spacing,例如[1,1,1] vol:sitk读取的image信息,这里是体数据\n return:重采样后的数据 """ outsize = [0,0,0] inputspacing = 0 inputsize = 0 inputorigin = [0,0,0] inputdir = [0,0,0] #读取文件的size和spacing信息 inputsize = vol.GetSize() inputspacing = vol.GetSpacing() transform = sitk.Transform() transform.SetIdentity() #计算改变spacing后的size,用物理尺寸

不均衡样本集的重采样

妖精的绣舞 提交于 2019-12-05 11:34:29
样本不均衡时出现问题的原因 本质原因:模型在训练时优化的目标函数和测试时使用的评价标准不一致 这种不一致: 训练数据的样本分布与测试时期望的样本分布不一致 训练阶段不同类别的权重(重要性)与测试阶段不一致 解决方法 基于数据的方法 对数据进行重采样,使样本变得均衡 随机采样: 过采样:从 \(S_{min}\) 中有放回采样,可能造成过拟合 欠采样:从 \(S_{maj}\) 随机舍弃,可能损失有用信息 SMOTE算法 对少数类样本集 \(S_{min}\) 中的每个样本 \(x\) ,从它在 \(S_{min}\) 中的K近邻中随机选取一个样本 \(y\) ,然后在 \(x,y\) 连线上随机选取一点作为新样本 根据需要的过采样倍率重复上述过程若干次 缺点: 为每个少数类样本合成相同数量的新样本,增大类间重叠度 生成一些不能提供有用信息的样本 改进: Borderline-SMOTE:只给处于分类边界上的少数类样本合成新样本 ADASYN算法:不同的少数类样本合成不同个数的新样本 数据清理方法(如Tomek Links),降低合成样本的类间重叠 Informed Undersampling Easy Ensemble算法 从多数类 \(S_{maj}\) 中随机抽取一个子集 \(E(|E|\approx |S_{min}|)\) 使用 \(E + E_{min}\) 训练分类器

window如何采集回放设备声音 并重采样

泪湿孤枕 提交于 2019-12-05 02:01:14
在windows平台下采集输入设备的音频数据资料已经很多了,但是采集声卡回放设备的方法却比较少,在此写下本人开发的一个用于采集声卡回放输出设备(桌面声音)的音频数据,并做重采样处理的功能模块;当然同时也支持从输入设备中采集音频数据。 在实现过程中使用了 MMDevice API等较新的接口,该接口在windows vista之后的版本才出现,所以在此提供的代码只支持windows vista以后的版本,包括vista。 由于在windows下不同的声卡可以输出不同的音频格式,比如采样率、位深、声道数,所以从声卡设备中获取到的PCM数据格式与每台PC的声卡设置保持一致,因此必须在采集到PCM数据后统一做一次重采样处理,后面提供的代码中将最终输出双声道,s16、44100格式的PCM数据,以便后续处理。其中数据的重采样借助的是libsamplerate开源代码库,其可以使用VS工具直接编译。大家如果需要直接使用一下提供的代码的话需要自己去下载并静态编译libsamplerate库。 下面只贴出头文件,其它代码请到本人的已上传资料中下载; #pragma once #include <list> #include <string> #include <stdint.h> #include <mmdeviceapi.h> #include <Audioclient.h> #include

基于傅里叶变换的音频重采样算法 (附完整c代码)

匿名 (未验证) 提交于 2019-12-03 00:39:02
前面有提到音频采样算法: WebRTC 音频采样算法 附完整C++示例代码 简洁明了的插值音频重采样算法例子 (附完整C代码) 近段时间有不少朋友给我写过邮件,说了一些他们使用的情况和问题。 坦白讲,我精力有限,但一般都会抽空回复一下。 大多数情况,阅读一下代码就能解决的问题, 也是要尝试一下的。 没准,你就解决了呢? WebRtc的采样算法本身就考虑到它的自身应用场景, 所以它会有一些局限性,例如不支持任意采样率等等。 而简洁插值的这个算法, 我个人也一直在使用,因为简洁明了,简单粗暴。 我自然也就没有进一步去细究采样算法, 当然网上还有不少开源的采样算法也是极其不错的。 一直也想抽时间再做一个兼顾简洁和质量的算法出来,不了了之。 最近一直在死磕傅里叶变换,网上的资源看了一箩筐。 徘徊到最后,毫无疑问FFTW3必须是你的首选, 从岁数性能以及使用的概率来说,当之无愧的王者。 当然也顺带整理一下,其他的一些FFT实现,各有优劣。 用于学习,作为参考资料也是不二之选。 有兴趣的小伙伴,可以参阅之. https://github.com/cpuimage/StockhamFFT https://github.com/cpuimage/uFFT https://github.com/cpuimage/BluesteinCrz https://github.com/cpuimage

音频开源代码中重采样算法的评估与选择

匿名 (未验证) 提交于 2019-12-03 00:38:01
在音频软件实现中经常会遇到两个模块采样率不一致的情况,比如语音通话时采集到的PCM信号是16k Hz的,但编码时codec是AMR-NB(AMR-NB是8k Hz采样),这时就需要把16k Hz采样的PCM值转换成8k Hz采样的PCM值(这叫降采样或者下采样),然后再去做AMR-NB编码。再比如音乐播放时音源是44.1k Hz采样率编码的,但是播放时是48k Hz采样率的,这就需要把解码后的44.1k Hz采样率的PCM值转换成48k Hz采样的PCM值(这叫升采样或者上采样),然后再送给codec芯片播放。采样率转换(sampling rate converter, SRC)或者叫重采样有多种方法,简单的有线性插值法(算法简单,load小,但性能一般),复杂的有sinc方法(算法复杂,load大,但性能较好)。好多的音频类开源代码里都有重采样的实现,比如PJSIP和FFMPEG。重采样的原理这里就不详细介绍了,有兴趣的可以看相关文章。今天我们讲的是如何去评估这些开源代码里的重采样实现以及选择最适合的实现。评估主要基于频响特性,其次看CPU load。评估的开源实现是我用过的PJSIP和SILK codec。PJSIP里的重采样有两种实现(线性插值和sinc),通过开关控制选用哪种。SILK里的重采样用的是三次插值方法。对其他开源实现的评估类似。 在评估前先要做一些准备工作

机器学习pandas之时间重采样笔记

北城以北 提交于 2019-11-29 00:11:42
周期由高频率转向低频率称为降采样:例如5分钟股票交易数据转换为日交易数据 相反,周期也可以由低频转向高频称为升采样 其他重采样:例如每周三(W-WED)转换为每周五(W-FRI) 1 import pandas as pd 2 import numpy as np 3 4 # 创建一个时间戳序列 5 s = pd.Series(np.random.randn(5), 6 index=pd.date_range('2016-04-01',periods=5,freq='M')) 7 # 注意它给的起始时间,与输出的时间对比, 8 # 它给定的频率为月份输出的月份从每个月的最后一天算起 9 # 输出 10 2016-04-30 -0.487238 11 2016-05-31 0.376708 12 2016-06-30 -1.830840 13 2016-07-31 -0.426218 14 2016-08-31 1.913151 15 Freq: M, dtype: float64 16 17 # 将时间戳的序列转换为时期序列, 18 s.to_period() 19 # 输出 20 2016-04 -0.487238 21 2016-05 0.376708 22 2016-06 -1.830840 23 2016-07 -0.426218 24 2016-08 1.913151

Learning from class-imbalanced data: Review of methods and applications 论文阅读

南楼画角 提交于 2019-11-27 02:40:51
目录 Learning from class-imbalanced data: Review of methods and applications 摘要 Introdution 介绍 Research methodology and initial statistics 调研方法和初始统计 Research methodology 调研方法 Initial statistics 初步统计 Imbalanced data classification approaches 不平衡数据分类方法 Basic strategies for dealing with imbalanced learning 处理不平衡学习的基本方法 Preprocessing techniques 预处理技术 resampling 重采样 Feature selection and extraction 特征选择和抽取 Cost-sensitive learning 代价敏感学习 Classification algorithms for imbalanced learning 针对不平衡学习的分类算法 Ensemble methods 集成方法 Iterative based ensemble 基于迭代的集成 Parallel based ensembles 基于并行的集成 Base classifier