RGB to L*a*b color space conversion

7 ビュー (過去 30 日間)
Keerthi  D
Keerthi D 2020 年 8 月 4 日
編集済み: Image Analyst 2020 年 8 月 22 日
clc;
clear;
clear all;
fontSize=10;
%original Image
rgbImage = imread('C:\Users\Keerthi Dev\Desktop\tomato_dataset\Tomato_late_blight_water_mold\late300.jpg');%read image
subplot(2, 3, 1);
imshow(rgbImage, []);
title('Original Image', 'FontSize', fontSize);
set(gcf, 'Position', get(0,'Screensize')); % Maximize figure.
rgbImage = imadjust(rgbImage,stretchlim(rgbImage),[]);
rgbImage = imreducehaze(rgbImage);
%subplot(2, 2, 2);
%imshow(rgbImage);
grayImage = rgb2gray(rgbImage);
subplot(2, 3, 2);
imshow(grayImage, []);
title('Grayscale Image', 'FontSize', fontSize);
%freehand code
hFH = imfreehand();
% Create a binary image ("mask") from the ROI object.
binaryImage = hFH.createMask();
xy = hFH.getPosition;
blackMaskedImage = grayImage;
blackMaskedImage(~binaryImage) = 0;
maskedRgbImage = bsxfun(@times,rgbImage,cast(binaryImage, 'like',rgbImage));
subplot(2, 3, 3);
imshow(maskedRgbImage);
title('Binary mask of the region', 'FontSize', fontSize);
%change background as white
%rgbImage = imread('image.png');
%subplot(2, 2, 1);
%imshow(rgbImage);
mask = all(maskedRgbImage == 0, 3);
% Take the largest blob
mask = bwareafilt(mask, 1);
%subplot(2, 3, 4);
%imshow(mask);
maskedRgbImage1 = maskedRgbImage + uint8(255 * repmat(mask, [1, 1, 3]));
subplot(2, 3, 5);
imshow(maskedRgbImage1);
title('complement of the region', 'FontSize', fontSize);
%maskedRgbImage = rgbImage;
%maskedRgbImage = imadjust(maskedRgbImage,stretchlim(maskedRgbImage),[]);
%maskedRgbImage = imreducehaze(maskedRgbImage);
%figure
%imshow(maskedRgbImage);
%lab = rgb2lab(maskedRgbImage);
%figure,imshow(lab);
%cropping the image
m1=min(maskedRgbImage1,[],3);
binaryImage = m1 < 200;
binaryImage = bwareafilt(binaryImage, 1);
[rows,columns]=find(binaryImage);
row1=min(rows);
row2=max(rows);
col1=min(columns);
col2=max(columns);
croppedImage = maskedRgbImage1(row1:row2,col1:col2,:);
subplot(2,3,6);
imshow(croppedImage);
title('cropped image', 'FontSize', fontSize);
Result of this code is,
The next pre-processing step is the colour space conversion. The colour space is converted from a device dependent RGB model into a device independent model. The proposed system uses L*a*b* (L* signifies the lightness, a* and b* are the chromaticity layers) colour space. The background eliminated resized RGB image is converted into L*a*b* first, then, the segmentation module is executed on ‘a*b*’ channel. Using only two channels for colour representation decreases the processing time as well.
So how do I do that? Please help me.

回答 (1 件)

Image Analyst
Image Analyst 2020 年 8 月 22 日
編集済み: Image Analyst 2020 年 8 月 22 日
However just be aware that the lab values you get are just arbitrary "book formula" lab values, and will not be the same lab values you'd get from a spectrophotometer or colorimeter instrument. Hopefully you understand what that means.
You can also use the Color Thresholder on the Apps tab of the tool ribbon.
Oh, and search the "leaf" tag to the right on this page. Click leaf. Leaf analysis seems to be one of the most popular image processing projects, along with fruit, Indian money, and OCR.

カテゴリ

Help Center および File ExchangeImage Data Workflows についてさらに検索

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by