Вернуться на Страничку новостей.

10.12.2009

Читать: Альберт Волос "Графические файлы и матрицы"

В этой работе автор обращается к графическим файлам формата bmp.
Завершающий вариант программы, описанной в этой работе распечатывает
дамп графического файла в текстовый файл.

Скачать программу

Здесь показана техника считывания из графич файла в массив в памяти, затем из памяти
в тектовый файл, предварительно преобразовывая в 16-ричное значение каждый байт.
Это довольно любопытный материал. Мы получаем матрицу русских букв.

Задача о минимальной матрице для букв

Подсказка

На картинке мы видим матрицу, на которой нарисована буква "А".

Каким образом программа может определить то, что это нарисована именно буква "А"?
Представим себе жучка, на спинке которого расположена лампочка. Жучок ползет
по линии f - f1. В тот момент, когда он заползает на темный контур буквы, лампочка
загорается. Как только он покидает темный контур буквы продолжая ползти по этой линии
- лампочка гаснет. Сколько раз он пересечет темный контур буквы, ползя по этой линии?
Очевидно что он пересечет контур буквы два раза. При этом два раза загорится лампочка.
Как долго будет гореть лампочка - не важно, важно что когда он на темном - лампочка горит,
и что если он ползет по f - f1 лампочка будет загораться два раза.

То же можно сказать и о линиях g - g1, h - h1 и даже линии a1 - e1.
Очевидно, что если он поползет по линии a - e, то лампочка зажжется всего один раз.

Поскольку жучек ползет в координатной плоскости, то мы можем координату X трактовать
как время его движения. Очевидно, что ползя последовательно по линиям f, g, h время
момента первого загорания лампочки будет сокращаться, а время момента второго загорания -
увеличиваться.

Теперь представим, что жучок ползет сверху вниз по линиям a,b,c,d и e соответственно.
По линиям b и d его лампочка загорится один раз, а по линии c - два раза. По линиям a и e
лампчка не загорится ни разу.

Могут ли вспышки лампочки охарактеризовать букву А? Представим, что вместо буквы А будет
нарисована буква Л. Контур этой буквы в точности совпадает с контуром буквы А, за
исключением поперечной палочки. Жучек поползет обычным образом. Будут ли отличаться
вспышки в этот раз от вспышек, когда он полз по контуру буквы А? Очевидно, что будут
отличаться. Например ползя сверху вниз по линии С лампочка загорится всего один раз в
отличие от случая с буквой А, когда лампочка загоралась дважды.

Таким образом наблюдая за жуком мы можем догадаться по какой из двух букв жук ползал!

Теперь вопрос: Какую минимальную матрицу мы можем создать, чтобы по вспышкам лампочки
на спине жука мы могли определить любую из 33-х букв русского алфавита?

Решив эту задачу, мы сможем написать программу, которая распознает все буквы русского
алфавита.

Вполне возможно, что даже такой матрицы достаточно, чтобы однозначно охарактеризовать все
буквы русского алфавита.

Hosted by uCoz