Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
在二维矩阵中寻找脉冲峰值(狄拉克三角洲)的最佳方法是什么。
更具体地说,我想找到给定图像的谐波频率,因此需要在图像绝对值DFT中找到脉冲峰值。 我考虑过使用findpeaks,但没有2d版本。我还看到了有关使用imdilate和/或imextendedmax查找普通峰的早期文章,但这些文章在2d矩阵中找到了所有峰,而我只对脉冲峰感兴趣。我确定DSP人士对此有共同的秘诀... 请帮忙, 谢谢 回答: 您要做的是找到具有高对比度的峰。因此,您需要一种方法来识别局部最大值,并需要一种方法来测量峰值与周围值之间的差异。对此差异进行阈值确定将为您确定脉冲峰值。 假设您的输入信号称为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)查找坐标。 更多&回答... |
![]() |
![]() |