Программирование цифровой обработки изображения

Понятие цифровой обработки растровых изображений. Анализ основных методов и приемов цифровой обработки изображений. Примеры алгоритмов размытия, преобразования цветного изображения, поиска его границ, повышения диапазона с реализацией на языке C#.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 19.03.2017
Размер файла 4,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru

Приднестровский государственный университет им. Т. Г. Шевченко

Физико-математический факультет

Кафедра прикладной математики и информатики

Курсовая работа

по дисциплине «Системное программирование»

Программирование цифровой обработки изображения

Выполнила:

студентка 103 гр. д/о

физ.-мат. факультета

Стаина Марина Евгеньевна

Руководитель:

ст. преподаватель

кафедры ПМиИ

Великодный Вадим Игоревич

Тирасполь 2017

Введение

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

Иногда бывает только одна возможность получить изображение какого-либо явления и при этом получить четкое изображение могут помешать внешние факторы. Подбор правильного метода по восстановлению фокуса может исправить ситуацию в таких случаях.

Рассмотренный пример -- это лишь один из аспектов применения обширной области информатики и математики -- цифровой обработки изображений (ЦОИ). К другим применениям можно отнести: размытие изображений, распознавание объектов на них, коррекция цвета и т. д.

В настоящей курсовой работе рассматриваются теоретические основы ЦОИ и приводятся примеры алгоритмов с реализацией на языке C#.

Целью работы является изучение основных методов и приёмов цифровой обработки изображений и применение полученных знания на практике.

Для достижения цели были поставлены следующие задачи:

- Изучить основные понятия цифровой обработки растровых изображений (растр, пиксель, методы кодирования цвета и т. д.);

- Изучить средства для работы с изображениями в платформе .NET. (Bitmap, Graphics);

-Разработать приложение, реализующее следующие алгоритмы:

Ш преобразование цветного изображения в полутоновое;

Ш размытие изображения с разной степенью интенсивности;

Ш повышение динамического диапазона изображения;

Ш поиск границ изображения (операторы Кэнни и Собеля),

Курсовая работа состоит из введения, двух глав, заключения, списка использованной литературы и двух приложений.

В первой главе рассматриваются растровые изображения.

Во второй главе описываются алгоритмы.

Приложение 1 содержит код, который был написан для каждого алгоритма.

Приложение 2 содержит описание руководства пользователя.

цифровой изображение обработка алгоритм

1. Основные понятия цифровой обработки изображений

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

1.1 Растровые изображения

Цифровые изображения бывают двух видов: растровые и векторные. Мы в данной работе будем рассматривать растровые изображения.

Растровые изображения бывают различных форматов (*.gif, *.jpg и *.bmp.)

Растр -- форма представления изображения в виде элементов (пикселей), упорядоченных в строки и столбцы. Название пиксель образовано как сокращение от английского «picture element» (элемент изображения). Пиксель -- наименьший элемент из множества, которых создается изображение.

Рис. 1. Пиксели на изображении

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

Когда мы смотрим на растровое изображение, мы не видим отдельные пиксели, но при значительном увеличении в графическом редакторе можно их заметить. Каждому пикселю на изображении задается свой цвет, для этого используется трехцветная система кодирования RGB, состоящая из цветов: red, green, blue (красный, зелёный, синий). Каждому каналу цвета может быть задано значение яркости от 0 до 255. (Самому яркому всегда будет соответствовать значение 255, а черному 0). Диапазон выбран так, чтобы значение помещалось в 1 байт. Яркость часто кодируют действительным числом от 0 до 1.

Качество изображения определяется количеством пикселей на дюйм (разрешением), чем больше пикселей на один дюйм, тем менее заметны пиксели.

Обработка цифровых изображений с помощью цифровых вычислительных машин (компьютеров) называется цифровой обработкой изображения.

1.2 Кодирование цвета

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

Кодирование цвета может быть различным. Основным является модель RGB.

Рис. 2. Цветовая модель RGB.

Цветовая модель CMYK

Это модель состоит из трех основных цветов: Cyan (голубой), Magenta (пурпурный) и Yellow (желтый). Смешивание этих цветов не дает чистого черного цвета, поэтому в триаду цветов добавили черный (blacK) цвет.

Каждый из базовых цветов CMYK получается вычитанием из белого цвета одного из базовых цветов модели RGB.

При смешивание базовых цветов получатся другие цвета. Напрмер: Голубого + Пурпурного = Синий с оттенком фиолетового.

Пурпурный + Желтый = Красный. Уменьшение яркости пурпурного дает оранжевый, а уменьшение яркости желтого - розовый.

Желтый + Голубой = Зеленый. Уменьшение яркости желтого дает изумрудный, а уменьшение яркости голубого - салатовый.

Рис. 3 Цветовая модель CMYK

Цветовая модель YUV

Данная модель применяется в телевизионных системах. Однажды столкнувшись с проблемой, что на черно-белом телевизоре не показывает цветное изображение. И тогда вывели формулу(1), в которой все цвета модели RGB преобразовали в один сигнал Y (сигнал яркости изображения). Вместе с сигналом Y были выведены U и V(сигналы цветности).

Y=0,299R+0,587G+0,114B (1)

U=0,493(B?Y)

V=0,877(R?Y).

Цветовая модель HSB.

Модель HSB состоит из трех параметров: H (Hue) - оттенок или тон; S (Saturation) - насыщенность и B (Brightness) - яркость.

Тон -- это собственно цвет. Насыщенность - процент добавленной к цвету белой краски. Яркость - процент добавленной чёрной краски.

Модель HSB - трёхканальная цветовая модель. Любой цвет в HSB получается добавлением к основному спектру чёрной или белой, т.е. фактически серой краски. Описание цветов в ней не соответствует цветам, воспринимаемых глазом. Дело в том, что глаз воспринимает цвета, как имеющие различную яркость. Например, спектральный зелёный имеет большую яркость, чем спектральный синий. В HSB все цвета основного спектра (канала тона) считаются обладающими 100%-й яркостью. На самом деле это не соответствует действительности.

Модель HSB можно представить в виде кольца.

Рис. 4 Модель HSB

1.3 Операторы преобразования

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

С помощью операторов преобразования можно, например, размывать изображения, находить границы и т. д.

2. Реализация алгоритмов

2.1 Класс Bitmap

В платформе .NET и в Windows Forms за представление изображения отвечает абстрактный класс System.Drawing.Image. Он соответствует как растровым(Bitmap) изображениям так и векторным.

У класса Image есть 2 неабстрактных потомка:

- System.Drawing.Bitmap- представляет растровые изображения;

- System.Drawing.Metafile- представляет векторные изображения.

Класс Bitmap позволяет работать прямо с пикселями растрового изображения. Он является потомком абстрактного класса Image, представляющего изображения в C#.

При создании экземпляра Bitmap можно указать как размеры создаваемого изображения, так и имя файла, который нужно открыть. Объект этого типа может представлять изображение, отображаемое компонентом PictureBox.

Основные методы Bitmap, использованные в курсовой работе:

GetPixel (x,у) -возвращает цвет точки с координатами (x,у);

SetPixel -эта функция устанавливает цвет пикселя в заданных нами координатах в заданном цвете.

Так же у класса Bitmap есть конструкторы:

- Bitmap(имя файла) - из указанного файла загружает изображение;

- Bitmap(изображение) - копирующий конструктор;

- Bitmap(ширина и высота) - создает изображение с любыми размерами, которые мы зададим.

Параметр, задающий цвет должен быть типа Color. Этот тип позволяет, как указать цвет по имени, так и задать его в формате RGB.

Например:

Color.Red - красный;

Color.Green - зеленый;

Color.Aquamarine - аквамарин.

Так же можно задать произвольный цвет(Color.FromArgb).

2.2 Размытие изображения с разной степенью интенсивности

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

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

Рис. 5. Исходное изображение

Рис. 6. Размытое изображение

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

2.3 Преобразование цветного изображения в полутоновое

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

Коэффициенты получены экспериментально и учитывают чувствительность глаза к различным цветам.

Рис. 7. Исходное изображение

Рис. 8. Изображение с оттенками серого цвета

Цветовая гамма исходного изображения поменяла свои цвета на оттенки серого цвета разной тональности.

2.4 Повышение динамического диапазона изображения

Рис. 9. Исходное изображение

Рис. 10. Полученное изображение

После преобразования наше исходное изображение приобрело более яркие тона, обрело четкие границы.

2.5 Поиск границ изображения (операторы Кэнни и Собеля)

Для поиска границ ярких областей изображения часто используется операторный подход. Популярный операторы - это операторы Кэнни и Собеля. Рассмотрим первый более подробно.

Оператор Кэнни был разработан давно, но и сейчас часто используется и считается одним из лучших детекторов.

