【图像加密】图像转换为8个二进制位平面图像MATLAB代码

这段代码演示了如何使用MATLAB将彩色图像转换为灰度图像,然后将灰度图像的每个像素值分解为二进制,并分别显示每个位平面。通过`rgb2gray`函数转为灰度,`bitget`函数提取位信息,最后用`subplot`展示各个位平面图像。
摘要由CSDN通过智能技术生成

输入图像为1.jfif,以下是将彩色图像转化为灰度图像之后分八个位平面进行分离的图像代码

【代码】

I = rgb2gray(imread('1.jfif'));

[h w] = size(I);

subplot(3,3,1);

imshow(I);title('原始图像');

for k=1:8

    for i=1:h

        for j=1:w

            b1(i,j) = bitget(I(i,j),k);%bitget函数首先将I(i,j)处灰度值分解为二进制串,然后取第k位

        end

    end

subplot(3,3,k+1);

imshow(b1,[]);

ind = num2str(k);imti = ['第',ind-1,'个位平面'];

title(imti);

end

【分别代码】分开为单个二进制图像进行展示

I = rgb2gray(imread('1.jfif'));

[h w] = size(I);

subplot(3,3,1);

imshow(I);title('原始图像');



    for i=1:h

        for j=1:w

            b1(i,j) = bitget(I(i,j),1);%bitget函数首先将I(i,j)处灰度值分解为二进制串,然后取第k位

        end

    end

subplot(3,3,1+1);

imshow(b1,[]);

ind = num2str(1);imti = ['第',0,'个位平面'];

title(imti);

for i=1:h

        for j=1:w

            b2(i,j) = bitget(I(i,j),2);%bitget函数首先将I(i,j)处灰度值分解为二进制串,然后取第k位

        end

    end

subplot(3,3,2+1);

imshow(b2,[]);

ind = num2str(2);imti = ['第',1,'个位平面'];

title(imti);

for i=1:h

        for j=1:w

            b3(i,j) = bitget(I(i,j),3);%bitget函数首先将I(i,j)处灰度值分解为二进制串,然后取第k位

        end

    end

subplot(3,3,3+1);

imshow(b3,[]);

ind = num2str(3);imti = ['第',2,'个位平面'];

title(imti);

for i=1:h

        for j=1:w

            b4(i,j) = bitget(I(i,j),4);%bitget函数首先将I(i,j)处灰度值分解为二进制串,然后取第k位

        end

    end

subplot(3,3,4+1);

imshow(b4,[]);

ind = num2str(4);imti = ['第',3,'个位平面'];

title(imti);

for i=1:h

        for j=1:w

            b5(i,j) = bitget(I(i,j),5);%bitget函数首先将I(i,j)处灰度值分解为二进制串,然后取第k位

        end

    end

subplot(3,3,5+1);

imshow(b5,[]);

ind = num2str(5);imti = ['第',4,'个位平面'];

title(imti);

for i=1:h

        for j=1:w

            b6(i,j) = bitget(I(i,j),6);%bitget函数首先将I(i,j)处灰度值分解为二进制串,然后取第k位

        end

    end

subplot(3,3,6+1);

imshow(b6,[]);

ind = num2str(6);imti = ['第',5,'个位平面'];

title(imti);

for i=1:h

        for j=1:w

            b7(i,j) = bitget(I(i,j),7);%bitget函数首先将I(i,j)处灰度值分解为二进制串,然后取第k位

        end

    end

subplot(3,3,7+1);

imshow(b7,[]);

ind = num2str(7);imti = ['第',6,'个位平面'];

title(imti);

for i=1:h

        for j=1:w

            b8(i,j) = bitget(I(i,j),8);%bitget函数首先将I(i,j)处灰度值分解为二进制串,然后取第k位

        end

    end

subplot(3,3,8+1);

imshow(b8,[]);

ind = num2str(8);imti = ['第',7,'个位平面'];

title(imti);

【示例】

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值