- •Аннотация
- •Содержание
- •Введение
- •1. Реализация
- •1.1. Рисование окружности
- •1.2. Наложение фильтра
- •1.3. Разделение изображения на части
- •1.4. Взаимодействие с программой
- •1.5. Дополнительные функции
- •1.6. Соглашение
- •2. Примеры
- •Заключение
- •Список использованных источников
- •Приложение а иСходный код программы
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра МО ЭВМ
Курсовая РАБОТА
по дисциплине «Программирование»
Тема: Обработка изображений
Студентка гр. 2383 |
|
Бараева Е.Н. |
Преподаватель |
|
Азаревич А.Д. |
Санкт-Петербург
2023
ЗАДАНИЕ
на курсовую работу
Студентка Бараева Е.Н. |
||
Группа 2383 |
||
Тема работы: Работа с изображениями в языке Си
|
||
Исходные данные: Программа должна иметь CLI или GUI. Программа должна реализовывать весь следующий функционал по обработке png-файла Общие сведения
Программа должна реализовывать следующий функционал по обработке PNG-файла (1) Рисование окружности. Окружность определяется:
(2) Фильтр rgb-компонент. Этот инструмент должен позволять для всего изображения либо установить в 0 либо установить в 255 значение заданной компоненты. Функционал определяется
(3) Разделяет изображение на N*M частей. Реализация: либо провести линии заданной толщины, тем самым разделив изображение либо сохранение каждой части в отдельный файл. -- по желанию студента (можно и оба варианта). Функционал определяется:
|
||
Содержание пояснительной записки: Содержание, Введение, Реализация, Примеры, Заключение, Список использованных источников, Приложение А. |
||
Предполагаемый объем пояснительной записки: Не менее 10 страниц. |
||
Дата выдачи задания: 22.03.2023 |
||
Дата сдачи реферата: 17.05.2023 |
||
Дата защиты реферата: 19.05.2023 |
||
Студентка |
|
Бараева Е.Н. |
Преподаватель |
|
Азаревич А.Д. |
Аннотация
В данной курсовой работе были рассмотрены методы обработки изображений формата PNG. Реализованная программа работает изображениями без сжатия, с глубиной цвета 8 бит. Пользователь взаимодействует с программой с помощью CLI, который был написан с помощью библиотеки getopt.h. В программе предусмотрена обработка некорректных входных данных, возможность вывода подробной информации о PNG файле.
Содержание
|
Введение |
7 |
1. |
Реализация |
8 |
1.1. |
Рисование окружности |
8 |
1.2. |
Наложение фильтра |
9 |
1.3. |
Разделение изображения на части |
9 |
1.4. |
Взаимодействие с программой |
9 |
1.5. |
Дополнительные функции |
11 |
1.6. |
Соглашение |
11 |
2. |
Примеры |
13 |
|
Заключение |
17 |
|
Список использованных источников |
18 |
|
Приложение А. Исходный код программы |
19 |
Введение
Цель работы.
Целью данной работы является создание программы на языке Си, которая обрабатывает изображения формата PNG в зависимости от поданных аргументов.
Задачи.
Для достижения поставленной цели требуется решить следующие задачи: освоить работу с библиотекой getopt.h и libpng; научиться исправлять проблемы, которые могут возникнуть при некорректном вводе пользователем; научиться работать с изображениями формата PNG; научиться правильно считывать и записывать данные из файла и в файл.
1. Реализация
1.1. Рисование окружности
1.1.1) put_pixel
Функция устанавливает заданные значения цветов в пиксель.
1.1.2) xLine
Функция рисует горизонтальную линию заданного цвета шириной в 1 и длиной от одного переданного пикселя до другого переданного пикселя.
1.1.3) yLine
Функция рисует вертикальную линию заданного цвета шириной в 1 и длиной от одного переданного пикселя до другого переданного пикселя.
1.1.4) fill_circle
Функция, используя рекурсивный метод заливки цветом, заполняет окружность переданным цветом.
1.1.5) circle_part
Функция рисует одну четвертую окружности заданной ширины и цвета в зависимости от переданной четверти. Эта функция создана из-за того, что при вычислении центра и радиуса окружности иногда (в зависимости от длины стороны квадрата) получаются не целые числа, и для того, чтобы окружность была вписана в квадрат, было принято решение рисовать четверти окружностей из 4 пикселей максимально приближенных к истинному центру. Для реализации данной функции был изучен алгоритм Брезенхема, на его основе и была написана функция. Функция, вычисляя внешний и внутренний радиусы окружностей, заполняет между ними пространство, вызывая функции xLine, yLine.
1.1.6) circle
Функция рисует окружность заданной ширины и цвета и если был подан цвет закраски, то и закрашивает ее. Сначала функция определяет, был подан центр и радиус или координаты углов квадрата. Затем если были поданы координаты квадрата и если разница между иксами нечетная, то вызывается функция circle_part 4 раза, а затем заливается, если надо, а если разница между иксами четная, то функция вычисляет центр и радиус окружности. Когда у окружности известны радиус и центр, то функция рисует окружность, вычисляя внешний и внутренний радиусы, и заполняет пространство между ними нужным цветом. В конце если требуется заливка, то вызывается функция fill_circle.
