The picture below depicts Sir Richard Mervyn Bacon, a (very) distant relative of Francis Bacon, leaving his flat on a clear autumns night in order to get his favourite book from the local library. Your task is to:
Name the title of the book
The image is scaled on Stack Exchange. You might want to click the image to view the full-size version and save it locally for easier analysis.
It should be obvious, but just to make sure: The picture above encodes either the title or unambiguous hints to the title in an unambiguous way. There is no guesswork required, and a valid solution not only names the title, but also features the decoding steps leading to the title. The introduction text (and puzzle title) is a hint, but otherwise not essential. The book is English and belongs to world literature, freely available on the net for download.
Additional information on this puzzle and the puzzle-building process
The following information of the purpose of the site, explaining how and why some things were done. They assume that the solution has already been found (see accepted answer) and contain severe spoilers.
Do not read on if you want to solve the puzzle yourself!
The main goal of this puzzle was
to use Baconian cipher in a grey-level image to encode a large amount of text. Essentially, one needs an image property which allows one to give a large number of arbitrarily changed binary statements in a clear sequence - binary code, if you want - but hide it so that it is not obvious to the person looking at the image. For a nice historical perspective, read this article.
The specific idea I had was
That an arbitrary image can contain arbitrary text if one encodes the message in a non-obvious, general attribute such as subtle intensity changes. Doing this on a pixel-by-pixel basis would be possible (i.e. a modulation of one colour-channel), but I wanted it not too obscure, and at least fairly accessible to people with standard image editor programs. After all, this should be a puzzle and not a safe encryption.
So I've chosen to encode information into the line/column-wise intensity sum of image intensities. For an image of dimensions H * W one can then encode H*W/5 letters using the standard Baconian cipher.
Then I've realized that
Just presenting an arbitrary image with an arbitrary (long) text encoded and asking to find it, might just not be fun. Also, I wanted to avoid reception-problems like I've encounter in a previous puzzle of mine.
Therefore I've build the image of the puzzle as
as both a puzzle itself and as a series of hints to the main challenge. The idea being, that people having found 8 Baconian ciphers in different levels of difficulty, would be more inclined to find the last Baconian cipher they already know has to be there. Also, the smaller ciphers allowed me to more or less hint at the final solution to cut down frustration. Using the additional Morse code was just to keep the scope a bit more interesting.
The puzzle was built the following way:
- The image was manually drawn in a graphics program with ideas for the various smaller codes. This was great fun for me. To do the heavy leg-work of encoding and decoding, I've use the excellent online tools: Tool for Morse Code; Tool for Baconian cipher. I made sure to use a very limited number of distinct grey levels (between 0 and 255) because I wanted the puzzler to be aware of the different intensities in the stars, notice (on close inspection) the random noise, and also point to the importance of intensity-values in general.
- To actually encode the long text, one has to successively alter line-sum intensity to be even or odd as required. If the sum is already correct, nothing needs to be done, otherwise add or subtract the value of 1 in a single pixel of the line. Once the lines are done, proceed in the same way with the column-sums. However, each time you change a pixel, you have to change another pixel of the that pixel´s line (at higher column-index) to not mess with previously constructed sums. I have done this alteration in a little bit of script code. What is important, however: Ensure that the minimum and maximum values in the image stay at 0..255! (So I've always done a -1 modifier except for 0-valued pixels which I gave a +1 when needed.)
- When saving the image, make sure a format is used which preserves individual pixel-values (so no JPG!) and maps intensities to a grey-scale 0.255. GIF did work out nicely, but PNG or TIF might have been alternative choices.
Most importantly: Once saved in final form, re-open image and cross-check that the line and column sums are still correct! (I repeated this with the posted image additionally to ensure the website isn't doing anything funny - it didn't.) I additionally checked that some free software can be used to extract the pixel values I needed. I've used ImageJ as test-software.
Some additional points:
- I've added a bit of random noise to the image so that the pixel-modification of +1 or -1 isn't giving suspiciously 'single pixel' changes. If the whole image would have had only 6 main grey-tones, any 'deviated' pixel would have been easily recognizable. One wouldn't have the problem in an image using 256 grey-levels natively already.
- For encoding without 'obsolete' sums, the width & length of the image added together need to be integer-multiples of 5 (for Baconian cipher). Once could leave the 'last' sums unused, but I wanted a clean, self-coherent puzzle. However, as the "5" is a tell tale sign for Baconian cipher, and the puzzle already knows this cipher is used, I didn't want it to be too obvious. Hence neither width nor length of my image where integer multiples of 5 (just the sum is).
- I deliberately used strange image dimensions, so that a careful observer could realized this as a hint.
I hope this puzzle has been fun. Please use the comments sections to let me know your ideas. This Stackexchange site is about learning both solving and building puzzles, so feedback is important.