Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 在MATLAB中查找2d脉冲峰

在二维矩阵中寻找脉冲峰值(狄拉克三角洲)的最佳方法是什么。

更具体地说,我想找到给定图像的谐波频率,因此需要在图像绝对值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)查找坐标。



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 01:14


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.