信号处理

为信号,图像和视频处理领域的艺术和科学从业者提供的问答

1
帮助计算/理解MFCC:梅尔频率倒谱系数
我一直在网上阅读点点滴滴,但我无法将它们拼凑在一起。我对信号/ DSP有一定的背景知识,应该足以满足此要求。我有兴趣最终使用Java对该算法进行编码,但是我还不完全了解它,这就是为什么我在这里(它算作数学,对吗?)。 我认为这与我的知识差距一起起作用。 从您的音频语音样本开始,比如说一个.wav文件,您可以将其读入数组。把这种阵列,其中Ñ范围为0 ,1 ,... ,ñ - 1(所以Ñ样品)。这些值对应于我猜想的音频强度-振幅。x[n]x[n]x[n]nnn0,1,…,N−10,1,…,N−10, 1, \ldots ,N-1NNN 将音频信号分成10ms左右的不同“帧”,假设语音信号是“固定的”。这是量化的一种形式。因此,如果您的采样率为44.1KHz,则10ms等于441个采样或值。x[n]x[n]x[n] 进行傅立叶变换(为计算起见,使用FFT)。现在,这是在整个信号上还是在每个单独帧上完成的?我认为这是有区别的,因为一般来说,傅立叶变换会查看信号的所有元素,因此F(x [ n ] )≠ F(x 1 [ n ] )与F(x 2 [ n ] )与... F结合(x N [ n ] )其中xx[n]x[n]x[n]F(x[n])≠F(x1[n])F(x[n])≠F(x1[n])\mathcal F(x[n]) \neq \mathcal F(x_1[n])F(x2[n])F(x2[n])\mathcal F(x_2[n])…F(xN[n])…F(xN[n])\ldots \mathcal F(x_N[n])是较小的帧。无论如何,假设我们进行了一些FFT,最后剩下 X [ k ]。xi[n]xi[n]x_i[n]X[k]X[k]X[k] 映射到梅尔刻度,并进行记录。我知道如何将常规频率数字转换为梅尔刻度。对于每个的X [ ķ ]:(以下简称“x轴”如果你让我),你可以在这里做公式http://en.wikipedia.org/wiki/Mel_scale。但是,“ …

2
在嘈杂的图像数据中检测圆
我有一张看起来像下面的图像: 我试图找到圆的半径(或直径)。我尝试使用圆形Hough变换(通过matlab imfindcircles(bw,[rmin rmax],'ObjectPolarity','bright')),并拟合到圆形或椭圆形(自制函数,对于噪声较小的数据效果很好,请参见下文)。 我还尝试了一些图像处理以获得更清晰的圆圈,例如,请参见下文: se = strel('disk', 2); bw = imdilate(bw, se); bw = bwareaopen(bw,100000); bw = edge(bw); 但是,当我将处理后的图像馈给这两种技术(霍夫和圆\椭圆拟合)时,它们都无法以体面的方式检测到圆。 这是我写的寻圈器的代码片段(matlab)[row col] = find(bw); 等高线= bwtraceboundary(bw,row(1),col(1)],'N',连接性,num_points); x = contour(:,2); y = contour(:,1); % solve for parameters a, b, and c in the least-squares sense by % using the backslash operator …

5
在非常基本的方面进行平滑处理的是什么
什么是平滑,我该怎么做? 我在Matlab中有一个数组,它是语音信号的幅度谱(FFT的128点的幅度)。如何使用移动平均线对此进行平滑?据我了解,我应该采用一定数量的元素的窗口大小,取平均值,这将成为新的第一个元素。然后将窗口向右移动一个元素,取平均值即成为第二个元素,依此类推。那真的是这样吗?我不确定自己,因为如果这样做,最终结果将少于128个元素。那么它是如何工作的以及如何帮助平滑数据点呢?还是有其他方法可以使数据平滑? 编辑:链接到后续问题

