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

조회 수: 11 (최근 30일)
Jinu Sebastian
Jinu Sebastian 2020년 10월 6일
편집: DGM 2021년 11월 4일
I want to separate intensity components from an rgb image by converting it to HSI space

답변 (2개)

KSSV
KSSV 2020년 10월 6일
편집: KSSV 2020년 10월 6일

DGM
DGM 2021년 5월 14일
편집: DGM 2021년 11월 4일
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.

카테고리

Help CenterFile Exchange에서 Import, Export, and Conversion에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by