48629 (588583), страница 4

Файл №588583 48629 (Разработка программного обеспечения для фильтрации растровых изображений) 4 страница48629 (588583) страница 42016-07-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

// Присвоили пикселу новое значение

if(*(pDPix+c)+d <0)

*(pDPix+c)=0;

else

if(*(pDPix+c)+d > 255)

*(pDPix+c)=255;

else

*(pDPix+c)+=d;}

return TRUE; }

4. ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ

Запуск программы осуществляется при открытии файла BMViewer.exe. На экране появляется окно, представленное на рисунке 4.1.

Рисунок 4.1 – Главное окно программы

Выбрав в меню Файл/Открыть… пльзователь выбирает файл, который следует открыть. Одновременно может быть открыто несколько файлов. С помощью пункта меню Файл/Сохранить сохраняется текущий вид изображения. Пункт меню Файл/Сохранить… позволяет сохранить текущий вид изображения под новым именем.

Пункты меню Вид/Масштаб In, Масштаб Out позволяют увеличивать/уменьшать масштаб изображения (Рисунок 4.2).

Рисунок 4.2 – Масштабирование изображения.

Пункты меню Правка/… позволяют корректировать открытое изображение при помощи фильтров: Яркость/Контраст (Brightness/Contrast), Резкость (Sharp), Размытие (Blur), Инверсия (Inverse) представлены на рис.4.3.

Рисунок 4.3 –Пункты меню Правка

Применение фильтра Размытие оказывает эффект сглаживания деталей изображения. Фильтр целесообразно использовать для повышения качества изображения низкого разрешения. Границы пикселов становятся менее чёткими, сглаживается «шум», что зрительно улучшает качество изображения. Результат применения фильтра представлен на рисунке 4.4.

Фильтр Резкость целесообразно применять при работе с изображением, в котором присутствует большое количество мелких повторяющихся деталей не низкого качества: например, рисунок на ткани или шерсть животных. Применение в этих случаях фильтра Резкость даёт нам в результате изображение, наиболее приближённое к оригиналу. Фильтр Резкость зачастую применяют в рекламной полиграфии для преувеличенного выделения отдельных деталей изображения, на которых следует сделать акцент. Результат применения фильтра представлен на рисунке 4.5.

Фильтр Яркость/Контраст - наиболее часто применяется для цветокоррекции слишком затемнённых изображений. Сначала следует увеличить яркость изображения, затем повысить контрастность. Как правило, контрастность в этом случае следует увеличить немного меньше, чем яркость. Результат применения фильтра представлен на рисунке 4.6.

Фильтр Инверсия инвертирует цвета изображения, что даёт явно заметный, яркий результат. Этот эффект можно использовать для любителей креативного, гипертрофированно яркого дизайна. Применение фильтра представлено на рисунке 4.7.

Рисунок 4.4 – результат применения фильтра Размытие

Рисунок 4.5 – результат применения фильтра Резкость (с масштабом)

Рисунок 4.6 – результат применения фильтра Яркость/Контраст

Рисунок 4.7 – результат применения фильтра Инверсия

ЗАКЛЮЧЕНИЕ

В ходе выполнения данного дипломного проекта было разработано программное обеспечение для открытия и фильтрации растровых изображений при помощи графических фильтров, основанных на пространственных и точечных преобразованиях.

Систематизированы и закреплены практические навыки использования ЭВМ, программного обеспечения, существующих графических редакторов, работающих с растровой графикой, а также теоретические знания по курсу “Технология программирования гибких компьютеризированных систем” .

ПЕРЕЧЕНЬ ССЫЛОК

  1. Поляков А.Ю., Брусенцев В.А. Методы и алгоритмы компьютерной графики в примерах на Visual C++, 2-е изд., перераб. и доп. – СПб.: БХВ-Петербург, 2003. – 560 с.

  2. Мюррей Д., Райпер У. Ван. Энциклопедия форматов графических файлов/пер. с англ. – К.: BHV, 1997. – 672 с.

  3. Холзнер С. Visual C++ 6: учебный курс – СПб: Питер, 2001. – 576 с.

  4. Шилдт Г. Справочник программиста по С/С++.: Пер. с англ. – М.: Издательский дом «Вильямс», 2001. – 448 с.

  5. Круглински Д., Уингоу С., Шеферд Дж. Программирование на Microsoft Visual C++ 6.0 для профессионалов/Пер. с англ. - СПб: Питер; М.:Издательско-торговый дом "Русская Редакция", 2003. - 864 с.

  6. Глушаков С.В., Коваль А.В., Черепнин С.А. Программирование на Visual C++ 6.0. – Харьков: Фолио, 2002.- 726 с.

ПРИЛОЖЕНИЕ

Листсинг программы

// BMDoc.cpp : implementation of the CBMDoc class

//

#include "stdafx.h"

#include "BMViewer.h"

#include "BMDoc.h"

#include "HistDlg.h"

#include "BrightContDlg.h"

#include "DeNoiseDlg.h"

#include "BMView.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CBMDoc

IMPLEMENT_DYNCREATE(CBMDoc, CDocument)

BEGIN_MESSAGE_MAP(CBMDoc, CDocument)

//{{AFX_MSG_MAP(CBMDoc)

ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)

ON_COMMAND(ID_EDIT_BRIGHTNESSANDCONTRAST, OnEditBrightnessandcontrast)

ON_COMMAND(ID_EDIT_INVERTCOLORS, OnEditInvertcolors)

ON_COMMAND(ID_EDIT_BLUR, OnEditBlur)

