how to convert from grayscale to rgb by lightness method ??

4 vues (au cours des 30 derniers jours)
Hanan Elsayed
Hanan Elsayed le 24 Août 2021
Commenté : Hanan Elsayed le 24 Août 2021
how to convert from grayscale to rgb by lightness (desaturation) method (matlab code)??
  2 commentaires
Turlough Hughes
Turlough Hughes le 24 Août 2021
What have you tried so far?
Hanan Elsayed
Hanan Elsayed le 24 Août 2021
This is my last attempt, but it didn't work
i=imread('peppers.png');
for j=1:size(i,1)
for k=1:size(i,2)
if i(j,k,1)>i(j,k,2)&&i(j,k,3)
max=i(j,k,1);
elseif i(j,k,2)>i(j,k,1)&&i(j,k,3)
max=i(j,k,2);
else
max=i(j,k,3);
end
if i(j,k,1)<i(j,k,2)&&i(j,k,3)
min=i(j,k,1);
elseif i(j,k,2)<i(j,k,1)&&i(j,k,3)
min=i(j,k,2);
else
min=i(j,k,3);
end
newimage=(max+min)/2;
end
end
imshow(newimage);

Connectez-vous pour commenter.

Réponse acceptée

Turlough Hughes
Turlough Hughes le 24 Août 2021
Modifié(e) : Turlough Hughes le 24 Août 2021
You can do the following:
I=imread('peppers.png');
newImage = uint8(( double(min(I,[],3)) + double(max(I,[],3)) ) ./ 2);
imshow(newImage)
  5 commentaires
Turlough Hughes
Turlough Hughes le 24 Août 2021
Thanks @Image Analyst. I should have converted to a datatype not capped at 255 in order to add the values. I've edited the answer with the correction.
Actually, one could also just do the following without converting datatypes:
I=imread('peppers.png');
newImage = min(I,[],3)./2 + max(I,[],3)./2;
imshow(newImage)
Hanan Elsayed
Hanan Elsayed le 24 Août 2021
Thank you, I benefited a lot 💜💜💜💜

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Image Processing Toolbox dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by