Effacer les filtres
Effacer les filtres

how can i covert rgb image to HSI and separate the intensity component alone

2 vues (au cours des 30 derniers jours)
Jinu Sebastian
Jinu Sebastian le 6 Oct 2020
Modifié(e) : DGM le 4 Nov 2021
I want to separate intensity components from an rgb image by converting it to HSI space

Réponses (2)

KSSV
KSSV le 6 Oct 2020
Modifié(e) : KSSV le 6 Oct 2020

DGM
DGM le 14 Mai 2021
Modifié(e) : DGM le 4 Nov 2021
If you just want the intensity (as in HSI) of an image:
ipict = mean(rgbpict,3);
If instead you want value (as in HSV)
vpict = max(rgbpict,[],3);
or if you want lightness (as in HSL)
lpict = min(rgbpict,[],3)/2 + max(rgbpict,[],3)/2;
If you want luma (as in YIQ, YUV, YPbPr, YCbCr, etc)
factors = permute([0.299 0.587 0.114],[1 3 2]); % Rec 470/601 (analog/digital SD video)
%factors = permute([0.2126 0.7152 0.0722],[1 3 2]); % Rec 709 (HDTV video)
ypict = sum(bsxfun(@times,rgbpict,factors),3);
If you want L* lightness (as in CIELAB, CIELUV)
Lpict = rgb2lightness(rgbpict); % introduced in R2019a
otherwise, you can use LAB conversion tools to extract it if you're running something older.

Catégories

En savoir plus sur Import, Export, and Conversion 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