一、实验目的与要求
- 掌握不同颜色类型图像的转换。
- 掌握彩色图像的颜色空间的转换。
二、MATLAB函数
- uint8():将变量转成无符号8比特整型
- double():将变量转成double型
- rgb2gray():将彩色图像转换为灰度图
- rgb2ind():将真彩图像转换为索引图像
- rgb2hsv():rgb图像转成hsv图像
- hsv2rgb():hsv图像转成rgb图像
三、实验内容
第一题:使用MATLAB读入一副彩色图像(自己选择),然后将RGB彩色图像转换为灰度图像。最后将RGB彩色图像的三个RGB通道和灰度图像在一张figure中分别显示出来。
代码:
i=imread('test3.jpeg'); gray=rgb2gray(i); r=i; g=i; b=i; r(:,:,2:3)=0; g(:,:,1)=0;g(:,:,3)=0; b(:,:,1:2)=0; figure; subplot(221),imshow(gray); subplot(222),imshow(r); subplot(223),imshow(g); subplot(224),imshow(b); |
运行结果与分析:
第二题:使用MATLAB读入一副彩色图像(自己选择),然后将RGB彩色图像转换为索引图像。分别转成8色、32色和256色的索引图,并在一张figure中分别显示真彩图和三种索引图。分析不同图像的效果。
代码:
clear all i=imread('test3.jpeg'); [x1,map1]=rgb2ind(i,8); [x2,map2]=rgb2ind(i,32); [x3,map3]=rgb2ind(i,256); figure; subplot(221),imshow(i); subplot(222),imshow(x1,map1); subplot(223),imshow(x2,map2); subplot(224),imshow(x3,map3); |
运行结果与分析:
第三题:使用MATLAB读入一副彩色图像(自己选择)。然后将RGB彩色图像转换为HSV图像。分别增加S和V分量(2倍),以及让H分量增加0.2,最后再由HSV重新转为RGB后显示出来。分析HSV不同分量变化的效果。
代码:
close all i = imread('test3.jpeg'); HSV = rgb2hsv(i); HSV1 = HSV; HSV1(:,:,3) = 2*HSV1(:,:,3); b = hsv2rgb(HSV1); figure imshow(b); HSV2 = HSV; HSV2(:,:,2) = 2*HSV2(:,:,2); c = hsv2rgb(HSV2); figure imshow(c); HSV3 = HSV; HSV3(:,:,1) = mod(HSV3(:,:,1)+0.2,1); d = hsv2rgb(HSV3); figure imshow(d); |
运行结果与分析:
第四题:使用MATLAB生成一张纵向随机彩色条纹图片。图片宽度600像素,高度400像素,条纹宽度10像素
随机整数函数:randi(256)% 生成[1,256]范围的随机整数
代码:
clear all
H = 400;
W = 600;
img = uint8(zeros(H,W,3));
step = 10;
numsV = W / step;
for i = 1:numsV
r = randi([0,256],1,3);
img(:,1 + (i - 1)*step:i * step,1) = r(1);
img(:,1 + (i - 1)*step:i * step,2) = r(2);
img(:,1 + (i - 1)*step:i * step,3) = r(3);
end
figure
imshow(img)
title('Vertical')