1
实践中的卡尔曼滤波器
我已经阅读了有关卡尔曼滤波器的说明,但是在实际中如何结合起来尚不清楚。它似乎主要针对机械或电气系统,因为它想要线性状态转换,并且出于相同的原因(它想要线性状态转换),对于异常检测或定位状态转换没有用处,对吗?在实践中,通常如何使用卡尔曼滤波器找到期望预先知道的成分。我已经列出了组件,如果我对需要提前知道的内容的理解不正确,请纠正我。 我相信这些不必“事先”知道: 过程噪声ww\mathbf w 观察噪声vv\mathbf v 实际状态(这是卡尔曼滤波器尝试估算的状态)xx\mathbf x 我相信使用卡尔曼滤波器需要事先知道这些: 我们应用于的线性状态转换模型(我们需要事先知道这一点,因此我们的状态必须受已知定律支配,即,当从一个状态到另一个状态的转换得到很好的理解和理解时,卡尔曼滤波器可用于校正测量值确定性的,直到一点点噪音-它不是异常发现者,也不是发现随机状态变化的工具)xx\mathbf x 控制向量uu\mathbf u 应用于输入向量控制输入​​模型(我们需要事先了解这一点,因此,使用卡尔曼滤波器时,我们还需要事先知道我们的控制值如何影响模型,最多影响一些高斯噪声,以及效果必须是线性的)uu\mathbf u 过程噪声的协方差(在Wikipedia文章中似乎与时间有关,即,它取决于时间k)-似乎我们需要提前知道这一点,并且随着时间的流逝,我认为实际上它被认为是恒定的?QQ\mathbf Qkkk A(线性)观察模型HH\mathbf H 协方差(在维基百科文章中似乎也与时间有关)-与Q相似的问题RR\mathbf RQQ\mathbf Q PS,是的,我知道其中许多依赖时间,我只是将所有下标都弄乱了。如果愿意,可以随意想象每个变量名右边和右边的小写字母。kkk

3
人类语音噪声过滤器
有人知道一个可以减弱非语音的滤波器吗?我正在写语音识别软件,想过滤掉人类语音以外的所有内容。这将包括背景噪音,microphone脚的麦克风产生的噪音,甚至是背景音乐。我已经实现了可补偿功率谱6 dB滚降的一阶滤波器,但是我仍然听到噪音(尽管语音听起来更加清晰)。我曾经考虑过使用低通滤波器,但由于两个原因,我对此并不满意: 我不知道低通前置滤波器是否会干扰其余的语音处理。即使人耳只能检测到低于20 kHz的声音,我也不想冒消除处理语音所需的任何高次谐波的风险(尽管我不知道是否是这种情况。但是我不想冒险)。 我了解某些辅音(例如f,h和s)的激发几乎完全是白噪声。可以这么说,我不想实现一个可以消除良好噪声的噪声滤波器。 理想情况下,我只想听麦克风里那个人的讲话。如果您有任何想法,或者我缺少什么,请告诉我。非常感激!

1
什么使曲面凸出错误?是由Covarinace矩阵还是由Hessian确定?
我目前正在学习有关回归的最小二乘估计(以及其他方法),并且从一些自适应算法文献中也可以看到,经常出现短语“ ...并且由于误差面是凸的...”,并且从何开始是凸面的任何深度都找不到。 ...那么究竟是什么使它凸出呢? 我发现这种重复的遗漏有点令人讨厌,因为我希望能够使用自己的成本函数设计自己的自适应算法,但是如果我无法确定我的成本函数是否产生凸误差面,我将无法由于没有全局最小值,因此在应用诸如梯度下降之类的方法时走得太远了。也许我想变得有创意-例如,也许我不想使用最小二乘作为错误标准。 深入研究(我的问题从这里开始)后,我发现,为了能够判断您是否具有凸误差面,必须确保您的Hessian矩阵是正半定的。对于对称矩阵,此测试很简单-只需确保Hessian矩阵的所有特征值均为非负值即可。(如果您的矩阵不是对称的,则可以通过将其添加到自己的转置中并借助Gramian进行相同的特征值测试来使其对称,但这在这里并不重要)。 什么是黑森州矩阵?Hessian矩阵将成本函数的部分的所有可能组合编码。那里有几个局部?特征向量中的特征数目。如何计算局部数?从原始成本函数中“手动”取偏导数。 所以这正是我所做的:我假设我们有一个mmm x数据矩阵,用矩阵表示,其中,nnnXXXmmm denotes the number of examples, and nnn denotes the number of features per example. (which will also be the number of partials). I suppose we can say that we have mmm time samples and nnn spatial samples from sensors, but the physical …

3
带非对称加窗的FFT吗?
常见的非矩形窗口函数似乎都是对称的。是否曾经有人希望在FFT之前使用非对称窗口函数?(假设是否认为FFT孔径一侧的数据比另一侧的数据更重要,或者噪声较小等)。 如果是这样,已经研究了哪种非对称窗函数,与(具有更大损耗的)偏移对称窗相比,它们将如何影响频率响应?

