findpeaks関数を使って暗い画像の中に存在する広がりのある輝点を検出したいのですが、方法はありますか?
27 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
今直面している問題は、例えば列方向にfindpeaksをかけると、複数の列にわたって同じ輝点が列ごとに検出されることと、それが同じ輝点であることが判別しにくい点です。
Ad-onとして2Dピーク検出のコードがあることは知っていますが、できればfindpeaksで対応したいです。
2 commentaires
Akira Agata
le 14 Juin 2021
findpeaks 関数を使いたい理由が何かあるということでしょうか?
輝点を検出したいということであれば、ある輝度値を閾値として画像を2値化するのがいちばん単純な方法になるかと思います。
Réponses (1)
Akira Agata
le 16 Juin 2021
Modifié(e) : Akira Agata
le 16 Juin 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')
Voir également
Catégories
En savoir plus sur 記述統計 dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!