【图像处理】实验1(颜色空间)
源码
clear all;
clc;
RGB = imread('airplane512c.bmp');
imshow(RGB);
RGB = mat2gray(RGB);%归一化处理
R = RGB(:,:,1);
G = RGB(:,:,2);
B = RGB(:,:,3);
Y = 0.299*R + 0.587*G + 0.114*B;
U = -0.147*R- 0.289*G + 0.436*B;
V = 0.615*R - 0.515*G - 0.100*B;
figure; imshow(Y);
figure; imshow(U);
figure; imshow(V);
结果
原图:
Y层:
U层:
V层:
思考题
真彩色图像转换成灰度8位
1.1代码
clear all;
clc;
RGB = imread('airplane512c.bmp');
RGB = mat2gray(RGB);%归一化处理
R = 0.11*RGB(:,:,1);
G = 0.59*RGB(:,:,2);
B = 0.3*RGB(:,:,3);
GRAY = ceil((R+G+B)/0.125)*0.125;
figure; imshow(GRAY);
1.1结果
RGB2HSI
clear all;
clc;
RGB = imread('airplane512c.bmp');
imshow(RGB);
RGB = mat2gray(RGB);%归一化处理
R = RGB(:,:,1);
G = RGB(:,:,2);
B = RGB(:,:,3);
num=0.5*((R-G)+(R-B));
den=sqrt((R-G).^2+(R-B).*(G-B));
theta=acos(num./(den+eps));%eps避免除数为0
H=theta;
H(B>G)=2*pi-H(B>G);
H=H/(2*pi);
num=min(min(R,G),B);
den=R+B+G;
S=1-3.*num./(den+eps);
I=den./3;
H(S==0)=0;
figure; imshow(H);
figure; imshow(S);
figure; imshow(I);
HSV
clear all;
clc;
RGB = imread('airplane512c.bmp');
imshow(RGB);
RGB = mat2gray(RGB);%归一化处理
R = RGB(:,:,1);
G = RGB(:,:,2);
B = RGB(:,:,3);
min=min(min(R,G),B);
max=max(max(R,G),B);
V=max;
S=(V-min)./V;
[m,n]=size(R);
r=(V-R)./(V-min);
g=(V-G)./(V-min);
b=(V-B)./(V-min);
H=zeros(m,n);
for i = 1:m
for j = 1:n
g1=G((i-1)*m+j);
b1=B((i-1)*m+j);
r1=R((i-1)*m+j);
if R((i-1)*m+j)==max((i-1)*m+j) && G((i-1)*m+j)==min((i-1)*m+j)
H((i-1)*m+j)=(5+b((i-1)*m+j))/6;
elseif R((i-1)*m+j)==max((i-1)*m+j) && G((i-1)*m+j)~=min((i-1)*m+j)
H((i-1)*m+j)=(1-g((i-1)*m+j))/6;
elseif G((i-1)*m+j)==max((i-1)*m+j) && B((i-1)*m+j)==min((i-1)*m+j)
H((i-1)*m+j)=(1+r((i-1)*m+j))/6;
elseif G((i-1)*m+j)==max((i-1)*m+j) && B((i-1)*m+j)~=min((i-1)*m+j)
H((i-1)*m+j)=(3-b((i-1)*m+j))/6;
elseif B((i-1)*m+j)==max((i-1)*m+j) && R((i-1)*m+j)==min((i-1)*m+j)
H((i-1)*m+j)=(3+g((i-1)*m+j))/6;
else
H((i-1)*m+j)=(5-r((i-1)*m+j))/6;
end
end
end
figure; imshow(H);
figure; imshow(S);
figure; imshow(V);