4
如何从图像中去除阴影?
我有这张图片 我想从图像中去除阴影。我知道许多不同的方法(例如某些形态学运算)已用于去除阴影: 我为同一张图片创建了此蒙版 我还有其他方法可以尝试使用创建的此蒙版吗? 编辑: 输入与要求尺寸相同的图像和遮罩: 编辑2:我生成了一维不变图像,但它并不完美 I = imread('shadow.jpg'); J = im2double(I); R = J(:,:,1); G = J(:,:,2); B = J(:,:,3); [len,wid] = size(R); % Generation of 2-D Log Chromaticity Image. for i = 1:len for j = 1:wid if ((R(i,j)*G(i,j)*B(i,j))~= 0) c1(i,j) = R(i,j)/((R(i,j)*G(i,j)*B(i,j))^(1/3)); c2(i,j) = G(i,j)/((R(i,j)*G(i,j)*B(i,j))^(1/3)); c3(i,j) …

2
对于这种特定的移位/比例不变模板匹配,哪种图像处理技术是理想的?
我最初在这里讨论的问题已经演变,并且在我研究更多并获得新信息后可能会变得更简单。 最重要的是,我希望能够使用计算机视觉/图像处理技术来检测此处显示的这种模式。如您所见,理想的模式由四个“ ping”组成。对象识别应该是: 移位不变 在水平方向上,图像将是周期性的。(即,向右推动,在左侧出现,反之亦然)。 (幸运的是)从纵向看,它不是周期性的。(即,推到顶部或底部,它将停止)。 比例尺不变(如您所见,ping的“厚度”可能有所不同。) 我可以继续进行下去,但是我已经附上了涵盖我意思的图像,请参见以下内容: 当然,从这个家庭可以看出,它们也可以处于不同的“规模”: 最后,这是一些我可能实际收到的“现实”场景,可能会有噪音,当您移到底部时,行可能会“褪色”,当然,图像上会有很多虚假的线条,伪像等 当然,作为最后的结局,这种“极端”场景很有可能出现: 因此,我想再次寻求一些指导,以指导我在这里应该使用哪些计算机机器视觉技术,以便获得最佳效果。 检测出图案的出现情况,如您所见,在这里我需要进行平移和缩放不变,并且在实际情况下也能获得不错的结果。(好消息是,我不需要它是旋转不变的)。到目前为止,我唯一能想到的想法就是二维关联。 我要补充一点,实际上,我没有彩色图像-我只会得到一个数字的数字,所以我想我们所说的是“灰度”。 提前致谢! PS对于它的价值,我可能会使用开放式CV。 编辑#1: 根据评论,我在此处添加了您要求的详细信息: 对于定义数据的特征,我们可以假设以下内容: 每个ping的水平长度可以变化,但是我知道它的上限和下限。在此范围内的任何事物为是,在外部事物为否。(例如,我知道ping的长度可以在1到3秒之间的任何位置)。 所有ping必须为“可见”(是),但是,最后一行可能会丢失,并且仍然要说“是”。否则否。 每个ping的垂直长度(“厚度”)可以变化,但同样,也要知道上下边界。(类似于您在这些图像中看到的内容)。在该范围内的任何事情都为是。外面没有东西。 如果是,则每个ping之间的高度应始终相同。如果不是,则为否。(例如,您可以看到所有ping相对于彼此的高度如何,在垂直轴上约为110)。因此110 +/- 5可以为是,其他任何条件都必须为否。 我想就是这样-但是,请让我知道我还能添加什么...(此外,此处显示的所有内容都应注册为YES,顺便说一句)。

3
轮廓匹配-查找轮廓位移
我在具有相同对象的两幅图像上找到了轮廓,我想找到该对象的位移和旋转。我尝试过使用该轮廓的旋转边界框,然后使用其角度和中心点,但是边界框的旋转不能正确显示轮廓旋转,因为角度a + 0,a + 90,a + 180等相同。度。还有其他寻找轮廓旋转和位移的好方法吗?也许有些使用凸包,凸缺陷?我已经在学习OpenCv中阅读过有关匹配轮廓的信息,但并没有帮助。有人可以举例吗? 例子: 我想检测例如粉红色的正方形,在第二种情况下使用笔。其他示例可能是带有一些孔,星星等的正方形。正如我所说,我想做一些全盘的事情。感谢任何建议,因为我想测试尽可能多的方法。

