- •Содержание
- •Введение
- •Постановка задачи
- •Анализ объектной среды
- •Требования к системе
- •Критерий качества системы
- •Концептуальная модель
- •Выбор средств разработки.
- •Физическая реализация
- •Загрузка изображения
- •Линейное усреднение пикселей по соседним
- •Медианная фильтрация
- •Размытие по Гауссу
- •Математическая морфология
- •Изменение яркости
- •Изменение контраста
- •Изменение цветового тона
- •ФильтрLight-Sharpen
- •Сохранение обработанного изображения
- •Тестирование продукта.
- •Руководство пользователя
- •Руководство разработчика
- •Вводная часть
- •Структура библиотекиImgPreProcessing
- •Структура программыNirs9
- •Использование классаImgPreProcessing
- •Заключение
- •Список литературы:
- •Глоссарий:
Загрузка изображения
Для загрузки изображения и последующей работы с ним в классе ImgPreProcessing, предоставляемого разработанной библиотекой, служит конструктор с параметром (параметр - путь к файлу). При создании нового объекта класса с помощью конструктора, заполняются его поляimg,dst,img_hsvиdst_hsv. Вimgиimg_hsv заносится загружаемое изображение в цветовых моделяхRGBиHSV. Соответственно, поляdstиdst_hsvизначально содержат копии оригинальных изображений.
Линейное усреднение пикселей по соседним
Для выполнения линейного усреднения пикселей по соседним (т.н. "сглаживание", "размытие") предназначена функция Blur.
Определение функции:
void Blur(int appSize = 3);
appSize – размер матрицы свертки фильтра. Целое, неотрицательное, нечетное число (1, 3, 5, …). Параметр по умолчанию: 3.
Фильтрация выполняется обходом изображения сканирующим окном размера appSize x appSize. Каждый пиксель на выходе является средним арифметическим пикселей в области.
Рисунок
9. Исходное изображение. Рисунок
10. Результат применения функции Blur(19)

Медианная фильтрация
Для выполнения медианной фильтрации изображения предназначена функция Median.
Определение функции:
void Median(int appSize = 3);
appSize – размер матрицы свертки фильтра. Целое, неотрицательное, нечетное число (1, 3, 5, …). Параметр по умолчанию: 3.
Фильтрация выполняется обходом изображения сканирующим окном размера appSize x appSize. Каждый пиксель на выходе является медианой пикселей в этой области.
Рисунок
11. Исходное изображение. Рисунок
12. Результат применения функции
Median(11).

Размытие по Гауссу
Для применения фильтра Гаусса к изображению предназначена функция Gaussian.
Определение функции:
void Gaussian(int appSize = 3);
appSize – размер матрицы свертки фильтра. Целое, неотрицательное, нечетное число (1, 3, 5, …). Параметр по умолчанию: 3.
Фильтрация выполняется обходом изображения сканирующим окном размера appSize x appSize. Значение центрального пикселя в области становится средне взвешенным на основе нормального распределения, остальных – в зависимости от веса (Гауссова значения).
Рисунок
13. Исходное изображение. Рисунок
14. Результат применения функции
Gaussian(9).


Математическая морфология
Операции математической морфологии представлены базовыми операциями "Наращивание" (функция Dilation) и "Эрозия" (функцияErosion). Кроме того, были реализованы производные операции: "Замыкание" (функцияMathClosing) и "Размыкание" (функцияMathOpening), представляющие собой комбинации базовых.
Определение функций:
void Dilation(int appSize = 3);
void Erosion(int appSize = 3);
void MathOpening (int appSize = 3);
void MathClosing(int appSize = 3);
appSize – размер структурного элемента фильтра. Целое, неотрицательное, нечетное число (1, 3, 5, …). Параметр по умолчанию: 3.
В ходе операций осуществляется сканирование изображения структурным элементом квадратной формы размера appSize x appSize. Способ преобразования пикселей, попавших в область, зависит от выбранной операции.
При выполнении наращивания, каждый пиксель, находящийся под начальной точкой структурного элемента, заменяется на тот, который имеет максимальное значение яркости в своей области.
При выполнении эрозии, каждый пиксель, находящийся под начальной точкой структурного элемента, заменяется на тот, который имеет минимальное значение яркости в своей области.
Операция размыкания представляет собой последовательное выполнение эрозии и наращивания, операция замыкания – наращивания и эрозии.
Рисунок
15. Исходное изображение. Рисунок
16. Результат применения функции
Dilation(15).

Рисунок
17. Результат применения функции
Erosion(15). Рисунок
18. Результат применения функции
MathOpening(15).


Рисунок
20. Результат применения функции
MathClosing(15).
