Extract a hidden message from image

I'm trying to write a matlab code to extract a hidden message from a given image. The hidden message is the first half of the odd part of this image. Whenever I run my code I get a black image. Any suggestions?
image=imread('hidden.png');
new=fliplr(image);
odd=(image-new)/2 ;
imshow(odd);

3 Comments

What does "the odd part of this image" mean?
Is the "first half" in terms of rows, or in terms of columns?
O.K I researched the problem more and I realized this: If the image is made up of 3 elements n for (width) x1[n] for height and x2[n] for color then the odd part means (x1[n]-x1[-n]/2) .
Nemo
Nemo on 4 May 2016
Edited: Nemo on 4 May 2016
I actually realized something else the above code doesn't give a black image like I thought. It gives the hidden image for half of the width of the original picture. However the hidden image is too dark that I couldn't see it. So now I have two questions? 1.How to make the image brighter 2.How to read only half of the image width?

Sign in to comment.

 Accepted Answer

Make the image brighter by using [] in imshow():
imshow(odd, []);

2 Comments

I tried it. Still the same.
I do this and the image shows up. granted, it's a bit dark but considering what you're doing to it, that's not unexpected.
rgbImage = imread('peppers.png');
subplot(2,2,1);
imshow(rgbImage);
fontSize = 18;
title('Original Image', 'FontSize', fontSize);
new = fliplr(rgbImage);
subplot(2,2,2);
imshow(new);
title('New Image', 'FontSize', fontSize);
odd = (rgbImage - new)/2 ;
subplot(2,2,3);
imshow(odd);
title('Odd Image', 'FontSize', fontSize);

Sign in to comment.

More Answers (2)

I am going to guess here:
wid = size(YourImage,2);
hwid = floor(wid/2);
odd = (double(YourImage(:,1:hwid)) - double( fliplr(YourImage(:,end-hwid+1:end)) )) / 2;
shifted_odd = odd - min(odd(:));
scaled_odd = shifted_odd ./ max(shifted_odd(:));
imshow(scaled_odd);

2 Comments

The above code displayed the correct dimension (half of the image width) but the picture is now black and white and I still can't see the hidden message which is a coloured image. But thank you anyway for trying to help
You might need
imshow(scaled_odd, [])
Remember, though, that the hidden image cannot be a colored image, because colored images require 3 dimensional arrays but you are working with two dimensional arrays.

Sign in to comment.

bro idk

1 Comment

Image Analyst
Image Analyst on 19 Oct 2020
Edited: Image Analyst on 19 Oct 2020
Then don't feel compelled to post an answer.
Anyway, I posted a full complete demo 4 and a half years ago for Nemo, which worked despite him not accepting any answer.

Sign in to comment.

Asked:

on 3 May 2016

Edited:

on 19 Oct 2020

Community Treasure Hunt

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

Start Hunting!