how to divide a 512*512 image block by pseudo randomly permuting into 8*8 blocks?

3 views (last 30 days)
the data hider pseudo-randomly selects Np encrypted pixels that will be used to carry the parameters for data hiding.here,Np is a small positive integer,for example,Np=20.the other(N-Np) encrypted pixels are pseudo randomly permuted and divided into number of groups,each of which contains L pixels.here what is the permutation needed and the code used to divide?

Answers (1)

the cyclist
the cyclist on 14 Aug 2012
Edited: the cyclist on 14 Aug 2012
I thought I understood the title of your post, but I have to admit I did not really understand your question at all. But, maybe this will help a tiny bit. It randomizes the 4,096 blocks of size 8*8 that tile your 512*512 array.
% Pretend data
A = rand(512);
% Random linear index to the blocks
r = randperm(4096)';
% (i,j) subscripts instead of linear index
[i,j] = ind2sub([64 64],r)
% Example of grabbing the 37th randomly found block
whichBlock = 37;
randomBlock = A(8*(i(whichBlock)-1)+(1:8),8*(j(whichBlock)-1)+(1:8))
  1 Comment
Tia
Tia on 6 May 2013
Hello Sir, After randomBlock, could you tell me how to show all randomBlock in 512x512array? i followed your codes,and i added loop for example
for whichBlock = 1:64;
randomBlock = A(8*(i(whichBlock)-1)+(1:8),8*(j(whichBlock)-1)+(1:8));
end
i want random 64block.then, what should i do?
thank you

Sign in to comment.

Tags

No tags entered yet.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!