![]() |
在MATLAB中查找2d脉冲峰
在二维矩阵中寻找脉冲峰值(狄拉克三角洲)的最佳方法是什么。
更具体地说,我想找到给定图像的谐波频率,因此需要在图像绝对值DFT中找到脉冲峰值。 我考虑过使用findpeaks,但没有2d版本。我还看到了有关使用imdilate和/或imextendedmax查找普通峰的早期文章,但这些文章在2d矩阵中找到了所有峰,而我只对脉冲峰感兴趣。我确定DSP人士对此有共同的秘诀... 请帮忙, 谢谢 [B]回答:[/B] 您要做的是找到具有高对比度的峰。因此,您需要一种方法来识别局部最大值,并需要一种方法来测量峰值与周围值之间的差异。对此差异进行阈值确定将为您确定脉冲峰值。 假设您的输入信号称为signal %# dilate to find, for every pixel, the maximum of its neighbors dilationMask = ones(3); dilationMask(5) = 0; dilSignal = imdilate(signal, dilationMask); %# find all peaks %# peaks = signal > dilSignal; %# find large peaks peaks by thresholding, ie you accept a peak only %# if it's more than 'threshold' higher than its neighbors peaks = (signal - dilSignal) > threshold; peaks是一个逻辑数组,只要有一个好的峰,它的值就为1。您可以使用它从具有signal(peaks)信号中读取峰高,并使用find(peaks)查找坐标。 [url=https://stackoverflow.com/questions/4240931]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 01:03。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.