Магические RGB-иероглифы

от автора

image

Как выдумаете, какую информацию можно разместить на вот такой картинке, размером 200х200px? Я считаю, что на такой картинке можно вполне разместить роман в стихах Александра Сергеевича Пушкина – «Евгений Онегин», объемом 148 кб в текстовом формате .txt.
Как это можно сделать? Прошу под кат.

Внимание, возможно, что вся идея, выдвинутая ниже – полный бред и будет разбита в пух и прах эрудированными людьми. В таком случае статья будет убрана с глаз долой. Но все же прошу ее рассмотреть.


Занимался я как-то довольно скучным делом – переводил с немецкого языка один технический стандарт на русский язык. Стандарт был в формате PDF, с множеством цветных таблиц. Тот, кто занимался версткой файла, очевидно, терпеть не мог одинаковых цветов и почти каждая новая таблица имела свой собственный цвет заливки. Т.к. я пытался сделать русский вариант максимально приближенным к оригиналу, то мне приходилось копировать цвет заливки таблицы в RGB и, затем в Word’е вбивать его для копируемой таблицы. Время тратилось на это минимально, но я заметил, что верстальщик любил цвета, имеющие в RGB какие-то сходные значения.

Например: RGB — 236, 236, 236 или 255,155,155 и так далее. Как будто он пытался через эти цифры передать какую-то информацию.
Интересно, подумал я, а что, если взять картинку и одним пикселем специально выбранного цвета передать текстовую информацию. Т.е. примерно вот так:

image

Да, конечно можно так сделать, но что из этого?
Но тут я вспомнил об иероглифах, с которых началась письменность человечества (а кое-где и до сих пор используется).

image — Вот древнеегипетский иероглиф, который означает город.

В китайском языке используется до 60 тысяч иероглифов, хотя в повседневной жизни используется не более 10 тысяч.
Человеку трудно выучить так много иероглифов, именно поэтому со временем человечество перешло на слоговое письмо, когда отдельными символами передавались слоги. Это позволило снизить количество знаков до нескольких сотен. А затем уже пришел алфавит из отдельных букв, который обычно составляет не более 50 букв.

Но ведь компьютер может «выучить» любое количество символов. RGB дает нам около 16 млн цветов. Почему бы не использовать это для шифрования некого текста?

У нас есть два компьютера, каждый из которых обладает одинаковым словарем, где слово, знак препинания или же цифра зашифрована «своим» цветом в RGB. Они обладают неким RGB словарем, где все организовано по принципу
один пиксель определенного цвета = слово (цифра, знак препинания и т.п.)

Один компьютер получает текст, кодирует его в RGB пиксель-иероглифы, создает из них изображение и передает его по почту другому компьютеру. Второй компьютер декодирует полученную картинку в исходный текст.
В русском языке существует не менее 100 тысяч слов. Большинство из слов склоняются, поэтому нам придется для большинства слов использовать несколько RGB-кодов

image

На слово «кот» приходится 10 словоформ, возьмем для надежности 20 форм для каждого слова.
20 * 100.000 = 2 млн. пиксель-иероглифов (из 16 млн. возможных с RGB).

image

Т.к. компьютер понимает, где закончилось первое слово, а где началось второе – пробелы он может расставлять автоматически.

Чем дальше в лес – тем больше дров.

Но возможности «сжатия» текста на простой передаче «один пиксель=одно слово» не ограничиваются.
В любом языке есть устойчивые словосочетания и формы, которые используются очень часто.

  • так как
  • я думаю
  • ты знаешь
  • потому что
  • я уже еду
  • скоро буду

и тысячи-тысячи других.

Можно взять десятки тысяч таких наиболее часто используемых форм из двух, трех и даже четырех слов, вбить их в наш RGB-словарь и вместо двух пикселей на словосочетание «так как» — использовать только один. Обладая «банком данных» в 16 млн пиксель-иероглифов, нам это под силу.

Возвращаясь к нашей картинке, размером 200 х 200 пикселей.

200 х 200 = 40000 пикселей

Объем «Евгения Онегина около 24000 слов. Используя наши пиксель-иероглифы, мы можем вполне закодировать всю поэму в картинку размером 200 х 200 пикселей.

Зачем это нужно?

1. Сжатие текстовых данных при передаче. Насколько сильно, мне трудно судить, поэтому хотел попросить помощи в этом вопросе.

2. Возможность нестандартной шифровке с включением отдельных пикселей в фотографии большого объема (3 и более мегабайт). Можно вставить несколько пикселей в заранее оговоренную область, а с помощью этих пикселей выдать перечень тех пикселей в фотографии, которые содержат спрятанную текстовую информацию. «Прятать» такие пиксели можно в подходящие по цвету и тону (чтобы они не выделялись явно на фотографии), что вполне можно сделать программными средствами.

ссылка на оригинал статьи http://habrahabr.ru/post/216541/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *