图像RGB向HSI转换,R=G=B时,H值为多少
展开全部
这是用matlab算图像RGB和HSI的程序。
R=im(:,:,1);
G=im(:,:,2);
B=im(:,:,3);
R=reshape(R,[s(1),s(2)]);
G=reshape(G,[s(1),s(2)]);
B=reshape(B,[s(1),s(2)]);
r=mean(mean(R));%求R分量的均值
g=mean(mean(G));%求G分量的均值
b=mean(mean(B));%求B分量的均值
下面是RGB转HSI的程序
H=zeros(y,x);
S=H;
HS_I=H;
for i=1:x
for j=1:y
HS_I(j,i)=((myI(j,i,1)+myI(j,i,2)+myI(j,i,3))/3);
%I的转换,表示明暗程度
S(j,i)=1-3*min(myI(j,i,:))/(myI(j,i,1)+myI(j,i,2)+myI(j,i,3));
%S的转换,表示颜色的深浅(或者S=max(R,G,B)-min(R,G,B))
if ((myI(j,i,1)==myI(j,i,2))(myI(j,i,2)==myI(j,i,3)))
% 三者不相等
Hdegree=0;
else
Hdegree=acos(0.5*(2*myI(j,i,1)-myI(j,i,2)-myI(j,i,3))/((myI(j,i,1)-myI(j,i,2))^2+(myI(j,i,1)-myI(j,i,3))*(myI(j,i,2)-myI(j,i,3)))^0.5);%H的转换,表示不同的颜色
end
if (myI(j,i,2)>=myI(j,i,3))
H(j,i)=Hdegree; % G≥B, H 在[0,π]范围内
else
H(j,i)=(2*pi-Hdegree); % G < B, H 在(π,2π]范围内
end
end
end
R=im(:,:,1);
G=im(:,:,2);
B=im(:,:,3);
R=reshape(R,[s(1),s(2)]);
G=reshape(G,[s(1),s(2)]);
B=reshape(B,[s(1),s(2)]);
r=mean(mean(R));%求R分量的均值
g=mean(mean(G));%求G分量的均值
b=mean(mean(B));%求B分量的均值
下面是RGB转HSI的程序
H=zeros(y,x);
S=H;
HS_I=H;
for i=1:x
for j=1:y
HS_I(j,i)=((myI(j,i,1)+myI(j,i,2)+myI(j,i,3))/3);
%I的转换,表示明暗程度
S(j,i)=1-3*min(myI(j,i,:))/(myI(j,i,1)+myI(j,i,2)+myI(j,i,3));
%S的转换,表示颜色的深浅(或者S=max(R,G,B)-min(R,G,B))
if ((myI(j,i,1)==myI(j,i,2))(myI(j,i,2)==myI(j,i,3)))
% 三者不相等
Hdegree=0;
else
Hdegree=acos(0.5*(2*myI(j,i,1)-myI(j,i,2)-myI(j,i,3))/((myI(j,i,1)-myI(j,i,2))^2+(myI(j,i,1)-myI(j,i,3))*(myI(j,i,2)-myI(j,i,3)))^0.5);%H的转换,表示不同的颜色
end
if (myI(j,i,2)>=myI(j,i,3))
H(j,i)=Hdegree; % G≥B, H 在[0,π]范围内
else
H(j,i)=(2*pi-Hdegree); % G < B, H 在(π,2π]范围内
end
end
end
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询