基础LSB算法的matlab实现

LSB基础算法matlab实现

什么是LSB算法

LSB(least significant bit)翻译过来为最低有效位。
在灰度图像中,图像的灰度由八位二进制来表示即十进制中0-255,共256级别,255则为白色,反之0为黑色。自然,二进制位越靠前则对像素点灰度的影响越大,从这点出发,则考虑更改像素点灰度值最低位来隐藏信息,这样对原图像的改变比较小。

算法如下

pichide=LSB(piccover,pic2ray,M,N,m,n);%M,N为封面行列,m,n为二值图行列,将二值图隐写进封面中
subplot(1,2,1),imshow(pichide)
subplot(1,2,2),imshow(piccover); %展示封面和隐藏信息后图像的对比
picjie=(pichide,m,n);%提取出隐藏信息
 imshow(picjie);

LSB.m

function  piccover = LSB( piccover,pic2ray,M,N,m,n ) %piccover封面,pic2ray二值图,M,N封面行列,m,n二值图行列
if(m<=M&&n<=N)
    for i=1:m
        for j=1:n
            if pic2ray(i,j)==1&&mod(piccover(i,j),2)==1
                continue;
            elseif pic2ray(i,j)==1&&mod(piccover(i,j),2)==0
                piccover(i,j)=piccover(i,j)+1;
            elseif pic2ray(i,j)==0&&mod(piccover(i,j),2)==0
                continue;
            elseif pic2ray(i,j)==0 && mod(piccover(i,j),2)==1
                piccover(i,j)=piccover(i,j)-1;
            end
        end         
    end
else
    fprintf('朋友,封面大小不够唉!')
end
end

inLSB.m

function pichide = inLSB(pichide,m,n)
    for i=1:m
        for j=1:n
            if mod(pichide(i,j),2)==1
                pichide(i,j)=255;
            else
                pichide(i,j)=0;
            end
        end
    end
end

LSB(Least Significant Bit)算法是一种简单的图像隐写术,它通过替换图像像素最低有效位(LSB)中的数据来实现信息隐藏。下面是一个简单的LSB算法MATLAB实现: ```matlab % 读取要隐藏信息的文本文件 file = fopen('secret.txt', 'r'); secret_data = fread(file); fclose(file); % 读取载体图像 carrier_image = imread('carrier_image.png'); % 获取载体图像的宽度和高度 [height, width, ~] = size(carrier_image); % 在载体图像的最后一个像素的最低有效位中写入0作为结束标志 if secret_data(end) == 0 secret_data(end) = 1; else secret_data(end) = 0; end % 将要隐藏的数据转换为二进制形式 secret_data_binary = dec2bin(secret_data); % 将二进制数据写入载体图像的最低有效位 for i = 1:length(secret_data_binary) % 计算当前像素的行和列索引 row_index = ceil(i / (width * 3)); col_index = mod(i - 1, width * 3) + 1; % 获取当前像素的RGB值并将其转换为二进制形式 pixel_value_binary = dec2bin(carrier_image(row_index, col_index), 8); % 将要隐藏的数据写入当前像素的最低有效位 pixel_value_binary(end) = secret_data_binary(i); % 将修改后的二进制像素值转换为十进制形式并写回载体图像 carrier_image(row_index, col_index) = bin2dec(pixel_value_binary); end % 将修改后的载体图像保存到新文件中 imwrite(carrier_image, 'stego_image.png'); ``` 以上实现的步骤如下: 1. 读取要隐藏的文本文件中的数据。 2. 读取载体图像。 3. 在载体图像的最后一个像素的最低有效位中写入0作为结束标志。 4. 将要隐藏的数据转换为二进制形式。 5. 将二进制数据写入载体图像的最低有效位。 6. 将修改后的载体图像保存到新文件中。 需要注意的是,这个实现只能隐藏文本数据,并且需要使用无损的图像格式(如PNG)来保存修改后的载体图像,以确保信息不会在保存过程中丢失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值