資源簡介
此函數用于將rgb圖像轉為hsi圖像并顯示出rgb圖、灰度圖、hsi圖 ,輸入:JPG或JPEG或BMP等一般圖片名稱(加后綴),輸出:rgb圖、灰度圖、hsi圖,返回值:hsi矩陣
代碼片段和文件信息
function?HSI?=?rgbtohsi(filename)
%此函數用于將rgb圖像轉為hsi圖像并顯示出rgb圖、灰度圖、hsi圖???%rgbtohsi(‘abcd.jpg‘)
%輸入:JPG或JPEG或BMP等一般圖片名稱(加后綴)
%輸出:rgb圖、灰度圖、hsi圖
%返回值:hsi矩陣
imgrgb?=?imread(filename);??%讀入RGB彩色圖像
rgb?=?im2double(imgrgb);????%歸一化rgb值,轉為double型
r?=?rgb(::1);?????%復制r矩陣
g?=?rgb(::2);?????%復制g矩陣
b?=?rgb(::3);?????%復制b矩陣
I?=?(r?+?b?+?g)/3;???%計算I值
temp1?=?min(min(rg)b);??%計算rgb的最小值
temp2?=?r?+?b?+?g;
temp2(temp2?==?0)?=?eps;???%eps是一個極小的數:2.2204e-16避免除數為零
S?=?1?-?3.*temp1./temp2;??%計算θ
temp1?=?((r?-?g).^2?+?(r?-?b).*(g?-?b));
theta?=?acos(temp1./(temp2?+?eps));??%計算θ的角值
H?=?theta;
H(g?H?=?H/(2*pi);
H(S?==?0)?=0;???????%當S為零時,H也為零
HSI?=?cat(3HSI);?%HSI三個分量組合得到HSI圖像
gry?=?rgb2gray(imgrgb);
%整個figure中有2個圖是排成一行的,一共2行
subplot(221)image
- 上一篇:點擴散函數
- 下一篇:Matlab:單幅圖象的暗原色先驗去霧改進算法
評論
共有 條評論