Pixel Swapping.m

You might also like

You are on page 1of 2

function[share_img_B] = pixel_swapping(cover_img_A, cover_img_B, secret_img) imsize = size(cover_img_A); % to maintain swaped pixels swapped = zeros(imsize); radius = 1; for i = 1 : imsize(1) for

j = 1 : imsize(2) % first condition |Ha(i,j)| --- (1) if(cover_img_A(i, j) == 1) % second condition |Hb(i,j)| != |S(i,j)| ----- (2) if((cover_img_B(i, j) ~= secret_img(i, j)) ... && (swapped(i,j) ~= 1)) select_mn_and_swap(i, j); end end end end share_img_B = cover_img_B; function select_mn_and_swap(i, j) % lower bound value for row if(i <= 3) lrow = 1; else lrow = i - 3; end % lower bound value for column if(j <= 3) lcol = 1; else lcol = j - 3; end % upper bound value for row if(i + 3 <= imsize(1)) urow = i+3; else urow = i; end % upper bound value for column if(j + 3 <= imsize(2)) ucol = j+3; else ucol = j; end for m = i : i % lrow : urow for n = lcol : ucol % |Hb(i,j)| != |Hb(m,n)| --- (3) if(cover_img_B(i,j) ~= cover_img_B(m, n)) % |Ha(m,n)| = 0 OR (|Ha(m,n)| = 1 and |s(m,n)| != % |Hb(m,n)| if((cover_img_A(m,n) == 0) || ... (cover_img_A(m, n) == 1 && ... secret_img(m,n) ~= cover_img_B(m,n))) % d(Hb(i,j), Hb(m,n)) <= r if(euclidian_dist(i, j, m, n) <= radius)

% both Hb(i,j) and Hb(m,n) are not swapped yet if(swapped(i,j) == 0 && swapped(m,n) == 0) % s(i,j) = s(m,n) if(secret_img(i, j) == secret_img(m,n)) swapped(i,j) = 1; swapped(m,n) = 1; cover_img_B(i, j) = ~cover_img_B(i, j); cover_img_B(m, n) = ~cover_img_B(m, n); return; end end end end end end end end function dist = euclidian_dist(i, j, m, n) % euclidian distance formula dist = sqrt(((m - i)^2)+((n -j)^2)); end end

You might also like