Extracting a message from a picture?
1 view (last 30 days)
Show older comments
Brian Tiffman
on 20 Nov 2015
Commented: Brian Tiffman
on 21 Nov 2015
In the attached document, Im really stuck on what its asking. Could someone please help me better understand it, and what it wants me to do. I would really appreciate that, Thanks! Confused on the the last two parts. I dont know what code to use for the for loop to run through the rows and columns of the difference.
This is all I got so far.
pic=imread('Cat.png')
pic1=imread('CodedCat.png')
origpic=double(pic)
cpic=double(pic1)
[nrow ncol]=size(origpic)
Difference=ab(pic-cpic)
0 Comments
Accepted Answer
Guillaume
on 21 Nov 2015
Note that the decoding can be achieved much more efficiently with these three lines of codes:
cat = double(imread('Cat.png'));
codedcat = double(imread('CodedCat.png'));
message = char(bin2dec(char(reshape(abs(cat - codedcat)' == 1, 8, [])' + '0'))');
This is probably even more efficient since there's no number -> char -> number conversion to compute the ascii code of each character:
message = char(sum(bsxfun(@times, reshape(abs(cat - codedcat)' == 1, 8, []), 2 .^ (7:-1:0)')));
0 Comments
More Answers (1)
Image Analyst
on 20 Nov 2015
That's the most inefficient order - columns in the inner for loop and rows in the outer for loop, but anyway, since that is what you were told to do
[rows, columns, numberOfColorChannels]=size(origpic);
Difference = abs(origpic - cpic);
bin_message = zeros(1, rows*columns);
n=1;
for row = 1 : rows
for col = 1 : columns
if Difference(row, column) == 1
bin_message(n) = 1;
n = n + 1;
end
end
end
If you don't even know how to do a for loop, then you'd better read the "Getting Started" section of the help or read this link.
6 Comments
Guillaume
on 21 Nov 2015
Note that the loops are absolutely not needed in the first place. It's a shame that the assignment require them.
Also not needed is the if. The whole if statement can be replaced by:
bin_message(n) = Difference(row, column) == 1; %no if
There's a bug in IA answer, the n = n + 1 shouldn't be inside the if.
See Also
Categories
Find more on Get Started with MATLAB in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!