• Онлайн: 2
Содержание
Бинарные изображения
В компьютерном мире существует такой термин как "бинарное изображение" — разновидность цифровых растровых изображений, когда каждый пиксел может представлять только один из двух цветов, например, чёрный и белый.
Значения каждого пиксела условно кодируются как «0» и «1». Значение «0» условно называют задним планом или фоном (англ. background), а «1» — передним планом (англ. foreground).
Когда мы видим перед собой уже нарисованную картинку с домиком, то сразу понятно, что это дом. Но когда видим соответствующую этой картинке бинарную маску, то уже не всё так понятно. А уж если эти нолики с единичками перевести в восьмеричную, десятичную или шестнадцатиричную систему счисления, то ни о какой картинке с домиком уже речи нет — она будет надёжно «скрыта» от глаз, при том, что информация о ней никуда не денется, просто она станет закодирована.
Можно сделать ещё «хуже» — каждому шестнадцатеричному коду строки изображения сопоставить графический символ из какой-либо известной кодовой таблицы, например, windows-1251 или CP866. Тогда каждая строчка такого изображения будет кодироваться всего одним символом, и всё изображение с домиком превратится в «→&BяBZZ~».
Можно даже не кодировать каждую строку, а просто выписать их друг за другом по отдельности или «сплошняком». В этом случае тоже непросто понять, что закодировано именно изображение.
Фидошный адрес
Все эти способы преобразования и хранения бинарных изображений активно используются в компьютерной технике, что не мешает использовать их в задачах и головоломках. Однажды один фидошник прислал мне такую задачу:
Если честно, то я очень долго думал над этой задачей, пробовал применять разные шифры перестановки, и замены, пробовал их комбинировать — но не получалось. Потом всё же начал с самого начала и подробнее прочитал условие. Подсказка была в самом начале: «компьютерная графика». Стал думать, какие способы есть перевести число в графику. Вначале подумал, что тройки символов - это координаты в пространстве, потом попробовал определить позиции символов и построить по их номерам гистограмму. В конце концов, решил применить метод бинарных изображений, изложенный выше — и получилось! Тоже не с первого раза, конечно :)
На картинке получился адрес моего фидошного узла 2:5020/2613. Почему сверху вышла сплошная полоска? Если бы автор задачки попытался использовать пятизначные двоичные числа, то попал бы в самую верхнюю часть кодовой таблицы с кодами от 0 до 32, а там не во всех таблицах есть отображаемые символы, чаще — управляющие. Поэтому он сделал сдвиг на две строки вниз (на 32 символа). В двоичном виде это получилось так, как будто к числу прибавили 100000 (3210=1000002), вот в каждой строчке и появилась лишняя единичка. Ничего страшного, информация при этом не потерялась. Прекрасная задачка!
Сигнал из космоса
Ниже приведён фрагмент из книги И.С. Шкловского «Вселенная. Жизнь. Разум».
«Пожалуй самым эффективным методом установления контакта между инопланетными цивилизациями является передача изображения. При этом предполагается, что все разумные существа, населяющие разнообразные планеты, должны быть зрячими. Такое предположение выглядит весьма правдоподобно. Ведь у нас на Земле зрением обладает огромное количество видов живых существ, от низших до самых высших. Зрение является мощнейшим способом получения живыми существами информации от внешнего мира, обеспечивающим огромное количество сохраняющих реакций <..>.
Эффективность метода передачи информации посредством изображения была остроумно продемонстрирована Дрэйком на радиоастрономической конференции в Грин Бэнк (США). Допустим, сообщил он, что от некоторой звезды регулярно получаются радиоимпульсы малой длительности, разделённые интервалами, кратными длительности импульса. На первый взгляд, эти интервалы разбросаны беспорядочно. Через определённый промежуток времени та же последовательность импульсов повторяется. Это должно явно указывать на их искусственное происхождение. Если изобразить каждый импульс единицей, а «пустой» промежуток времени, по длительности равный длительности импульса,— нулём, то получится запись, представленная на рис. 104. Дрэйк предложил участникам конференции расшифровать этот сигнал. Самое удивительное то, что очень скоро значительное число участников с этой задачей справилось.
Рис. 104
Ход их рассуждения был такой. Всего в записи содержится 1271 знак (единиц и нулей). Число 1271 есть произведение двух простых сомножителей 41*31. Естественно возникает предположение, что сигнал представляет собой кадр телевизионного изображения, в котором 31 строка и 41 элемент в строке (может быть, конечно, наоборот, но от этого изображение повернётся на 90°, что не существенно1)). Так как большинство знаков — нули, изображение контурное. Развернём это изображение по строкам, причём вместо единиц будем ставить чёрные кружки. Тогда получится забавная картинка, представленная на рис. 105.
Эта картинка содержит довольно богатую информацию. Прежде всего видно, что разумные существа, населяющие планету, антропоморфны и размножаются таким же способом, как их коллеги по разуму, населяющие Землю. У них есть такая важная общественная ячейка, как семья. Грубая окружность в левом верхнем углу картинки должна изображать их Солнце, а ряд точек, расположенных вдоль левого края изображения сверху вниз,— его планетную семью. Против каждой из таких точек в двоичной системе счисления изображён порядковый номер планеты2). Левая фигура указывает рукой на четвертую (по порядку удаления от их Солнца) планету. Именно на этой планете имеется разумная жизнь.
От третьей сверху планеты горизонтально идёт волнистая линия. Это можно истолковать таким образом: поверхность третьей планеты покрыта жидкостью (вероятно, водой). Под волнистой линией схематически изображено некоторое рыбообразное существо — представитель фауны этой планеты… Следовательно, можно сделать важный вывод: аборигены далекого мира могут совершать межпланетные перелёты. Жизнь на планете основывается на тех же примерно химических процессах, что и у нас на Земле, ибо в верхней части изображения схематически представлены (слева направо) атомы водорода, углерода и кислорода. Изображение содержит также информацию о размерах разумных существ, населяющих этот чужой мир. Справа от фигур находится «метка роста», посредине которой изображено число 11. Значит, рост взрослых особей — 11 единиц некоторого масштаба. Что это за масштаб? Так как передача изображения велась на волне 21 см, естественно считать длину волны межзвёздной радиолинии единицей масштаба. Значит, наши «братья по разуму» заметно выше нас: их рост достигает 231 см… Наконец, над вытянутой рукой правой фигуры изображено число 6. Похоже на то, что эти существа шестипалые, что делает весьма вероятным предположение, что они пользуются двенадцатиричной системой счисления…
Приходится только удивляться, какое большое количество информации мы получили из простого анализа 1271 элемента. Этот пример наглядно иллюстрирует возможности обмена информацией методом передачи изображения.»
1) Автор немного некорректно описал, как точно определить размеры кадра. Если выбрать размер 31×41, то изображение отнюдь не повернётся на 90°, а получится аналогичная исходному изображению «каша». То, что картинка не «вертикальная» 31×41, а «горизонтальная» 41×31 говорят точки в углах изображения. «Братья по разуму» сделали нам подсказку: расстояние от первого импульса до второго как раз и кодирует длину строки кадра.
2) В двоичной системе каждое число представляется суммой степеней 2: n = a0*20 + a1*21 + a2*22 + …, где ai принимают значения либо 1, либо 0. В первом случае ставится точка, во втором делается пропуск. Например, число 11 можно представить как 1*20 + 1*21 + 0*22 + 1*23 или •• •. На рис. 105 слева от изображения каждого числа дополнительно ставится ещё точка, как это делается, например, при телеграфировании.
Ссылки
- https://habr.com/ru/post/416177/ — Формула Таппера и реализация алгоритма на Python
- Бинарное_изображение — Статья на Википедии