Кодирование графических данных. Векторная и растровая графика. Кодирование цвета.

Существует два способа представления графических изображений – растровый и векторный. Соответственно различают растровый и векторный форматы графических файлов, содержащих информацию графического изображения. Растровые форматы хорошо подходят для изображений со сложными гаммами цветов, оттенков и форм (фотографии, рисунки, отсканированные данные). Векторные форматы хорошо применимы для чертежей и изображений с простыми формами, тенями и окраской.

Растровая графика.

Растр, или растровый массив (bitmap), представляет совокупность битов, расположенных на сетчатом поле-канве. Бит может быть включен (единичное состояние) или выключен (нулевое состояние). Растровое изображение напоминает лист клетчатой бумаги, на котором каждая клеточка закрашена черным или белым цветом, в совокупности формируя рисунок.

 

Основным элементом растрового изображения является пиксел (pixel):

– пиксел – отдельный элемент растрового изображения;

– видеопиксел – элемент изображения на экране монитора;

– точка – отдельная точка, создаваемая принтером.

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

Наиболее простой тип растрового изображения состоит из пикселов, имеющих два возможных цвета – черный и белый. Для хранения такого типа пикселов требуется один бит в памяти компьютера (1-битовые изображения). Для отображения большего количества цветов используется больше битов информации. 24 бита обеспечивают более 16 миллионов цветов. 16 разрядов – High Color, 32 – True Color.

Основной недостаток растровой графики – каждое изображение требует для своего хранения большое количество памяти. Для решения проблемы обработки объемных (по затратам памяти) изображений используется два основных способа: увеличение памяти компьютера и сжатие изображений. Другой недостаток – снижение качества изображений при масштабировании.

Векторная графика.

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

Векторную графику часто называют объектно-ориентированной или чертежной графикой. Имеется ряд простейших объектов (примитивов): эллипс, прямоугольник, линия. Эти примитивы и их комбинации используются для создания более сложных изображений. Если посмотреть содержание файла векторной графики, обнаруживается сходство с программой. Он может содержать команды, похожие на слова, и данные в коде ASCII, поэтому векторный файл можно отредактировать с помощью текстового редактора.

Описание окружности (в упрощенном виде):

· • объект – окружность;

· • центр – 50, 70; радиус – 40;

· • линия: цвет – черный, толщина – 0.50;

· • заливка – нет.

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

Преимущества по сравнению с растровой:

· простота масштабирования изображения без ухудшения его качества;

· независимость объема памяти, требуемой для хранения изображения, от выбранной цветовой модели.

Недостаток: некоторая искусственность – любое изображение необходимо разбить на конечное множество составляющих его примитивов.

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

 

3.1.3. Основные этапы решения инженерных задач на ЭВМ. Понятие численных методов расчета.

 

Основные этапы решения инженерной задачи с помощью ЭВМ:

1) постановка проблемы: правильно сформулировать задачу не менее сложно, чем ее решить;

2) формализация или же построение математической модели (может быть, выбор): определяются объем и специфика исходных данных, устанавливается принадлежность решаемой задачи к одному из известных классов задач и выбирается соответствующий математический аппарат;

3) постановка вычислительной задачи: полная постановка многих сложных задач невыполнима, требуется упрощение задачи, что невозможно без хорошего представления о том, какие факторы и параметры наиболее важны для изучаемой задачи;

4) предварительный (предмашинный) анализ свойств вычислительной зада-чи: анализ корректности ее постановки, вопросы существования и единственности решения, исследование устойчивости решения;

5) выбор или построение численного метода: необходимо помнить, что любой получаемый результат является приближенным (погрешность численного метода, погрешность округления чисел);

6) алгоритмизация:

1. разложение вычислительного процесса на возможные составные части,

2. установление порядка их следования,

3. описание каждой части в какой-либо форме,

4. проверка реализации выбранного численного метода;

в процессе разработки алгоритм проходит несколько этапов детализации:

5. укрупненная схема алгоритма (наиболее важные и существенные связи между частями процесса),

6. детализация выделенных частей вычислительного процесса, имеющих са-мостоятельное значение;

на каждом этапе детализации выполняется многократная проверка и исправление (отработка) схемы алгоритма;

структуризация: каждый элемент крупноблочной схемы алгоритма должен быть максимально самостоятельным и логически завершенным в такой степени, чтобы дальнейшую его детализацию можно было выполнять независимо от дета-лизации остальных элементов; это упрощает процесс проектирования алгоритма и позволяет осуществлять его разработку по частям одновременно нескольким людям;