Границы при помощи оператора Кенни отмечаются, там где градиент принимает свое максимальное значение. Оператор имеет различное направление, поэтому существует четыре фильтра.

Пример использования рассмотренного алгоритма приведен на рисунках, 11 и 12.

Рис. 11. Исходное изображение

Рис. 12.

Как видно, границы объектов на изображении выделены белым. Эта информация может быть использована как предварительный этап других алгоритмов. Например, для поиска конкретного объекта на изображении.

Заключение

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

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

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

Литература

1. Гонсалес Р. Вудс Р. Цифровая обработка изображений Москва: Техносфера, 2005

2.Что такое растровое изображение?

http://chajnikam.ru/other/296-chto-takoe-rastrovoe-izobrazhenie.html

3.Научно-теоретические основы цифровых изображений.

http://elektivphotoshop.narod.ru/teoria.html

4.Цифровая обработка изображений. Книга 1

http://padaread.com/?book=17414&pg=22

5. У. Прэтт Цифровая обработка изображений, Москва издательство «Мир», 1982

Приложение 1. Исходные тексты программы

1. Преобразование цветного изображения в полутоновое.

private void серыйToolStripMenuItem_Click(object sender, EventArgs e)

{

Bitmap bmp = pictureBox1.Image as Bitmap;

//for (int x = 0; x < 10; x++)

// for (int y = 0; y < 10; y++)

// bmp.SetPixel(x, y, Color.FromArgb(243, 101, 208));

for (int x = 0; x < bmp.Width; x++)

for (int y = 0; y < bmp.Height; y++)

{

var color = bmp.GetPixel(x, y);

var z = (int)(0.299 * color.R + 0.587 * color.G + 0.114 * color.B);

bmp.SetPixel(x, y, Color.FromArgb(z, z, z));

}

pictureBox1.Invalidate(); // Перерисовать

}

2. Размытие изображения с разной степенью интенсивности.

private void размытиеToolStripMenuItem_Click(object sender, EventArgs e)

