matlab实现灰度图像的位平面分解
看到一位会员提出的问题:matlab实现灰度图像的位平面分解。开始是不是很理解,以为只是图像的分割,后来“小绿”会员给出提示,由于uint8(范围0~255)存储时占1bit,8位二进制表示,提取每一位就成为了位平面分解,基于这个思想,编写代码:clc; clear all;
A = imread('rice.png');
= size(A);
% 读取图片,获取图像阵行列大小
A_bin1 = []; A_bin2 = []; A_bin3 = []; A_bin4 = [];
A_bin5 = []; A_bin6 = []; A_bin7 = []; A_bin8 = [];
% 分别存储8位
for i = 1 : r
r_bin1 = []; r_bin2 = []; r_bin3 = []; r_bin4 = [];
r_bin5 = []; r_bin6 = []; r_bin7 = []; r_bin8 = [];
% 分别存储8位矩阵对应的行
dec_col = zeros(1, 8);
for j = 1 : c
num_bin = dec2bin( A(i, j) );
for k = 1 : length(num_bin)
str_bin = '00000000';
% uint8占1bit,8位
str_bin(k) = num_bin( length(num_bin) - k + 1 );
% 获取对应的位上的数值
dec_temp = bin2dec(str_bin);
% 转成十进制的
dec_col(k) = dec_temp;
end
r_bin1 = ; r_bin2 = ;
r_bin3 = ; r_bin4 = ;
r_bin5 = ; r_bin6 = ;
r_bin7 = ; r_bin8 = ;
end
A_bin1 = ; A_bin2 = ;
A_bin3 = ; A_bin4 = ;
A_bin5 = ; A_bin6 = ;
A_bin7 = ; A_bin8 = ;
end
figure;
subplot(3, 3, 1); imshow(A); title('origin image');
subplot(3, 3, 2); imshow(A_bin1); title('1 image');
subplot(3, 3, 3); imshow(A_bin2); title('2 image');
subplot(3, 3, 4); imshow(A_bin3); title('3 image');
subplot(3, 3, 5); imshow(A_bin4); title('4 image');
subplot(3, 3, 6); imshow(A_bin5); title('5 image');
subplot(3, 3, 7); imshow(A_bin6); title('6 image');
subplot(3, 3, 8); imshow(A_bin7); title('7 image');
subplot(3, 3, 9); imshow(A_bin8); title('8 image');
页:
[1]