필터 지우기
필터 지우기

Sir, How to extract color and shape features for a leaf image?

조회 수: 5 (최근 30일)
greeshma reddy chowdavaram
greeshma reddy chowdavaram 2018년 2월 19일
답변: Image Analyst 2023년 6월 17일
To detect disease in an image we need color and shape features to relate to the database.

답변 (2개)

Shree Harsha Kodi
Shree Harsha Kodi 2023년 6월 17일
% Step 1: Read the leaf image
leafImage = imread('leaf.jpg');
% Step 2: Preprocess the image (if needed)
% Step 3: Extract color features
hsvImage = rgb2hsv(leafImage);
hueChannel = hsvImage(:, :, 1);
hueMean = mean(hueChannel(:));
% Step 4: Extract shape features
binaryImage = imbinarize(rgb2gray(leafImage), graythresh(leafImage));
binaryImage = imopen(binaryImage, strel('disk', 5));
leafArea = regionprops(binaryImage, 'Area');
% Step 5: Combine the extracted features
featureVector = [hueMean, leafArea.Area];
% Step 6: Perform further analysis or comparison with a database
% Display the extracted features
disp('Extracted Features:');
disp('-------------------');
disp(['Hue Mean: ', num2str(hueMean)]);
disp(['Leaf Area: ', num2str(leafArea.Area)]);
disp('-------------------');

Image Analyst
Image Analyst 2023년 6월 17일
Search for the tag leaf. There have been so many in the past and I've given code for lots of them.
For example, the attached.
% Mask a leaf out of an RGB image.
clc; % Clear the command window.
clear all;
close all;
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 24;
%===============================================================================
% Read in leaf color demo image.
folder = pwd
baseFileName = 'leaf.jpg';
% Get the full filename, with path prepended.
fullFileName = fullfile(folder, baseFileName);
if ~exist(fullFileName, 'file')
% Didn't find it there. Check the search path for it.
fullFileName = baseFileName; % No path this time.
if ~exist(fullFileName, 'file')
% Still didn't find it. Alert user.
errorMessage = sprintf('Error: %s does not exist.', fullFileName);
uiwait(warndlg(errorMessage));
return;
end
end
rgbImage = imread(fullFileName);
% Get the dimensions of the image. numberOfColorBands should be = 3.
[rows, columns, numberOfColorChannels] = size(rgbImage);
% Display the original color image.
subplot(2, 2, 1);
imshow(rgbImage);
title('Original Color Image', 'FontSize', fontSize, 'Interpreter', 'None');
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'Outerposition', [0, 0, 1, 1]);
% Extract the individual red, green, and blue color channels.
% redChannel = rgbImage(:, :, 1);
% greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
% Create a mask of the background only.
mask = blueChannel > 200;
% Display the mask image.
subplot(2, 2, 2);
imshow(mask);
title('Mask Image', 'FontSize', fontSize, 'Interpreter', 'None');
% Mask out the leaf, leaving only the background.
% Mask the image using bsxfun() function
maskedRgbImage = bsxfun(@times, rgbImage, cast(mask, 'like', rgbImage));
% Display the mask image.
subplot(2, 2, 3);
imshow(maskedRgbImage);
title('Background-Only Image', 'FontSize', fontSize, 'Interpreter', 'None');
% Mask out the background, leaving only the leaf.
% Mask the image using bsxfun() function
maskedRgbImage = bsxfun(@times, rgbImage, cast(~mask, 'like', rgbImage));
% Display the mask image.
subplot(2, 2, 4);
imshow(maskedRgbImage);
title('Leaf-Only Image', 'FontSize', fontSize, 'Interpreter', 'None');

카테고리

Help CenterFile Exchange에서 Agriculture에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by