A list,

1 Introduction to LSB algorithm

LSB, short for Least Significant Bit, is a simple and effective data hiding technique. The basic method of LSB steganography is to replace the lowest bit of the carrier image with the secret information to be embedded. The high level plane of the original image and the lowest plane representing the secret information form a new image containing hidden information.



The grayscale image stores pixels in a single channel format, with each pixel value ranging from 0 to 255, and the pixel’s bitplane is each bit of the corresponding binary pixel. For example, a pixel with a value of 78, binary 01001110, has a decreasing bit weight from left to right, and the most significant bit (MSB) on the left has a bit weight of 2 72 ^72

7

), the rightmost bit is the least significant bit (LSB, bit weight is 20 02 ^02

0

). The same bits of each pixel are extracted to form a new plane, which is called the bitplane of the graph. The LSB steganography, as its name suggests, inserts/hides information in the LSB, the lowest level plane.

It should be noted that when LSB is embedded, the carrier image format should be grayscale

Taking the famous Lena graph as an example, the following is the original Lena graph of grayscale graph:



Here is the plan of its bits, descending from left to right and top to bottom:



It can be seen that the higher the bit plane is, the more information of the original image is contained, the greater the contribution to the gray value of the image is, and the stronger the correlation between adjacent bits is, and vice versa. The LSB lowest level plane basically contains no image information, like random noise/noise, so you can fill in watermark/secret information here.

The embedding diagram is as follows:



When different bit planes are selected for embedding, the fidelity of LSB algorithm is as follows:

2 Algorithm Principle

Generally speaking, the picture we see is made up of small pixels, all of which are put together to form a big square, and this big square is the image we see. A grayscale image (also known as a black and white image) consists of one layer of pixels, while a color image consists of three layers of grayscale images. Take grayscale image as an example. The reason why we can see black and white on the image is that each pixel has a different pixel value. 0 is pure black, 255 is pure white, and gray is made up of the value between these two numbers. The closer you get to 0, the darker you get, and the whiter you get to 255. So why 0 and 255? Because the computer is binary, it will use 8 bits to represent a pixel (you can also use more bits, so the more the color of the image classification, image will occupy more space at the same time, but the eyes of ordinary people do not recognize so much color, different from ordinary people unless you), so the maximum value is 255, the lowest is 0. LSB hides information based on the binary system. Because human eyes are not very sophisticated color or brightness sensors, a slight change of pixel gray level by 1 is not detected by human eyes, that is, modifying the smallest bit of 8-bit binary code. When we change the last bit of each pixel of the image to the way we want it, it shows the information we want, but the user can’t see it, and it doesn’t affect the content of the image. This is the LSB digital watermark.

3. Basic characteristics of LSB algorithm:

LSB is a high-volume data hiding algorithm

The robustness of LSB is relatively poor (when steGO image encounters signal processing, such as adding noise, lossy compression, etc., it will be lost when extracting embedded information)

4 common EMBEDDING methods of LSB algorithm:

The secret information is continuously embedded in the lowest plane until the end, and the rest is not processed (typical MandelSteg software)

The secret information is continuously embedded in the lowest plane until the end, and the rest of the processing is randomized (also known as desertification processing, typical software PGMStealth).

The secret information is embedded in the least – and sub- low – order plane continuously and simultaneously

The secret information is embedded in the lowest level plane. After the lowest level plane is fully embedded, the secret information is embedded in the second level plane

The secret information is randomly embedded in the lowest plane

The above five methods have different robustness when the embedding capacity is different

Ii. Source code

unction varargout = LSB(varargin)
% LSB MATLAB code for LSB.fig
%      LSB, by itself, creates a new LSB or raises the existing
%      singleton*.
%
%      H = LSB returns the handle to a new LSB or the handle to
%      the existing singleton*.
%
%      LSB('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in LSB.M with the given input arguments.
%
%      LSB('Property'.'Value',...). creates anew LSB or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before LSB_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to LSB_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one % instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help LSB

% Last Modified by GUIDE v2. 5 22-Apr- 2021. 13:43:30

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @LSB_OpeningFcn, ...
                   'gui_OutputFcn',  @LSB_OutputFcn, ...
                   'gui_LayoutFcn', [],...'gui_Callback'[]);if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before LSB is made visible.
function LSB_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to LSB (see VARARGIN)

% Choose default command line output for LSB
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes LSB wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = LSB_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
[filename,filepath]=uigetfile('.bmp'.'Select the original BMP image file');
if(filename==0)
return;
end
global originalfile x
originalfile= strcat(filepath,filename);
x=imread(originalfile);
subplot(handles.axes1);
imshow(originalfile);
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
[filename,filepath]=uigetfile('.bmp'.'Select to embed hidden files');
if(filename==0)
return;
end
global secretfile y
secretfile= strcat(filepath,filename);
y=imread(secretfile);
subplot(handles.axes2);
imshow(secretfile);


% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)%ary represents the bit plane, with 1 being the lowest bit global X y Z ary= 1; cover_object = rgb2gray(x); Cover_object_ll = bitget(cover_object, ary); cover_object_ll = bitget(cover_object, ary); % gets to the end1A bit subplot (handles. Axes5); % Wake up a window imshow(cover_object); % shows the grayscale of the original imageCopy the code

3. Operation results

Fourth, note

Version: 2014 a