二値化画像での大きいノイズの削除
26 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
二値化された画像から特定の物体を検出したいです。(夜間撮影された水面の画像から、ペットボトル(画像内右上に存在)を特定する。)しかし、光の反射も同時に検出してしまいます。この光の反射部分を取り除く方法はありますでしょうか。また、個々の白領域のピクセル数が一定以上の場合に除去する関数(bwareaopenの逆)はありますか?よろしくお願いします。
I = readimage("DSCF0009.JPG");
%トリミング
I_Trim = imcrop(I,[0 0 3072 1500]);
%しきい値のローカル関数
I2 = night_bi1(I_Trim);
%モルフォロジー演算で二値化領域の穴を埋める
SE = strel('disk',5);
BW1 = imopen(I2,SE);
%マスクの反転
BW2 = imcomplement(BW1);
%1000ピクセル以下の領域を削除
I_Binalized = bwareaopen(BW2,1000);
I_Binalized = imclearborder(I_Binalized,8);
0 commentaires
Réponse acceptée
Hiro Yoshino
le 20 Jan 2023
こんな感じでどうでしょうか?
I = imread("DSCF0009.JPG");
imshow(I)
%トリミング
I_Trim = imcrop(I,[0 0 3072 1500]);
imshow(I_Trim)
%しきい値のローカル関数
I2 = night_bi1(I_Trim);
imshow(I2)
%モルフォロジー演算で二値化領域の穴を埋める
SE = strel('disk',5);
BW1 = imopen(I2,SE);
%マスクの反転
BW2 = imcomplement(BW1);
%1000ピクセル以下の領域を削除
I_Binalized = bwareaopen(BW2,1000);
I_Binalized = imclearborder(I_Binalized,8);
imshow(I_Binalized)
% 追加部分
cc = bwconncomp(I_Binalized)
stats = regionprops(cc,"Area")
idx = find([stats.Area] > 2000);
BW2 = ismember(labelmatrix(cc),idx);
imshow(BW2)
Plus de réponses (1)
Voir également
Catégories
En savoir plus sur Image Processing Toolbox 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!