различные способы описания, отличающиеся по простоте, наглядности, компактности, степени формализации, ориентации на машинную реализацию и другим показателям:

7. словесная запись,

8. схемы,

9. псевдокод (формальные алгоритмические языки),

10. структурограммы (диаграммы Насси-Шнейдермана);

7) программирование: разработанный алгоритм задачи необходимо изло-жить на языке, который будет понятен ЭВМ непосредственно или после предварительного машинного перевода; язык Паскаль был предложен в 1970 г. профессором Никлаусом Виртом из Цюриха (Швейцария), назван в честь Блеза Паскаля, который изобрел один из первых калькуляторов; Язык Паскаль заложил основы современной методологии программирования, основной тезис его разработки: "язык должен быть очевидным и естественным отражением фундаментальных и наиболее важных концепций алгоритмов";

8) отладка программы: процесс поиска и устранения ошибок в программе;

ошибки бывают синтаксические (ошибки в тексте) и алгоритмические, синтаксические устраняются легко, алгоритмические – труднее; отладка может считаться законченной, если программа правильно работает на одном-двух наборах входных данных;

процесс отладки для сложных по структуре программ требует больше машинного времени, чем собственно решение на ЭВМ;

9) тестирование программы: проверка, как ведет себя программа на как можно большем количестве входных наборов данных, в том числе и на заведомо неверных (особенно, если программой будут пользоваться другие);

10) счет по программе;

11) обработка и интерпретация результатов: для правильной интерпретации и оценки результатов требуется глубокое знание существа решаемой инженерной задачи, ясное представление об используемой ММ и понимание (хотя бы в общих чертах) особенностей применяемого вычислительного метода;

12) использование результатов и коррекция математической модели.

 

3.2. Алгоритмизация и программирование

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

Процессор компьютера – это большая интегральная микросхема. Все команды и данные он получает в виде электрических сигналов. Фактически процессор можно рассматривать как огромную совокупность достаточно простых электронных элементов – транзисторов. В процессоре компьютера транзисторы сгруппированы в микроэлементы, называемые триггерами. Триггеры имеют два устойчивых состояния (открыт – закрыт) и переключаются из одного состояния в другое электрическими сигналами. Этим устойчивым состояниям соответствуют математические понятия 0 или 1. Команды, поступающие в процессор по его ши-нам, на самом деле являются электрическими сигналами, но и их тоже можно представить как совокупности нулей и единиц, то есть числами. Разным командам соответствуют разные числа. Поэтому реально программа, с которой работает процессор, представляет собой последовательность чисел, называемую машинным кодом.

3.2.1. Алгоритмы: способы представления, основные управляющие структуры и их реализация в языках программирования.

 

Алгоритм – это точно определенное описание способа решения задачи в виде конечной (по времени) последовательности действий.

Слово "алгоритм" появилось в результате искаженного перевода с арабского на европейские языки имени узбекского ученого IX века Аль Хорезми, который изложил правила арифметических действий над числами в десятичной системе счисления. Эти правила и назвали алгоритмами.

Свойства алгоритма, отличающие его от любых других предписаний:

· дискретность – разбиение процесса обработки информации на более простые этапы (шаги), выполнение которых человеком или компьютером не вызывает затруднений;

· определенность (детерминированность) – однозначность выполнения каждого отдельного шага преобразования информации;

· результативность (конечность) – завершение работы алгоритма за конечное число шагов;

· массовость – пригодность алгоритма для решения определенного класса задач.

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

Способы представления алгоритма:

· словесный – описание алгоритма словами, возможна любая степень детализации описания; формульно-словесный – более компактный, словесные описания сочетаются с формулами:

1) задать значение погрешности ε и начальное приближение x0;

2) вычислить корень уравнения: x = φ(x0);

3) если |x – x0| > ε, идти к 2;

4) вывод х = ;

5) конец;

– графический – наиболее распространен, алгоритм представляется в виде схемы, состоящей из символов, отражающих отдельные пункты алгоритма; причем различным по типу выполняемых действий блокам соответствуют различные геометрические фигуры согласно стандарту;

линии означают потоки информации, основное направление потока информации – сверху вниз и слева направо (стрелки на линиях могут не указываться), в других случаях применение стрелок обязательно.

Основные символы

 

– операторный (псевдокод) – в виде последовательности операторов на специальном алгоритмическом языке;

– табличный – представление алгоритма в виде таблицы решений, носит вспомогательный характер;

– с помощью структурограммы (схемы Насси-Шнейдермана) – реализует в себе требования структурного программирования в схемах алгоритмов.

Алгоритм нахождения корня уравнения итерационным методом

(графический)