how to remove green pixels?

i do plant disease detection and classification.i need a code to remove green pixels in matlab.i have done background removal using color thresholder app in matlab. I mean green pixels remove- " the pixels where the level of green is higher than red and blue are identified and remove by application of the mask.These green pixels most probably represent healthy areas in the leaves. Thus,after removing the background and green pixels,the region left in an image is the region of our interest" said in my thesis reference paper. If i get this green pixels remove, then i will do feature extraction using GLCM. So, how do i continue to remove green pixels? My code is given in the following:
% Title : Potato Leaf Diseases Detection based on Multiclass SVM
clc
close all
clear all
[filename, pathname] = uigetfile({'*.*';'*.bmp';'*.jpg';'*.gif'}, 'Pick a Leaf Image File');
I = imread([pathname,filename]);
I = imresize(I,[256,256]);
figure, imshow(I); title('Input Leaf Image');
%Preprocessing using median filtering
I1 = rgb2gray(I);
I2 = medfilt2(I1,[3 3]);
%imshow(I2);title('Filtered Image');
%%Image Segmentation
%Background Removing using Color Thresholder app
[bw,rgb] = background_removal(I);
This is my image after background masking using color thresholder app in matlab; then, how to remove green pixels ? I want to get only disease leaf area.

 Accepted Answer

val= max(rgb,[],3);
mask=uint8(rgb(:,:,2)~=val);
imshow(rgb.*mask);

11 Comments

Thanks, Matt! Can u explain me theory concept of this code? Please!
Wasn't that explained to you in your previous and very similar thread?
it tells me error when i run this. "Error using .* Integers can only be combined with integers of the same class, or scalar doubles." How do i solve?
Convert mask to the same integer type as rgb, or vice versa, e.g.,
imshow(uint8(rgb).*mask);
It until false. Undefined function unit8 for input arguments of logical said me.
You typed "uint8" incorrectly.
Yoon ThiriZaw
Yoon ThiriZaw on 22 Jul 2018
Edited: Yoon ThiriZaw on 22 Jul 2018
It until false,Matt in (.*) matrix dimensions must agree. Problem is .* in this.
Yoon, it looks like you're using my code for finding the leaf, and I usually mask RGB images with a mask using this code:
% Mask the image using bsxfun() function to multiply the mask by each channel individually.
maskedRgbImage = bsxfun(@times, rgbImage, cast(mask, 'like', rgbImage));
Perhaps you deleted that when you were adapting it.
Yes! Image Analyst, thanks! I get this code but when i do feature extraction using GLCM(Gray Level Cooccurrence Matrix) as the next step, i think it is false. How do i continue?
You fix the bug that is giving you false. graycomatrix() and graycoprops() do not return false.
Yoon ThiriZaw
Yoon ThiriZaw on 23 Jul 2018
Edited: Yoon ThiriZaw on 23 Jul 2018
Can you give me code as an feature extraction example? I don't know how to explain when my presentation this segmentatin step bsxfun.

Sign in to comment.

More Answers (0)

Categories

Find more on Agriculture in Help Center and File Exchange

Products

Release

R2014a

Asked:

on 20 Jul 2018

Edited:

on 23 Jul 2018

Community Treasure Hunt

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

Start Hunting!