gpt4 book ai didi

matlab - 在 MATLAB 中查找二维脉冲峰值

转载 作者:太空宇宙 更新时间:2023-11-03 19:53:04 25 4
gpt4 key购买 nike

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

更具体地说,我想找到给定图像的谐波频率,因此我需要在图像绝对值 DFT 中找到脉冲峰值。

我想过使用 findpeaks,但没有 2d 版本。我还看到了有关使用 imdilate 和/或 imextendedmax 查找普通峰的早期帖子,但那些查找二维矩阵中的所有峰,而我只对脉冲峰感兴趣。我相信 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, i.e. 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) 查找坐标。

关于matlab - 在 MATLAB 中查找二维脉冲峰值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4240931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com