1
消除图像眩光
免责声明:我绝不从事信号处理。只是很好奇... ny问题非常简单:是否可以对图像进行软件处理以消除或减少前灯眩光? 这将是这样的图片: 如果可以,是否有可用的软件库?我不在乎哪种语言,我只想要功能。Slash有谁知道目前是否对此进行研究?

2
可调谐巴特沃思滤波器有任何标准的实现形式吗?
实现巴特沃思滤波器的标准方法之一是级联第二级部分,每个部分对应于一对复共轭极点。例如,对于四阶滤波器,将有两个二阶部分。如果我们考虑低通滤波器的极点位置在z平面上的变化,因为截止点设计为从0hz到Nyquist附近,则每对极点“扫出”的路径对应于单位圆内的一对弧,如下图所示[用于四阶滤波器]: 给定这些过滤器已经存在了多长时间,并且考虑到这些“弧”对应于s平面中的直线,这可以说是有人会开发出具有单个参数且能够扫极的实现形式在“运行时”(相对于“设计时”)沿弧线移动。但是,我还没有遇到过类似的事情。 提出各种方法的相对简单,尤其是在范围段内,并且愿意为此付出一点额外的计算。我想知道的是以下内容: 是否存在某种标准方法来实现给定阶数的可调谐[数字]巴特沃斯滤波器,即1)具有最佳属性(例如效率,鲁棒性),2)覆盖整个范围? 还是这真的是一个如此简单的问题,没人理会呢?如果是这样,似乎它将显示在“静态”设计选项旁边的过滤器设计程序中。 我确实发现了这一点:具有可变截止频率的多用途Butterworth滤波器,但是起初在Google搜索中,关于其中的内容似乎没有太多信息。 更新(回复:答案) 为了更清楚一点: 我正在寻找带有参数(例如[0,1]的参数)的“元设计”,该参数将自动调整从DC到Nyquist的截止(同时保持增益归一化),以用于时变系统。类似于此两极谐振器,但有Butterworth约束。想法是,计算参数比在运行时执行典型的脱机设计过程更有效。 我什至没有在寻找如何设计“元过滤器”(即用变量而不是数字进行数学运算),我想知道是否有标准[非显而易见]实现形式的选择,因为,也就是说,与静态情况相对应的直接方法最终会在时变情况下出现数字问题。 也许没有问题,而直接的方法就是实践中使用的方法。那太好了。我担心的是,在我查阅过的任何资料中,我都没有看到这个话题的明确提及,但是也许我只是错过了一些非常明显的东西,所以我问。 在这里添加更多细节的过程中,我遇到了对参数双二阶结构的一般处理,这几乎是我要寻找的(并且有一些不错的参考)。 更新2 我正在寻找与我在Jason R的第二条评论中输入的答案相同的答案,如下所示: “哦,是的,您想要以抽头状态格子形式使用某某论文中的参数化III-2b,因为它可以在使用最小数量的乘法的情况下解决某某边缘情况。” 也许没有类似的东西存在,但是我的问题是它是否存在,如果存在,它是什么,或者在哪里可以找到它? 头奖 根据提姆·韦斯科特(Tim Wescott)在Jason R的答案中的comp.dsp线程中给出的“观察者规范形式”的引用,我决定假设我可能必须开始研究控制系统文献,因此我尝试进行搜索Butterworth“状态空间”,它发现了以下非常酷的设计/实现方法,不仅是参数化的Butterworth,而且还有Chebyshev和Elliptic过滤器: Sophocles J. Orfanidis,“高阶数字参数均衡器设计”,J。Audio Eng。SOC。卷 53,第1026-1046页,2005年11月。 论文:http : //www.ece.rutgers.edu/~orfanidi/ece348/hpeq.pdf Matlab工具箱:http : //eceweb1.rutgers.edu/~orfanidi/hpeq/ 可能需要花一些时间才能深入研究,但是根据我到目前为止所读的内容,如果不是我想要的内容,我会感到非常惊讶。我将此内容提供给Jason R,作为comp.dsp参考,使我了解了Orfanidis论文。他的答案也是设计巴特沃斯滤波器的实用指南。


