バナナのエッジ処理(輪郭摘出)がうまくできない。

現在Sobelを利用したエッジ検出をしているのですが、シュガースポットが3割のバナナの輪郭は表示ができるのですが、シュガースポットが5~7割のバナナの輪郭がうまくできず、バナナの中心部がくりぬかれてまともに輪郭が取れません、何かいい案や原因などあれば教えてほしいです。

댓글 수: 2

Tohru Kikawada
Tohru Kikawada 2023년 2월 16일
元の画像添付することは可能でしょうか。よりよいアイディアが集まるかもしれません。
METACORN
METACORN 2023년 2월 19일
元の画像はこちらです

댓글을 달려면 로그인하십시오.

 채택된 답변

Tohru Kikawada
Tohru Kikawada 2023년 2월 20일

0 개 추천

色のしきい値アプリを活用することで様々な色空間でしきい値を決めることができます。
下記の例では2つのマスクを作って共通部分を抽出することでバナナのみを取り出したりすることが可能です。
RGB = imread("https://www.mathworks.com/matlabcentral/answers/uploaded_files/1300400/image.jpeg");
% RGBからHSV色空間に変換
I = rgb2hsv(RGB);
はじめにバナナの影の部分だけを抽出するマスクを生成
% 色相
channel1Min = 0.040;
channel1Max = 0.098;
% 彩度
channel2Min = 0.086;
channel2Max = 0.443;
% 明度
channel3Min = 0.671;
channel3Max = 0.871;
% 上記範囲のを満たすマスクを作成
sliderBW = ( (I(:,:,1) >= channel1Min) | (I(:,:,1) <= channel1Max) ) & ...
(I(:,:,2) >= channel2Min ) & (I(:,:,2) <= channel2Max) & ...
(I(:,:,3) >= channel3Min ) & (I(:,:,3) <= channel3Max);
BW1 = sliderBW;
次に、バナナ+影の部分を抽出するマスクを生成
% 色相
channel1Min = 0.925;
channel1Max = 0.173;
% 彩度
channel2Min = 0.218;
channel2Max = 1.000;
% 明度
channel3Min = 0.000;
channel3Max = 1.000;
% 上記範囲のを満たすマスクを作成
sliderBW = ( (I(:,:,1) >= channel1Min) | (I(:,:,1) <= channel1Max) ) & ...
(I(:,:,2) >= channel2Min ) & (I(:,:,2) <= channel2Max) & ...
(I(:,:,3) >= channel3Min ) & (I(:,:,3) <= channel3Max);
BW2 = sliderBW;
影とバナナ+影のマスクの共通部分を抽出
% 2つのマスクのANDをとる
BW = ~BW1 & BW2;
モルフォロジー処理による後処理
% 1番大きい面積の部分だけを残す
BW = bwareafilt(BW,1);
% クローズ処理で輪郭の凸凹をならす
BW = imclose(BW,strel("disk",10));
% 黒いところを穴埋め
BW = imfill(BW,"holes");
処理後のマスクを可視化
figure
imshow(im2single(RGB) .* single(BW))

댓글 수: 1

METACORN
METACORN 2023년 2월 20일
迅速にご対応いただきありがとうございます。
きちんとほかの画像でも輪郭の抽出が行えました。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Material Sciences에 대해 자세히 알아보기

제품

릴리스

R2017b

질문:

2023년 2월 16일

댓글:

2023년 2월 20일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!