二値化画像での大きいノイズの削除
조회 수: 25 (최근 30일)
이전 댓글 표시
二値化された画像から特定の物体を検出したいです。(夜間撮影された水面の画像から、ペットボトル(画像内右上に存在)を特定する。)しかし、光の反射も同時に検出してしまいます。この光の反射部分を取り除く方法はありますでしょうか。また、個々の白領域のピクセル数が一定以上の場合に除去する関数(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
채택된 답변
Hiro Yoshino
2023년 1월 20일
こんな感じでどうでしょうか?
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)
추가 답변 (1개)
참고 항목
카테고리
Help Center 및 File Exchange에서 イメージのセグメンテーションと解析에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!