数字图像处理实验之比特平面重构

it2022-05-05  202

实验代码如下:

% 读取图像 img_1 = imread('Fig0314(a)(100-dollars).tif'); % 获取图像尺寸 [r, c] = size(img_1); % 创建8比特平面 img_s = zeros(r, c, 8); for x = 1 : r for y = 1 : c % 将灰度转换成二进制 str = dec2bin(img_1(x, y), 8); for z = 1:8 % 判断每个二进制位的取值 if str(z) == '0' img_s(x, y, 9 - z) = 0; else img_s(x, y, 9 - z) = 1; end end end end img_2 = zeros(r, c); img_3 = zeros(r, c); img_4 = zeros(r, c); img_5 = zeros(r, c); img_6 = zeros(r, c); img_7 = zeros(r, c); img_8 = zeros(r, c); for x = 1 : r for y = 1 : c img_2(x, y) = img_s(x, y, 8) * 128 + img_s(x, y, 7) * 64; img_3(x, y) = img_2(x, y) + img_s(x, y, 6) * 32; img_4(x, y) = img_3(x, y) + img_s(x, y, 5) * 16; img_5(x, y) = img_4(x, y) + img_s(x, y, 4) * 8; img_6(x, y) = img_5(x, y) + img_s(x, y, 3) * 4; img_7(x, y) = img_6(x, y) + img_s(x, y, 2) * 2; img_8(x, y) = img_7(x, y) + img_s(x, y, 1) ; end end img_2 = im2uint8(mat2gray(img_2)); img_3 = im2uint8(mat2gray(img_3)); img_4 = im2uint8(mat2gray(img_4)); img_5 = im2uint8(mat2gray(img_5)); img_6 = im2uint8(mat2gray(img_6)); img_7 = im2uint8(mat2gray(img_7)); img_8 = im2uint8(mat2gray(img_8)); subplot(331), imshow(img_2); xlabel('8, 7比特平面重构'); subplot(332), imshow(img_3); xlabel('8, 7, 6比特平面重构'); subplot(333), imshow(img_4); xlabel('8, 7, 6, 5比特平面重构'); subplot(334), imshow(img_5); xlabel('8, 7, 6, 5, 4比特平面重构'); subplot(335), imshow(img_6); xlabel('8, 7, 6, 5, 4, 3比特平面重构'); subplot(336), imshow(img_7); xlabel('8, 7, 6, 5, 4, 3, 2比特平面重构'); subplot(336), imshow(img_8); xlabel('8, 7, 6, 5, 4, 3, 2, 1比特平面重构'); subplot(337), imshow(img_1); xlabel('原始图像');

实验结果如下:


最新回复(0)