1. rgb2gray
rgb2gray 通过计算 R、G 和 B 分量的加权和,将 RGB 值转换为灰度值:
0.2989 * R + 0.5870 * G + 0.1140 * B
这些权重与 rgb2ntsc 函数用于计算 Y 分量的权重相同。
在舍入到小数点后 3 位之后,rgb2gray 中用来计算灰度值的系数与 Rec.ITU-R BT.601-7 中用来计算亮度 (E’y) 的系数相同。
Rec.ITU-R BT.601-7 使用以下公式计算 E’y:
0.299 * R + 0.587 * G + 0.114 * B
2.基本函数实现
%% 显示图片索引和灰度图像
map=imread('h.jpeg')%读取图片文件
image1=rgb2gray(map)%灰度化
subplot(3,4,1)
imshow(map)%显示图片文件
title("原图")
subplot(3,4,2)
imshow(image1)
title("灰度化")
%% 利用膨胀函数平移图像
se = translate(strel(1), [30 30])%将一个平面化元素分别向下和向右移动30个位置
image2 = imdilate(map, se)%利用膨胀函数平移图像
subplot(3,4,3)
imshow(image2)
title("平移")
%% 水平翻转和上下翻转
image3 = fliplr(map)%图像水平镜像 left/right
image4 = flipud(map)%图像垂直镜像 up/down
subplot(3,4,4)
imshow(image3)
title("水平镜像")
subplot(3,4,5)
imshow(image4)
title("垂直镜像")
%% 图像旋转
image5 = imrotate(map, 30, 'bilinear', 'crop')%双线性插值法将图像逆时针旋转30°,并裁减图像,使其和原图像大小一致
subplot(3,4,6)
imshow(image5)
title("逆时针旋转30°")
%% 图像裁剪
image6 = imcrop(map, [100 100 200 200]);%从(x1, y1)处裁剪,到(x1+x2, y1+y2)处停止
subplot(3,4,7)
imshow(image6);
title("裁剪")
%% 图像轮廓
image7 = image1
subplot(3,4,8)
imcontour(image7, 3)
title("图像轮廓")
%% 噪声滤波
image2 = imnoise(image1, 'salt & pepper',0.02);%添加椒盐噪声
subplot(3,4,9);
imshow(image2);
title("添加椒盐噪声")
image3 = medfilt2(image2);%使用3*3的邻域窗的中值滤波
subplot(3,4,10);
imshow(image3);
title("中值滤波")
%% 生成彩色图片
R = uint8(218*ones(512, 512));
G = uint8(67*ones(512, 512));
B = uint8(74*ones(512, 512));
image = cat(3, R, G, B);
subplot(3,4,11);
imshow(image);
title("生成彩色图像")
结果呈现