Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

How to modify the image by applying AES?

Asked by Kushal Khaitan on 19 Jan 2013
fid = fopen('C:\Users\Public\Pictures\Sample Pictures\Desert.jpg', 'r');
data = fread(fid, Inf, '*uint8');
fclose(fid);

After this I apply AES and get the values values. How to use those values and look at the modified image???

[EDIT - MERGED FROM DUPLICATE POST]:

But if I convert this array back to image using image() I do not get the original image.

Even after not performing any changes to the original array that I obtained using the above code...How to get back the original image??

3 Comments

Image Analyst on 19 Jan 2013

You will probably find it easier to use imread() rather than fread.

Kushal Khaitan on 19 Jan 2013

How to apply AES algorithm on an image and be able to see the changes by being able to reconvert the array into image????

Image Analyst on 19 Jan 2013

It's not our place to tell you how to apply the AES encryption algorithm.

Kushal Khaitan

Products

No products are associated with this question.

2 Answers

Answer by Walter Roberson on 19 Jan 2013

image() the resulting array. MATLAB does not care how you created the array that you image()

1 Comment

Kushal Khaitan on 19 Jan 2013

But if I convert this array back to image I do not get the correct image.

Even after not performing any changes to the original array that I obtained using the above code...How to get back the original image??

Walter Roberson
Answer by Jan Simon on 19 Jan 2013
Edited by Jan Simon on 20 Jan 2013

There are two different representations, when an image is stored as JPEG:

  1. The RGB image data, which can be obtained by imread,
  2. The binary JPEG file, which contains a header with meta data also. This is read by fread.

Which one do you want to encode? If you encode the 2nd one, the JPEG file, the result cannot be displayed, because the encoded header is meaningless and does not meet the JPEG format anymore. If you want to store the encoded RGB data as JPEG, be sure to use the mode 'lossless', because even for a 100% Quality rounding errors can change the pixel values slightly. [EDITED, thanks Walter]

So please decide at first, if you want to encode the file or the embedded image.

1 Comment

Walter Roberson on 20 Jan 2013

There is a lossless JPEG mode. Which is not the same as 100% quality (which is not completely lossless.)

Jan Simon

Contact us