generating matrix randomly

I have an matrix of an image ,face.jpg,now i want to interchange the pixel values,position of values must be changed( randomly),,please help

 Accepted Answer

Dear What I understand is you will randomly swap the pixel values of images 6 times. At the end you will have 6 images. Again multiple ways to do it. Here is one example.
myface = imread('myface.jpg'); % this is your image
myface1 = myface; % just to keep the copy of original
for i=1:6 % this decides how many times you want to repeat
myRan = randperm(prod(size(myface))); % we assume myface.jpg is grayscale
myRan=reshape(myRan,size(myface));
myface(myRan) = myface;
myimageset{i} = myface;
myface = myface1;
end
Now you have six images in myimageset. You can get image by myimageset like this.
image1 = myimageset{1};
you can put myimageset in loop and display each image to see your output. The code I have written is not optimal. The computation speed can be improved. I did this way to divide the process into step so that you can follow what actually is happening.

More Answers (1)

There are many ways to do it. One possible way is.
myface = imread('myface.jpg');
myRan = randperm(prod(size(myface))); % we assume myface.jpg is grayscale
myRan=reshape(myRan,size(myface));
myface(myRan) = myface;
These four lines can be done in one line. Just to show you the steps i followed this into four lines.

7 Comments

thank u juniard ,how to read the image from those final pixels
Juniard like this i need 6 matrices ,where the pixels are intercganged
You would need to know the myRan permutation vector in order to reverse the transformation. This is known as the Key Exchange Problem, http://en.wikipedia.org/wiki/Key_exchange#The_key_exchange_problem
Thanks walter i went through it ,i ment i need to read the image from those final pixels,the may may contain whatever it may,like these i want to generate 6 marices and check which matrix values give as near as the original image
I am having trouble figuring out what you are trying to do, sorry.
Walter here are the steps
1.need to take an image
2.need to interchange the coefficient (randomly) 6 times
3.now i get 6 matrices (no 2 coefficient must be same)
4.from this i need to get 6 images
5.finally need to check which has good clarity compared with original image
I wouldn't expect any of them to have good clarity compared with the original image.

Sign in to comment.

Asked:

on 3 Jan 2012

Community Treasure Hunt

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

Start Hunting!