4

2次元行列のインパルスピーク(ディラックのデルタ)を見つけるための最良の方法は何ですか。

具体的には、特定の画像の高調波周波数を見つけたいので、画像の絶対値DFTでインパルスピークを見つける必要があります。

findpeaksを使用することを考えましたが、2Dバージョンはありません。また、imdilateおよび/またはimextendedmaxを使用して通常のピークを見つけることに関する以前の投稿を見ましたが、それらは2Dマトリックス内のすべてのピークを見つけますが、私はインパルスピークにのみ興味があります。DSPの人々はこれについて共通のレシピを持っていると確信しています...

助けてください、

ありがとう

4

3 に答える 3

6

やりたいことは、コントラストの高いピークを見つけることです。したがって、極大値を特定する方法と、ピーク値と周囲の値の差を測定する方法が必要です。この差にしきい値を設定すると、インパルス ピークが識別されます。

入力信号が呼び出されたと仮定します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)

于 2010-11-22T13:15:42.810 に答える
2

私が書いたこの論文には、2D でローカル ピークを高速に検出するための Matlab ソース コードが含まれています。これは、Mathworks Image Processing Toolbox と同様に機能imregionalmax()しますが、ローカル近傍半径を指定できます: 大きな半径 -> まばらなピーク。

まばらなインパルスが予想されるため、このnonmaxsupp_scanline()関数が適している可能性があります。

于 2011-03-09T10:56:39.257 に答える
0

findpeaksアルゴリズムは非常に簡単です。要素が隣接する要素よりも大きい場合、それはピークです。これの 2D バージョンを作成するのは非常に簡単です。

于 2010-11-21T23:24:28.947 に答える