目录
读入两幅彩色图像,并分别显示图像的尺寸信息,裁剪两幅图片为相同的正方形尺寸,并保存为两幅新的图片A和B。
将两幅彩色图像A与B 按照不同的比例 (0.7:0.3, 0.5: 0.5, 0.3:0.7) 相加合成一幅新的图像,并在一个图像窗口中显示原始图像、三个合成图像。
将图像从RGB颜色空间转换为灰度空间,分别用加权法、均值法和最大值法、以及matlab自带的函数rgb2gray.
分别对RGB、CMYK及HSI三种颜色模型的图像进行亮度增强并显示。
-
实验目的
- 掌握彩色图像读入、显示、存储等基本函数的使用方法。
- 掌握不同颜色模型及模型间转化的基本理论和实现方法。
-
实验设备及条件
计算机一台(带有Matlab2015版本以上的软件环境),以及实验所需图片。
-
实验内容
-
读入两幅彩色图像,并分别显示图像的尺寸信息,裁剪两幅图片为相同的正方形尺寸,并保存为两幅新的图片A和B。
-
%图像信息显示 a = imread('apic27858.jpg'); b = imread('OIP-C.jpg'); [h1,w1] = size(a); [h2,w2] = size(b); figure,subplot(2,2,1),imshow(a),title('866*1950'); subplot(2,2,2),imshow(b),title('474*1422');
a,b分别为读入的两张图片,[h1,w1],[h2,w2]为两张图片的长和宽,其值可以在matlab界面左边的工作区找到。
-
%图像裁剪 min_size = min(h1,h2); %我这里用较小的那一个高进行裁剪 A = imcrop(a,[1,1,min_size-1,min_size-1]); B = imcrop(b,[1,1,min_size-1,min_size-1]); subplot(2,2,3),imshow(A),title('裁剪后图像1'); subplot(2,2,4),imshow(B),title('裁剪后图像2');
-
将两幅彩色图像A与B 按照不同的比例 (0.7:0.3, 0.5: 0.5, 0.3:0.7) 相加合成一幅新的图像,并在一个图像窗口中显示原始图像、三个合成图像。
-
%图像按照权值叠加 imgc_1 = imadd(0.7*A,0.3*B); imgc_2 = imadd(0.5*A,0.5*B); imgc_3 = imadd(0.3*A,0.7*B); figure(3),subplot(2,3,1),imshow(a),title('原图1'); subplot(2,3,2),imshow(b),title('原图2'); subplot(2,3,4),imshow(imgc_1),title('0.7*0.3'); subplot(2,3,5),imshow(imgc_2),title('0.5*0.5'); subplot(2,3,6),imshow(imgc_3),title('0.3*0.7');
-
将图像从RGB颜色空间转换为灰度空间,分别用加权法、均值法和最大值法、以及matlab自带的函数rgb2gray.
加权法就是 GRAY=0.3*R+0.59*G+0.11*B
均值法就是 GRAY= (R+G+B)/3
最大值发就是 GRAY= max(R,G,B)
并在一个图像窗口中显示这四个灰度图像,并做讨论。
%图像的三原色
R1 = A(:, :, 1),R2 = B(:,:,1);
G1 = A(:, :, 2),G2 = B(:,:,2);
B1 = A(:, :, 3),B2 = B(:,:,3);
gray_img1 = rgb2gray(A),gray_img2 = rgb2gray(B);
gray_img1_jq = R1*0.3+G1*0.59+B1*0.11,gray_img2_jq = R2*0.3+G2*0.59+B2*0.11;
gray_img1_jz =(R1+G1+B1)/3,gray_img2_jz = (R2+G2+B2)/3;
gray_img1_zd = max(R1,max(G1,B1)),gray_img2_zd = max(R2,max(G2,B2));
%图像1
figure(4),subplot(2,2,1),imshow(gray_img1),title('图像1rgb2gray灰度图');
subplot(2,2,2),imshow(gray_img1_jq),title('图像1加权灰度图');
subplot(2,2,3),imshow(gray_img1_jz),title('图像1均值灰度图');
subplot(2,2,4),imshow(gray_img1_zd),title('图像1最大值灰度图');
%图像2
figure(5),subplot(2,2,1),imshow(gray_img2),title('图像2rgb2gray灰度图');
subplot(2,2,2),imshow(gray_img2_jq),title('图像2加权灰度图');
subplot(2,2,3),imshow(gray_img2_jz),title('图像2均值灰度图');
subplot(2,2,4),imshow(gray_img2_zd),title('图像2最大值灰度图');
分别对RGB、CMYK及HSI三种颜色模型的图像进行亮度增强并显示。
alpha = 2.0;
%RGB增强
R1_zq1 = min(alpha * R1, 255),G1_zq1 = min(alpha * G1,255),B1_zq1 = min(alpha * B1,255);
RGB1 = cat(3, R1_zq1, G1_zq1, B1_zq1);
R2_zq1 = min(alpha * R2, 255),G2_zq1 = min(alpha * G2,255),B2_zq1 = min(alpha * B2,255);
RGB2 = cat(3, R2_zq1, G2_zq1, B2_zq1);
figure(6),subplot(2,4,1),imshow(A),title('原图1'),subplot(2,4,2),imshow(B),title('原图2'),
subplot(2,4,3),imshow(RGB1),title('图像1rgb增强图像'),subplot(2,4,4),imshow(RGB2),title('图像2rgb增强图像');
%CMYK增强
CMYK1 = 2*imcomplement(A),CMYK2 = 2*imcomplement(B);
subplot(2,4,5),imshow(CMYK1),title('图像1 cmyk增强图像'),subplot(2,4,6),imshow(CMYK2),title('图像2 cmyk增强图像');
% HSI增强
HSI1 = 2*rgb2hsv(A),HSI2 = 2*rgb2hsv(B);
subplot(2,4,7),imshow(HSI1),title('图像1 HSI增强图像'),subplot(2,4,8),imshow(HSI2),title('图像2 HSI增强图像');
我这里将增强的图像放到一起,如果觉得不好看可以将图像放到多个窗口