Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСИ / АСУ_Меркулова_Обработкаизобр_ Методичка к курсовому.docx
Скачиваний:
39
Добавлен:
03.03.2016
Размер:
216.12 Кб
Скачать

Міністерство освіти і науки україни

ДОНЕЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

МЕТОДИЧНІ ВКАЗІВКИ

ДО ВИКОНАННЯ КУРСОВОЇ РОБОТИ З ДИСЦИПЛІНИ

«ОБРОБКА СИГНАЛІВ ТА ЗОБРАЖЕНЬ»

Галузь знань: 0501 «Інформатика та обчислювальна техніка»

Напрям підготовки: 6.050102 «Компютерна інженерія»

Спеціальність: „Спеціалізовані комп’ютерні системи”

Розглянуто на засіданні кафедри

«Автоматизовані системи управління»

Протокол № 2 від 9 вересня__ 2011 р.

Донецьк 2011

Методичні вказівки до курсової роботи з дисципліни "Обробка сигналів та зображень" для студентів спеціальності 6.091503 «Спеціалізовані комп'ютерні системи» (КСД). / Склали: Меркулова К.В.- Донецьк: ДНТУ, 2011. – 44 с.

Методичні вказівки містять короткі теоретичні відомості, методичні рекомендації і завдання до виконання лабораторних робіт з дисципліни «Обробка сигналів та зображень» з використанням технології MATLAB. IMAGE PROCESSING TOOLBOX.

Укладачі: доц. Меркулова К.В.

Рецензент: _________________

Відповідальний за випуск: зав. каф. АСУ Скобцов Ю.О.

Теоретический материал Яркость точки и гистограммы изображения.

Яркость точки находится по формуле, коэффициенты которой определяются свойствами человеческого зрения:

Гистограммой в данном случае называется так или иначе представленная (например, в виде столбчатой диаграммы) зависимость числа повторений того/иного значения яркости на всём изображении от этого самого значения (то есть сколько раз встречается абсолютно чёрная точка, абсолютно белая и др.). Иными словами, один столбец гистограммы показывает, сколько пикселей текущего уровня яркости присутствует на всем изображении. При этом можно рассматривать 4 гистограммы: по 3 каналам и по вычисленной яркости.

Изменения яркости и контрастности

Эти изменения можно обобщить выражением «изменение баланса изображения», так как оба понятия – и яркость, и контрастность, – схожи и относятся к сфере восприятия изображения человеком.

Повышение/снижение яркости – это, соответственно, сложение/вычитание значения каждого канала с некоторым фиксированным значением (в пределах от 0 до 255); при этом обязательно необходимо контролировать выход нового значения канала за пределы диапазона 0..255.

Коррекцию можно выполнять при помощи такой функции:

int CorrectColor(int C)

{

if (C > 255)

{

return 255;

}

else if (C < 0)

{

return 0;

}

else return C;

}

Преобразование яркости выглядит так:

//toAdd - значение, на которое необходимо увеличить яркость изображения

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

{

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

{

//Считываем уровни яркости RGB каждого пикселя

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

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

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

//Прибавляем к полученному значению фиксированный коэффициент

R = R + toAdd;

G = G + toAdd;

B = B + toAdd;

//Выполняем корректировку цвета

R = CorrectColor(R);

B = CorrectColor(B);

G = CorrectColor(G);

//Заменяем значения в пикселе

rezultImage.SetPixel(i, j, Color.FromArgb(R, G, B));

}

}

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

В этой формуле NewY – новое значение одного из каналов, K – коэффициент контрастности (K=(0…1) – снижение, K>1 – повышение контрастности), OldY – текущее значение того же канала, AveY – среднее значение того же канала по изображению (таким образом, алгоритм фактически является двухпроходовым). Обязательна всё та же коррекция нового значения при выходе его за границы 0...255.

Преобразование яркости выглядит так:

AveR = 0;

AveG = 0;

AveB = 0;

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

{

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

{

//Находим сумму цветовых каналов для всего изображения

AveR = AveR + bmp.GetPixel(i, j).R;

AveG = AveG + bmp.GetPixel(i, j).G;

AveB = AveB + bmp.GetPixel(i, j).B;

}

}

//Находим среднее значение

AveR = AveR / (bmp.Width * bmp.Height);

AveG = AveG / (bmp.Width * bmp.Height);

AveB = AveB / (bmp.Width * bmp.Height);

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

{

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

{

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

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

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

//Применяем формулу изменения контраста

//К - коэффициент преобразования

R = (int)((R - AveR) * K) + AveR;

G = (int)((G - AveG) * K) + AveG;

B = (int)((B - AveB) * K) + AveB;

R = CorrectColor(R);

G = CorrectColor(G);

B = CorrectColor(B);

rezultImage.SetPixel(i, j, Color.FromArgb(R, G, B));

}

}