Отчет по лабораторной работе №3

Министерство образования и науки РФ

Северо-Кавказский Горно-металлургический

институт

(Государственный Технологический Университет)

 

Факультет: Информационных технологий

Кафедра: Автоматизированной обработки информации

 

Отчет по лабораторной работе №3

Выполнила:: Студентка группы ИВб 11-2

Глотова А. В.

Проверила: Кокоева Диана Шалваевна

Владикавказ 2014 г.


СОДЕРЖАНИЕ

 

Процесс работы программы.. 4

Контрольные вопросы.. 8

Приложение. 9

 


Задание: Создать программу, выполняющую разбиение загруженного рисунка на компоненты цветовой модели RGB.

Процесс работы программы

 

Программа написана на языке С#.

Для создания утилиты использованы :
1. Компонент Picturebox1 и Picturebox2 для загрузки изображения и показа результата преобразований.

2. Компоненты Button, по нажатию на которые будут осуществляться заданные действия, т. е..

3. Компоненты OpenFileDialog1 и SaveFileDialog1 для организации открытия и сохранения изображения.

При запуске программы открывается форма, содержащая набор кнопок. Нажатие на «Открыть» вызывает метод Button1Click, в котором прописаны методы компонента OpenFileDialog1 по загрузке выбранного пользователем изображения из его личных папок. В качестве результата возвращается путь и имя указанной картинки.

Нажатием на кнопку, подписанную соответствующей компонентой цветовой модели RGB, мы получаем перекрашенное изображение:

Рис.1. Красный цвет

Рис.2. Зеленый цвет

Рис.3. Синий цвет

Также в лабораторной работе представлена возможность получения компонент цветовой модели CMYK с помощью смешения цветов RGB – модели:

Рис.4. Голубой цвет.

Рис.5. Розовый цвет

Рис.6. Желтый цвет

В качестве дополнения программа позволяет производить инверсию цветов:

Рис. 7. Инверсия цвета

Контрольные вопросы

1) Какие цветовые модели вам известны?

Аддитивного формирования оттенков – RGB, - и субтрактивного – CMYK.

2) Чем отличаются аддитивные цветовые модели от субтрактивных?

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

3) Что такое инверсия?

Изменение цветов на противоположные.

4) Какой метод класса Color возвращает значения полученных компонент цветовой модели RGB?

FromArgb

5) Как получить компоненту цветовой модели из массива пикселей?

GetPixel и PixelFormat

Приложение

 

 

//red

private void button11_Click(object sender, EventArgs e)

{

Bitmap Mas = new Bitmap(image);

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

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

{

Color fon=Mas.GetPixel(i,j);

Mas.SetPixel(i,j,Color.FromArgb(fon.R,0,0));

}

pictureBox2.Image = Mas;

}

//green

private void button12_Click(object sender, EventArgs e)

{

Bitmap Mas = new Bitmap(image);

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

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

{

Color fon = Mas.GetPixel(i, j);

Mas.SetPixel(i, j, Color.FromArgb(0,fon.G,0));

}

pictureBox2.Image = Mas;

}

//blue

private void button13_Click(object sender, EventArgs e)

{

Bitmap Mas = new Bitmap(image);

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

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

{

Color fon = Mas.GetPixel(i, j);

Mas.SetPixel(i, j, Color.FromArgb(0, 0,fon.B));

}

pictureBox2.Image = Mas;

}

//yellow

private void button14_Click(object sender, EventArgs e)

{

Bitmap Mas = new Bitmap(image);

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

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

{

Color fon = Mas.GetPixel(i, j);

Mas.SetPixel(i, j, Color.FromArgb(fon.R, fon.G, 0));

}

pictureBox2.Image = Mas;

}

//magenta

private void button15_Click(object sender, EventArgs e)

{

Bitmap Mas = new Bitmap(image);

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

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

{

Color fon = Mas.GetPixel(i, j);

Mas.SetPixel(i, j, Color.FromArgb(fon.R,0,fon.B));

}

pictureBox2.Image = Mas;

}

//cyan

private void button16_Click(object sender, EventArgs e)

{

Bitmap Mas = new Bitmap(image);

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

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

{

Color fon = Mas.GetPixel(i, j);

Mas.SetPixel(i, j, Color.FromArgb(0, fon.G, fon.B));

}

pictureBox2.Image = Mas;

}

//INVERSE

private void button17_Click(object sender, EventArgs e)

{

Bitmap Mas = new Bitmap(image);

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

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

{

Color fon = Mas.GetPixel(i, j);

Mas.SetPixel(i, j, Color.FromArgb(255-fon.B, 255-fon.G, 255-fon.R));

}

pictureBox2.Image = Mas;

}