云昴

【图像处理】实验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层: Y层

U层: U层

V层: 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结果

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);

H S 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);

H S V

云昴