比特平面分层
这是分段线性变换函数的一部分,分段线性函数可以通过分段的灰度变换函数实现对某一部分域值内的灰度值动态域扩散或者强调。在此基础上引发了对灰度值域的讨论,比特平面分层是以灰度图像存贮的像素占有的bit信息为基础的。以8bit图像为例,每个像素占有八个bit,每个bit上的值为1时将对应层值设为255(取值范围0~255),则可以按照像素值(以10110011为例,其在8、6、5、2、1层为1,其他层为0):
分层后的结果:
代码
%% myImageBitPlaneSlicing.m
function imgbit = myImageBitPlaneSlicing(img,n)
img = rgb2gray(img);
[r,c]=size(img);
imgbit = zeros(r,c,n);
for i=1:r
for j=1:c
tmp = img(i,j);
for k=1:8
if ( floor(tmp/((2^(8-k)))==1))
tmp =tmp - 2^(8-k);
imgbit(i,j,9-k)=255;
else
imgbit(i,j,9-k)=0;
end
end
end
end
end
%% ImageBit.m
clc;
clear;
close all;
img = imread('C:\Users\16431\Desktop\1.jpg');
imageBit1 = myImageBitPlaneSlicing(img,8);
figure('name','比特平面分层');
subplot(3,3,1);
img = rgb2gray(img);
imshow(img);
title('原始图像');
for i = 1:8
subplot(3,3,i + 1);
imshow(imageBit1(:,:,i))
title(['第',num2str(i),'比特平面']);
end