findpeaks関数を使って暗い画像の中に存在する広がりのある輝点を検出したいのですが、方法はありますか?
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
今直面している問題は、例えば列方向にfindpeaksをかけると、複数の列にわたって同じ輝点が列ごとに検出されることと、それが同じ輝点であることが判別しにくい点です。
Ad-onとして2Dピーク検出のコードがあることは知っていますが、できればfindpeaksで対応したいです。
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/652160/image.jpeg)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/652165/image.jpeg)
2 Kommentare
Akira Agata
am 14 Jun. 2021
findpeaks 関数を使いたい理由が何かあるということでしょうか?
輝点を検出したいということであれば、ある輝度値を閾値として画像を2値化するのがいちばん単純な方法になるかと思います。
Antworten (1)
Akira Agata
am 16 Jun. 2021
Bearbeitet: Akira Agata
am 16 Jun. 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')
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/654470/image.png)
Siehe auch
Kategorien
Mehr zu 記述統計 finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!