フィルターのクリア

removing Non-green background from image

2 ビュー (過去 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 件)

Community Treasure Hunt

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

Start Hunting!

Translated by