7
DFT和FFT之间的哪些区别使FFT如此快速?
我正在尝试了解FFT,这是到目前为止的内容: 为了找到波形中的频率幅度,必须在两个不同的相位(正弦和余弦)中将电波乘以它们正在搜索的频率,然后对它们进行平均,从而对它们进行探测。该阶段是通过与两者之间的关系找到的,其代码如下所示: //simple pseudocode var wave = [...]; //an array of floats representing amplitude of wave var numSamples = wave.length; var spectrum = [1,2,3,4,5,6...] //all frequencies being tested for. function getMagnitudesOfSpectrum() { var magnitudesOut = []; var phasesOut = []; for(freq in spectrum) { var magnitudeSin = 0; var magnitudeCos …
16 fft  dft  algorithms 

4
求正弦波的多项式近似
我想近似由下式给出的正弦波sin(πx)sin⁡(πx)\sin\left(\pi x\right)通过将多项式波形成形器为一个简单的三角波,由该函数产生的 T(x)=1−4∣∣12−mod(12x+14, 1)∣∣T(x)=1−4|12−mod⁡(12x+14, 1)|T\left(x\right)=1-4\left|\tfrac{1}{2}-\operatorname{mod}(\tfrac{1}{2}x+\tfrac{1}{4},\ 1)\right| 其中mod(x,1)mod⁡(x,1)\operatorname{mod}(x, 1)是的小数部分xxx: mod(x,y)≜y⋅(⌊xy⌋−xy)mod⁡(x,y)≜y⋅(⌊xy⌋−xy) \operatorname{mod}(x, y) \triangleq y \cdot \left( \left\lfloor \frac{x}{y}\right\rfloor - \frac{x}{y} \right) 一个泰勒级数可以用来作为波形成形。 S1(x)=πx2−πx233!+πx255!−πx277!S1(x)=πx2−πx233!+πx255!−πx277!S_1\left(x\right)=\frac{\pi x}{2}-\frac{\frac{\pi x}{2}^3}{3!}+\frac{\frac{\pi x}{2}^5}{5!}-\frac{\frac{\pi x}{2}^7}{7!} 给定上述函数,S1(T(x))S1(T(x))S_1(T(x))将为我们提供正弦波的近似近似。但是,我们需要提高到该序列的7次方才能得到一个合理的结果,并且峰值有些低,并且斜率也不会完全为零。 代替泰勒级数,我们可以使用遵循几个规则的多项式波整形器。 必须通过-1,-1和+ 1,+ 1。 -1,-1和+ 1,+ 1处的斜率必须为零。 必须对称。 满足我们要求的简单功能: S2(x)=3x2−x32S2(x)=3x2−x32S_2\left(x\right)=\frac{3x}{2}-\frac{x^3}{2} 的图表S2(T(x))S2(T(x))S_2(T(x))和sin(πx)sin⁡(πx)\sin\left(\pi x\right)相当接近,但不是亲如泰勒级数。在峰值和零交叉点之间,它们明显偏离一点。满足我们要求的更重,更准确的功能: S3(x)=x(x2−5)216S3(x)=x(x2−5)216S_3\left(x\right)=\frac{x(x^2-5)^2}{16} 就我的目的而言,这可能足够接近,但我想知道是否存在另一个函数,该函数更接近正弦波,并且在计算上更便宜。我对如何找到满足上述三个要求的功能有很好的了解,但是我不确定如何找到满足这些要求并且最接近正弦波的功能。 有什么方法可以找到模拟正弦波的多项式(当应用于三角波时)? 为了澄清,我不一定只寻找奇对称多项式,尽管这些是最直接的选择。 类似以下功能的内容也可以满足我的需求: S4(x)=3x2+x24+x44S4(x)=3x2+x24+x44S_4\left(x\right)=\frac{3x}{2}+\frac{x^2}{4}+\frac{x^4}{4} 这可以满足负范围内的要求,也可以使用分段解决方案将其应用于正范围内。例如 3x2−P(x,2)4−P(x,4)43x2−P(x,2)4−P(x,4)4\frac{3x}{2}-\frac{P\left(x,2\right)}{4}-\frac{P\left(x,4\right)}{4} 其中是有符号幂函数。PPP 我也会对使用有符号幂函数来支持分数指数的解决方案感兴趣,因为这为我们提供了另一个“扭曲旋钮”而无需添加其他系数。 a0x …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.