removing Non-green background from image

1 回表示 (過去 30 日間)
mehmet oztu
mehmet oztu 2015 年 8 月 22 日
コメント済み: Madhulatha K N 2018 年 7 月 11 日
hello,
I'm trying to eliminate non-green background from an image. You can see my below codes, I think It's working. But the thing is, after this process (or any other suggestion), I want to keep leaves as exactly in original photos without background.
Many thanks in advance.
Orjinal photo:
I want to get like this(you can see background is black, means it's removed):
al1 = imread('23.JPG');
r=single(al1(:,:,1));
g=single(al1(:,:,2));
b=single(al1(:,:,3));
ExGreen=2*g-r-b;
ExRed=1.4*r-g-b;
dev=imsubtract(ExGreen,ExRed);
% otsu thresholding
thres_level = multithresh(dev,1); % automatic thresholding
seg_I = imquantize(dev,thres_level);
RGB = label2rgb(seg_I,'gray');
RGB2 = single(bwareaopen(RGB,1000000)); %clean the areas smaller than 1million pixels
k=imfuse(al1, RGB2,'montage'); %composite of 2images
imshow(k)
  1 件のコメント
Madhulatha K N
Madhulatha K N 2018 年 7 月 11 日
thank you for posting the question. it is helping me with a project where I need to do the same as you are doing. But what are ExGreen nd ExRed variables in the code? what are they being calculated for?

サインインしてコメントする。

採用された回答

Jon
Jon 2015 年 8 月 23 日
Try this:
BW = RGB2(:,:,1);
BW = uint8(imfill(BW,'holes'));
leaves_only = al1;
for a = 1:3
leaves_only(:,:,a) = leaves_only(:,:,a).*BW;
end
imshow(leaves_only)
  1 件のコメント
mehmet oztu
mehmet oztu 2015 年 8 月 23 日
many many thanks Jon, appreciated.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeAgriculture についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by