ON_COMMAND(ID_EDIT_SHARP, OnEditSharp)

ON_UPDATE_COMMAND_UI(ID_EDIT_BLUR, OnUpdateEditBlur)

ON_UPDATE_COMMAND_UI(ID_EDIT_SHARP, OnUpdateEditSharp)

ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo)

ON_UPDATE_COMMAND_UI(ID_EDIT_BRIGHTNESSANDCONTRAST, OnUpdateEditBrightnessandcontrast)

ON_UPDATE_COMMAND_UI(ID_EDIT_INVERTCOLORS, OnUpdateEditInvertcolors)

ON_COMMAND(ID_EDIT_STOP, OnEditStop)

ON_UPDATE_COMMAND_UI(ID_EDIT_STOP, OnUpdateEditStop)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CBMDoc construction/destruction

CBMDoc::CBMDoc():m_EventDoTransform(FALSE, TRUE)

{

// TODO: add one-time construction code here

m_pCurBM=NULL;

m_bEditable=FALSE;

m_pCurFilter=NULL;

}

CBMDoc::~CBMDoc()

{

}

BOOL CBMDoc::OnNewDocument()

{

if (!CDocument::OnNewDocument())

return FALSE;

// TODO: add reinitialization code here

// (SDI documents will reuse this document)

return TRUE;

}

// Адрес пикселя

pCurPix=m_pData+y*DataStrLength+x*3;

// Яркость рассчитывается как 0.3*Red+0.59*Green+0.11*Blue,

// но пиксельные данные хранятся в файле BMP, в порядке BGR

Brightness=(BYTE)((0.11*(*pCurPix) +

0.59*(*(pCurPix+1))+

0.3*(*(pCurPix+2)))*Range/256);

pHist[Brightness]+=1;

}

return TRUE;

};

// stdafx.cpp : source file that includes just the standard includes

//BMViewer.pch will be the pre-compiled header

//stdafx.obj will contain the pre-compiled type information

#include "stdafx.h"

// BMDoc.h : interface of the CBMDoc class

//

/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_BMDOC_H__0CC04D31_A879_4674_AAD5_292699AE7BA7__INCLUDED_)

#define AFX_BMDOC_H__0CC04D31_A879_4674_AAD5_292699AE7BA7__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

#include

#include "Raster.h"

#include "Filter.h"

#define UM_STARTTRANSFORMWM_USER+0x8000

#define UM_ENDOFTRANSFORMUM_STARTTRANSFORM+1

class CBMDoc : public CDocument

{

protected: // create from serialization only

CBMDoc();

DECLARE_DYNCREATE(CBMDoc)

// Attributes

public:

// Флаги

BOOLm_bEditable;// можем ли редактировать данные

CEventm_EventDoTransform; // событие - выполняется преобразование

// Статистика

LONGm_lExecutedPercent;

// Данные

CRaster m_BM[2];// два буфера для изображений

CRaster *m_pCurBM;// указатель на активный буфер

//Фильтры

CFilter*m_pCurFilter;

CBrightCont m_BrightContFilter;

CInvertColors m_InvertColorsFilter;

CBlurm_BlurFilter;

CSharpm_SharpFilter;

// Operations

public:

CSize GetCurrentBMSize();

//Возвращает номер активного буфера

intGetNCurrentBM();

//Возвращает указатель на текущую картинку

CRaster* GetCurrentBMPtr();

//Возвращает указатель на буфер

CRaster* GetBufferBMPtr();

//Поменять текущее изображение и буффер местами

void SwapBM();

//Нарисовать текущее изображение

void DrawCurrent();

// Создает буфер заданного размера

// (при вызове без аргументов размер равен текущей картинке)

// совместимый с текущей картинкой

BOOL CreateCompatibleBuffer(LONG width=0, LONG height=0);

//Запускает поток преобразования

void Transform();

protected:

//Функция потока преобразования

static UINT ThreadProc(LPVOID pv);

//Цикл преобразования с использованием активного фильтра

void TransformLoop();

//Посылает сообщение всем окнам

void InformAllViews(UINT msg, WPARAM wPar=0, LPARAM lPar=0);

public:

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CBMDoc)

public:

virtual BOOL OnNewDocument();

virtual void Serialize(CArchive& ar);

virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);

virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);

//}}AFX_VIRTUAL

// Implementation

public:

void Onio();

virtual ~CBMDoc();

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const;

#endif

protected:

// Generated message map functions

protected:

//{{AFX_MSG(CBMDoc)

afx_msg void OnEditUndo();

afx_msg void OnEditBrightnessandcontrast();

afx_msg void OnEditInvertcolors();

afx_msg void OnEditBlur();

afx_msg void OnEditSharp();

afx_msg void OnUpdateEditBlur(CCmdUI* pCmdUI);

afx_msg void OnUpdateEditSharp(CCmdUI* pCmdUI);

afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);

afx_msg void OnUpdateEditBrightnessandcontrast(CCmdUI* pCmdUI);

afx_msg void OnUpdateEditInvertcolors(CCmdUI* pCmdUI);

afx_msg void OnEditStop();

afx_msg void OnUpdateEditStop(CCmdUI* pCmdUI);

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

/////////////////////////////////////////////////////////////////////////////

Характеристики

Тип файла
Документ
Размер
11,69 Mb
Учебное заведение
Неизвестно

Список файлов ВКР

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6525
Авторов
на СтудИзбе
301
Средний доход
с одного платного файла
Обучение Подробнее