lsb算法matlab代码
时间: 2023-09-02 08:02:55 浏览: 117
lsb算法的matlab程序
LSB算法(Least Significant Bit)是一种简单的信息隐藏算法,主要通过将要隐藏的信息嵌入到像素的最低有效位中,从而不影响人眼对图像的感知。
以下是基于MATLAB实现的LSB算法代码:
```matlab
% 加载图像
image = imread('original_image.jpg');
% 获取图像的尺寸
[m, n, ~] = size(image);
% 将要隐藏的信息
message = 'Hello, LSB algorithm!';
% 转换信息为二进制
binaryMessage = reshape(dec2bin(message, 8).' - '0', 1, []);
% 检查信息长度是否超过图像的容量
if length(binaryMessage) > m * n
error('Information length exceeds image capacity.');
end
% 嵌入信息
counter = 1; % 计数器
for i = 1:m
for j = 1:n
pixel = image(i, j, :);
% 获取像素的RGB值
r = pixel(1);
g = pixel(2);
b = pixel(3);
% 将信息嵌入到最低有效位中
if counter <= length(binaryMessage)
r = bitset(r, 1, binaryMessage(counter));
counter = counter + 1;
end
if counter <= length(binaryMessage)
g = bitset(g, 1, binaryMessage(counter));
counter = counter + 1;
end
if counter <= length(binaryMessage)
b = bitset(b, 1, binaryMessage(counter));
counter = counter + 1;
end
% 更新图像的RGB值
image(i, j, :) = [r, g, b];
end
end
% 保存图像
imwrite(image, 'stego_image.jpg');
% 提取隐藏的信息
extractedMessage = "";
counter = 1; % 计数器
for i = 1:m
for j = 1:n
pixel = image(i, j, :);
% 获取像素的最低有效位
rLSB = bitget(pixel(1), 1);
gLSB = bitget(pixel(2), 1);
bLSB = bitget(pixel(3), 1);
% 将提取的最低有效位组合为信息
if counter <= length(binaryMessage)
extractedMessage = extractedMessage + string(rLSB);
counter = counter + 1;
end
if counter <= length(binaryMessage)
extractedMessage = extractedMessage + string(gLSB);
counter = counter + 1;
end
if counter <= length(binaryMessage)
extractedMessage = extractedMessage + string(bLSB);
counter = counter + 1;
end
% 检查是否提取了足够的信息
if counter > length(binaryMessage)
break;
end
end
% 检查是否提取了足够的信息
if counter > length(binaryMessage)
break;
end
end
% 将二进制信息转换为字符串
extractedMessage = char(bin2dec(reshape(extractedMessage, 8, []).').');
% 显示提取的信息
disp(extractedMessage);
```
此代码实现了利用LSB算法隐藏信息并提取隐藏信息的功能。代码首先加载原始图像,然后将要隐藏的信息进行转换和分割,并逐像素地对图像进行处理,将信息嵌入到像素的最低有效位中。最后,代码保存包含隐藏信息的图像,并提取隐藏的信息,并将提取的信息显示出来。
需要注意的是,为了保证隐藏信息的成功提取,隐藏信息的长度不能超过图像的容量,否则会出现错误。
阅读全文