Телевизионный алгоритм изменения контрастности
Автор: John Step • Январь 5, 2019 • Лабораторная работа • 3,369 Слов (14 Страниц) • 622 Просмотры
Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение
Высшего образования
"Ярославский государственный технический университет"
Кафедра "Информационные системы и технологии"
Отчет защищен
с оценкой ________
Преподаватель
______
« » 2017
ТЕЛЕВИЗИОННЫЙ АЛГОРИТМ
ИЗМЕНЕНИЯ КОНТРАСТНОСТИ
Отчет о лабораторной работе
по курсу "Технология программирования"
ЯГТУ 09.03.04-001 ЛР
Отчет выполнил
Студент гр.
______
«25» ноября 2017 г.
2017
Задание: разработать программу на языке С# с использованием WindowsForms, реализующую телевизионный алгоритм изменения контраста. Программа должна реализовывать проход по строкам в отдельных потоках с помощью делегатов.
Используемые алгоритмы:
Для открытия изображения создается объект openFileName класса OpenFileName, который вызывает диалоговое окно выбора файла. При нажатии на кнопку «Открыть», в переменную fn записывается путь к файлу. Изображение открывается в созданных объектах main и rez класса Bitmap.
Для сохранения измененного изображения создается объект saveFileDialog класса SaveFileDialog. Вызывается диалоговое окно и при нажатии на кнопку «Сохранить», изображение сохраняется в выбранную директорию при помощи метода .Save у pictureBox’а.
Для изменения контраста создается метод суммирования яркости по строке на уровне класса. В параметрах указана ссылка на Bitmap и количество строк в изображении. Полученная сумма делится на количество строк.
На основе метода создается делегат с такими же параметрами и запускается по циклу для каждой строки методом BeginInvoke. И так же запускается цикл завершения потока EndEnvoke. Полученный результат записывается в массив и находится средняя яркость изображения.
Так же, создается метод, который вычисляет и устанавливает новую яркость изображения. В параметрах указана ссылка на Bitmap, номер строки и коэффициент яркости. По циклу находятся значения r, g, b пикселя и по телевизионному алгоритму вычисляется новая яркость каждого из значений и записывается в пиксель. Полученное изображение помещается в pictureBox.
Инструкция:
- Для открытия изображения нажмите кнопку «Файл» -> «Открыть». Появится диалоговое окно, в котором вы можете выбрать нужное изображение.
- Для изменения контраста нажмите на кнопки «+» и «-» для увеличения и уменьшения соответственно.
- Чтобы сохранить изображение нажмите кнопку «Файл» -> «Сохранить» и выберите директорию для сохранения.
- Восстановить исходное изображение можно нажав кнопку «Восстановить».
- Удалить изображение можно нажав кнопку «Очистить»
- Закрыть приложение можно нажав кнопку «Файл» -> «Выход».
[pic 1]
[pic 2]
Рисунок 1 – Результат работы приложения при увеличении контраста изображения
[pic 3]
[pic 4]
Рисунок 2 – Результат работы приложения при уменьшении контраста изображения
Код программы:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
string filename ="";
...