第二章 数字图像基础
1. 用程序实现同时对比度实验。
程序代码:
clear
% 设置图片的长宽
m = 250;
n = 250;
% 设置第一张图的底层灰度
ground_gray1 = 64;
X1 = ones(m,n)*ground_gray1;
% 设置第二张图的底层灰度
ground_gray2 = 192;
X2 = ones(m,n)*ground_gray2;
% 设置共同的表层灰度
front_gray = 128;
% 设置表层的左上角的点的位置
m0 = 100;
n0 = 100;
% 表层宽度
step = 50;
% 给表层灰度赋值
X1(m0:m0+step,n0:n0+step) = front_gray;
% 显示对比图
subplot(1,2,1)
imshow(uint8(X1));
xlabel("front=128, ground=64")
X2(m0:m0+step,n0:n0+step)=front_gray;
subplot(1,2,2)
imshow(uint8(X2));
xlabel("front=128, ground=192")
输出结果:
2. 用程序实验空间分辨率变化效果。
程序代码:
clear
X = imread('pic.jpg');
% 把原图转为灰度图
X1 = rgb2gray(X);
% 显示原灰度图
subplot(1,2,1)
imshow(uint8(X1));
xlabel("256*256")
% 空间分辨率降低到原来的四分之一
[m,n] = size(X1);
X2 = X1(1:4:m,1:4:n);
% 显示处理后的图片
subplot(1,2,2)
imshow(uint8(X2));
xlabel("64*64")
输出结果:
3. 用程序实验幅度分辨率变化效果。
程序代码:
clear
X0 = imread('pic.jpg');
% 把原图转为灰度图
X = rgb2gray(X0);
% 获取图像大小
[m,n] = size(X);
% 预分配内存
X64 = zeros(m,n);
X16 = zeros(m,n);
X8 = zeros(m,n);
X4 = zeros(m,n);
X2 = zeros(m,n);
% 幅度分辨率降级处理
% 灰度0-255,n级则分成n-1段
% 64级
for i = 1:m
for j = 1:n
X64(i,j) = (255/63)*(round(X(i,j)/(255/63)));
end
end
% 16级
for i = 1:m
for j = 1:n
X16(i,j) = (255/15)*(round(X(i,j)/(255/15)));
end
end
% 8级
for i = 1:m
for j = 1:n
X8(i,j) = (255/7)*(round(X(i,j)/(255/7)));
end
end
% 4级
for i = 1:m
for j = 1:n
X4(i,j) = (255/3)*(round(X(i,j)/(255/3)));
end
end
% 2级
for i = 1:m
for j = 1:n
X2(i,j) = 255*(round(X(i,j)/255));
end
end
% 显示所有级数的图片
subplot(2,3,1);
imshow(uint8(X));
title('256级');
subplot(2,3,2);
imshow(uint8(X64));
title('64级');
subplot(2,3,3);
imshow(uint8(X16));
title('16级');
subplot(2,3,4);
imshow(uint8(X8));
title('8级');
subplot(2,3,5);
imshow(uint8(X4));
title('4级');
subplot(2,3,6);
imshow(uint8(X2));
title('2级');
输出结果: