список использованных источников




МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

Электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра АСОИУ

 

 

Курсовая РАБОТА

По дисциплине «Языки программирования»

Тема: разработка приложения по обработке растровых изображений

 

 

Студент гр. 5363 Федотова А.Н.  
Преподаватель Пелевин М.С  

 

 

Санкт-Петербург


ЗАДАНИЕ

На курсовую работу

Студент Федотова А.Н.
Группа 5363
Тема работы: Наложение фильтра на растровое изображение  
Исходные данные: Изображение формата bmp
 
Предполагаемый объем пояснительной записки: 10 страниц.
Дата выдачи задания: 01.09.2015
Дата сдачи курсовой работы: 26.12.2015
Дата защиты курсовой работы: 26.12.2015
Студент Федотова А.Н.  
Преподаватель Пелевин М.С  

Аннотация

Целью курсовой работы является создание программы (фильтра), обрабатывающей растровые изображения. В качестве программного средства используется компилятор MinGW и Dev-C++. По завершении работы фильтра получается изменённое по выбранному параметру изображение.

 


содержание

 

  Введение  
1. Считывание информации об изображении  
1.2. Считывание данных  
2. Наложение фильтра на изображение:  
  · Инверсия · Оттенки серого  
3.   Заключение  
  Список использованных источников  

Введение

Цель работы: написать программу, которая обработает изображение формата bmp по заданным программой характеристикам.

Задачи:

1. Считать в программу информацию об исходном изображении;

2. Применить к матрице пикселей алгоритм, необходимый для наложения фотофильтра на изображение;

3. Создать необходимое изображение.

Методы решения задач:

1. Для считывания информации о входном изображении используются структура 24 пиксельного bmp изображения, функция fread;

2. Для создания фильтра используются матрица свертки, о которой будет сказано позже, а также различные методы работы с пикселями изображения;

3. Для создания необходимого изображения используется функция записи в файл fwrite.


Считывание Информации оБ Изображении

Структура bmp изображения

Для считывания информации из bmp-файла используется алгоритм, описанный в main.h:

#pragma pack(push)

#pragma pack(1)

struct BITMAPFILEHEADER

{

unsigned short bfType;

unsigned long bfSize;

unsigned short bfReserved1;

unsigned short bfReserved2;

unsigned long bfOffBits;

};

struct BITMAPINFOHEADER

{

unsigned long biSize;

unsigned long biWidth;

unsigned long biHeight;

unsigned short biPlanes;

unsigned short biBitCount;

unsigned long biCompression;

unsigned long biSizeImage;

long biXPelsPerMeter;

long biYPelsPerMeter;

unsigned long biClrUsed;

unsigned long biClrImportant;

};

struct BGR

{

unsigned char rgbBlue;

unsigned char rgbGreen;

unsigned char rgbRed;

};

#pragma pack(pop)

Считывание данных.

Для считывания данных используется функция fread, позволяющая считать данные из изображения и записать их в программу

BITMAPFILEHEADER bmph;

BITMAPINFOHEADER bmih;

fread(&bmph, sizeof(BITMAPFILEHEADER),1,input);

fread(&bmih, sizeof(BITMAPINFOHEADER),1,input);

fseek(input, bmph.bfOffBits, SEEK_SET);

BGR MatrixOfInput[bmih.biHeight+1][bmih.biWidth];

for (int i=0; i<bmih.biHeight; i++) {

for (int j=0; j<bmih.biWidth; j++) fread(&MatrixOfInput[i][j], sizeof(BGR), 1, input);}

fwrite(&bmph, sizeof(bmph),1,output);

fwrite(&bmih, sizeof(bmih),1,output);

fseek(output, bmph.bfOffBits, SEEK_SET);

1. Создание переменной типа BITMAPFILEHEADER, строение которого описано в структуре bmp формата;

2. Считывание в переменную bmph типа BITMAPFILEHEADER заголовка и информацией о файле;

3. Перенос курсора на начало пиксельной матрицы;

4. Создание массива типа BGR с размерами, равными высоте и ширине изображения;

5. Считывание пикселей изображения в созданную матрицу;

6. Запись данных заголовка в новое изображение.


Наложение фильтра на изображение

Инверсия

for (int i=0; i<=bmih.biHeight; i++){ //Inversia

for (int j=0; j<bmih.biWidth; j++) {

fputc((255 - MatrixOfInput[i][j].rgbBlue), output);

fputc((255 - MatrixOfInput[i][j].rgbGreen), output);

fputc((255 - MatrixOfInput[i][j].rgbRed), output);

}

}

Здесь, с помощью функции fputc осуществляется запись противоположных цветов в изображение

Оттенки серого

for (int i=0; i<=bmih.biHeight; i++){ //Sepia

for (int j=0; j<bmih.biWidth; j++) {

fputc((int((MatrixOfInput[i][j].rgbBlue+MatrixOfInput[i][j].rgbGreen+MatrixOfInput[i][j].rgbRed)/3)),output);

fputc((int((MatrixOfInput[i][j].rgbBlue+MatrixOfInput[i][j].rgbGreen+MatrixOfInput[i][j].rgbRed)/3)),output);

fputc((int((MatrixOfInput[i][j].rgbBlue+MatrixOfInput[i][j].rgbGreen+MatrixOfInput[i][j].rgbRed)/3)),output);

}

}

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

 


3. заключение

В ходе курсовой работы было произведено ознакомление со структурами растровых изображений.

Исходя из полученного результата, можно сказать, что различные способы преобразования матричных изображений bmp формата достаточно эффективны. Эти результаты можно улучшить, используя более результативные алгоритмы и различные библиотеки, предназначенные для работы с изображениями.

 

 


список использованных источников

 

· https://ru.wikipedia.org/wiki/

· https://ziggi.org/chtenie-bmp-v-c-versiya-2/

· https://code-live.ru/post/cpp-input-output/

· https://markoutte.me/

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-06-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: