findpeaks関数を使って暗い画像の中に存在する広がりのある輝点を検出したいのですが、方法はありますか?
16 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
今直面している問題は、例えば列方向にfindpeaksをかけると、複数の列にわたって同じ輝点が列ごとに検出されることと、それが同じ輝点であることが判別しにくい点です。
Ad-onとして2Dピーク検出のコードがあることは知っていますが、できればfindpeaksで対応したいです。
2 Commenti
Akira Agata
il 14 Giu 2021
findpeaks 関数を使いたい理由が何かあるということでしょうか?
輝点を検出したいということであれば、ある輝度値を閾値として画像を2値化するのがいちばん単純な方法になるかと思います。
Risposte (1)
Akira Agata
il 16 Giu 2021
Modificato: Akira Agata
il 16 Giu 2021
試しに簡単なプログラムを作成してみました。行方向と列方向でピークを検出してプロットすると、検出されたピーク点は輝点の上に十字型に表示されます(右図)。ただ、輝点内の輝度分布によっては十字の縦と横の線がきれいなラインにならない場合や、中央でクロスしない場合などがあり、ここから輝点の中心を検出するのは難しい印象です。
% 輝点のある画像を作成
I = imread('coins.png');
I = imgaussfilt(I,10);
% findpeaksで行,列それぞれの方向のピークを検出
J = false(size(I));
for kk = 1:size(I,2)
[~, pt] = findpeaks(double(I(:,kk)),...
'MinPeakProminence',50);
J(pt,kk) = true;
end
for kk = 1:size(I,1)
[~, pt] = findpeaks(double(I(kk,:)),...
'MinPeakProminence',50);
J(kk,pt) = true;
end
% 元画像と検出した行,列各方向のピーク位置を表示
imshowpair(I,J,'montage')
Vedere anche
Categorie
Scopri di più su 記述統計 in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!