{

Bitmap bmp = pictureBox1.Image as Bitmap; // извлечение картинки из компонента

Bitmap bmp2 = new Bitmap(bmp); // создание нового изображения в памяти и копирование в него bmp

for (int x = 1; x < bmp.Width - 1; x++)

for (int y = 1; y < bmp.Height - 1; y++)

{

var r = (bmp.GetPixel(x, y).R +

bmp.GetPixel(x + 1, y).R +

bmp.GetPixel(x - 1, y).R +

bmp.GetPixel(x + 1, y - 1).R +

bmp.GetPixel(x - 1, y - 1).R +

bmp.GetPixel(x + 1, y + 1).R +

bmp.GetPixel(x - 1, y + 1).R +

bmp.GetPixel(x, y - 1).R +

bmp.GetPixel(x, y + 1).R) / 9;

var g = (bmp.GetPixel(x, y).G +

bmp.GetPixel(x + 1, y).G +

bmp.GetPixel(x - 1, y).G +

bmp.GetPixel(x + 1, y - 1).G +

bmp.GetPixel(x - 1, y - 1).G +

bmp.GetPixel(x + 1, y + 1).G +

bmp.GetPixel(x - 1, y + 1).G +

bmp.GetPixel(x, y - 1).G +

bmp.GetPixel(x, y + 1).G) / 9;

var b = (bmp.GetPixel(x, y).B +

bmp.GetPixel(x + 1, y).B +

bmp.GetPixel(x - 1, y).B +

bmp.GetPixel(x + 1, y - 1).B +

bmp.GetPixel(x - 1, y - 1).B +

bmp.GetPixel(x + 1, y + 1).B +

bmp.GetPixel(x - 1, y + 1).B +

bmp.GetPixel(x, y - 1).B +

bmp.GetPixel(x, y + 1).B) / 9; ;

bmp2.SetPixel(x, y, Color.FromArgb(r, g, b));

}

pictureBox1.Image = bmp2; // заменили старую картинку новой

pictureBox1.Invalidate(); // Перерисовать

3. Повышение динамического диапазона изображения.

private void динамическийДиапазонToolStripMenuItem_Click(object sender, EventArgs e)

{

Bitmap bmp = pictureBox1.Image as Bitmap; // извлечение картинки из компонента

#region Канал R

byte minR = 255;

byte maxR = 0;

for (int i = 0; i < bmp.Width; i++)

for (int j = 0; j < bmp.Height; j++)

{

byte R = bmp.GetPixel(i, j).R;

if (R < minR)

minR = R;

if (R > maxR)

maxR = R;

}

#endregion

#region Канал G

byte minG = 255;

byte maxG = 0;

for (int i = 0; i < bmp.Width; i++)

for (int j = 0; j < bmp.Height; j++)

{

byte G = bmp.GetPixel(i, j).G;

if (G < minG)

minG = G;

if (G > maxG)

maxG = G;

}

#endregion

#region Канал B

byte minB = 255;

byte maxB = 0;

for (int i = 0; i < bmp.Width; i++)

for (int j = 0; j < bmp.Height; j++)

{

byte B = bmp.GetPixel(i, j).B;

if (B < minB)

minB = B;

if (B > maxB)

maxB = B;

}

#endregion

if (maxR == minR || maxG == minG || maxB == minB)

{

MessageBox.Show("Динамический диапазон нельзя расширить");

}

#region Запись

for (int i = 0; i < bmp.Width; i++)

for (int j = 0; j < bmp.Height; j++)

{

Color c = bmp.GetPixel(i, j);

bmp.SetPixel(i, j, Color.FromArgb(

(c.R - minR) * 255 / (maxR - minR),

(c.G - minG) * 255 / (maxG - minG),

(c.B - minB) * 255 / (maxB - minB)

));

}

#endregion

pictureBox1.Invalidate(); // Перерисовать

}

static int Saturate(int z)

{

if (z < 0) return 0;

if (z > 255) return 255;

return z;

}

4. Поиск границ изображения (операторы Кэнни и Собеля).

private void операторToolStripMenuItem_Click(object sender, EventArgs e)

{

Bitmap bmp = pictureBox1.Image as Bitmap; // извлечение картинки из компонента

Bitmap bmp2 = new Bitmap(bmp); // создание нового изображения в памяти и копирование в него bmp

for (int x = 1; x < bmp.Width - 1; x++)

for (int y = 1; y < bmp.Height - 1; y++)

{

var r = Saturate(4 * bmp.GetPixel(x, y).R -

bmp.GetPixel(x + 1, y - 1).R -

bmp.GetPixel(x - 1, y - 1).R -

bmp.GetPixel(x + 1, y + 1).R -

bmp.GetPixel(x - 1, y + 1).R);

var g = Saturate(4 * bmp.GetPixel(x, y).G -

bmp.GetPixel(x + 1, y - 1).G -

bmp.GetPixel(x - 1, y - 1).G -

bmp.GetPixel(x + 1, y + 1).G -

bmp.GetPixel(x - 1, y + 1).G);

var b = Saturate(4 * bmp.GetPixel(x, y).B -

bmp.GetPixel(x + 1, y - 1).B -

bmp.GetPixel(x - 1, y - 1).B -

bmp.GetPixel(x + 1, y + 1).B -

bmp.GetPixel(x - 1, y + 1).B);

bmp2.SetPixel(x, y, Color.FromArgb(r, g, b));

}

pictureBox1.Image = bmp2; // заменили старую картинку новой

pictureBox1.Invalidate(); // Перерисовать

}

приложение 2. Руководство пользователя

Краткая характеристика как работать с проектом.

После того как запустили проект нажимает на файл и выбираем нужное нам изображение. Затем мы выбираем преобразования. После мы можем сохранить свою работу и выйти из проекта.

Размещено на Allbest.ru

...

Подобные документы

  • Описание математических методов представления и обработки графических изображений. Описание разработанного программного дополнения. Описание функций и их атрибутов. Представление и обработка графических изображений. Результаты тестирования программы.

    курсовая работа [1,7 M], добавлен 27.01.2015

  • Задачи цифровой обработки изображений. Методы пороговой сегментации. Создание программы представления рисунка в виде матрицы и применения к нему пороговой обработки. Разработка интерфейса программы загрузки и фильтрации изображения с выбранным порогом.

    курсовая работа [2,0 M], добавлен 12.11.2012

  • Изучение и программная реализация в среде Matlab методов обработки, анализа, фильтрации, сегментации и улучшения качества рентгеновских медицинских изображений. Цифровые рентгенографические системы. Разработка статически обоснованных алгоритмов.

    курсовая работа [4,7 M], добавлен 20.01.2016

  • Проблема улучшения качества отпечатков пальца с целью повышения эффективности работы алгоритмов биометрической аутентификации. Обзор алгоритмов обработки изображений отпечатков пальцев. Анализ алгоритма, основанного на использовании преобразования Габора.

    дипломная работа [4,5 M], добавлен 16.07.2014

  • Обнаружение деталей и их границ изображения. Применение ранговых алгоритмов. Использование алгоритмов адаптивного квантования мод в режиме пофрагментной обработки. Обобщенная линейная фильтрация изображений. Восстановление отсутствующих участков.

    курсовая работа [1,8 M], добавлен 17.06.2013

  • Обзор существующего программного обеспечения для автоматизации выделения границ на изображении. Разработка математической модели обработки изображений и выделения контуров в оттенках серого и программного обеспечения для алгоритмов обработки изображений.

    дипломная работа [1,7 M], добавлен 27.03.2013

  • Описание метода обработки "Выделение контурных линий" и особенностей его применения и программной реализации. Способы увеличения контрастности. Значение правильного подбора формы гистограммы для качества компьютерной обработки растрового изображения.

    курсовая работа [940,2 K], добавлен 24.06.2013

  • Выбор методов обработки и сегментации изображений. Математические основы примененных фильтров. Гистограмма яркости изображения. Программная реализация комплексного метода обработки изображений. Тестирование разработанного программного обеспечения.

    курсовая работа [1,3 M], добавлен 18.01.2017

  • Разработка приложения, целью которого ставится преобразование черно-белых полутоновых изображений в цветные. Обзор методики обработки изображения, способов преобразования изображения с помощью нейронной сети. Описания кластеризации цветового пространства.

    дипломная работа [6,3 M], добавлен 17.06.2012

  • Цифровые рентгенографические системы. Методы автоматического анализа изображений в среде MatLab. Анализ рентгеновского изображения. Фильтрация, сегментация, улучшение изображений. Аппаратурные возможности предварительной нормализации изображений.

    курсовая работа [890,9 K], добавлен 07.12.2013

  • Общая характеристика систем синтезированного обзора (видения). Разработка программного стенда, предназначенного для построения синтезированных 3D изображений местности по цифровой карте, загруженной из файла имитации полета летательного аппарата.

    дипломная работа [8,7 M], добавлен 29.06.2012

  • Микропроцессор как программно-управляемое электронное цифровое устройство, предназначенное для обработки цифровой информации и управления процессом этой обработки. Его внутреннее устройство и значение, выполняемые функции. Принципы обработки данных.

    презентация [2,9 M], добавлен 05.02.2015

  • Яркость точек и гистограммы изображения. Изменение яркости и контрастности. Метод ранговой фильтрации с оценкой середины диапазона. Наложение шумов на изображение. Преобразование изображения в негатив. Получение матрицы яркостей и построение гистограмм.

    курсовая работа [1,5 M], добавлен 11.12.2012

  • Анализ существующих методов масштабирования изображений. Повышение скорости обработки и изменения картинок. Алгоритм масштабирования с использованием параллелизма. Отбор пикселей для правильного расчета градиента. Выбор метода интерполяции изображения.

    курсовая работа [5,8 M], добавлен 17.06.2017

  • Обработка изображений на современных вычислительных устройствах. Устройство и представление различных форматов изображений. Исследование алгоритмов обработки изображений на базе различных архитектур. Сжатие изображений на основе сверточных нейросетей.

    дипломная работа [6,1 M], добавлен 03.06.2022

  • Технология считывания данных в современных устройствах оцифровки изображений. Принцип работы черно-белых и цветных сканеров. Цифровое кодирование изображений. Программные интерфейсы и TWAIN. Способ формирования изображения. Преимущество галогенной лампы.

    реферат [2,2 M], добавлен 02.12.2012

  • Современные семейства ПЛИС фирмы Xilinx, их характеристики и значимость в процессе построения систем цифровой обработки сигналов. Создание базы параметров, фактов и запрещенных комбинаций для решения открытой задачи поискового проектирования модели ПЛИС.

    курсовая работа [3,6 M], добавлен 14.12.2012

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

    презентация [641,9 K], добавлен 29.05.2010

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

    курсовая работа [2,3 M], добавлен 15.04.2019

  • Сравнительная оценка существующих программ, повышающих разрешение изображений на языке Borland Delphi. Выбор оптимального инструментария для разработки логической схемы. Форма поиска файлов, преобразования изображений и реализации алгоритмов интерполяции.

    дипломная работа [3,0 M], добавлен 29.11.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.