Эта статья - на странице 259 - предлагает метод стеганографии изображений, основанный на оптимизации роя частиц. Метод состоит из следующих этапов:
Считайте изображение обложки I и секретное изображение S , которое должно быть скрыто.
Преобразовать секретное изображение S в последовательность двоичных цифр.
Разделить I (mxn) в число блоков каждого размера pxq .
Инициализация параметров PSO для каждого блока.
Применить PSO для каждого блока, чтобы получить наилучшие местоположения для сокрытия секретных битов и минимизации целевой функции (SSIM).
Я реализовал первые три шага, но понятия не имею Как применить алгоритм PSO в моем коде Matlab.
Я не знаю, что означают частицы и рой для секретных битов и обложки, и как правильно инициализировать значения параметров для PSO.
Вот мой код:
%% Step 1: Read the cover image I and the secret image S which is to be hidden.
i = imread('lena.tif'); %cover Image 256*256
s = imread('house.tif'); %secret image 128*128
key = [1 4;2 4;3 4; 4 4];
%% Step 2: Convert the secret image S to a sequence of binary digits that can be hidden in the
% cover image.
% Convert each pixel value of S into its eight bit representation and concatenate
% them to obtain a sequence of bits.
sbits = dec2bin(s,8); %convert to binary
sbits = cellstr(sbits)'; % convert to binary verctor, each row repersent a pixel
sbits = strjoin(sbits); % concat row to form one string
sbits = sbits(~isspace(sbits)); % remove in-between space
%% Step 3: Divide the I(mxn) into a number of blocks each of size pxq.
% I will divide it into 4 blocks each of size 128*128
blocks = divideIntoBlocks(i,128);
%% Step 4: For each block, set the initial population, no. of particles,
% no. of iterations and the objective function for the PSO
% module. Use PSO to find the best pixel positions for
% embedding secret image data
% pso and embedding code ...
А это функция SSIM https://github.com/josejuansanchez/ssim/blob/master/ssim.m
Я использую matlab 2013a