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

2 次查看(过去 30 天)
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