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

Общая информация о графическом формате. Описание формата Microsoft Windows Bitmap. Структура файла DDВ исходного формата ВМР. Преобразования графических файлов. Просмотр и редактирование растровых изображений. Создание многодокументного приложения.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 06.06.2010
Размер файла 1,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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()

};

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

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_BMDOC_H__0CC04D31_A879_4674_AAD5_292699AE7BA7__INCLUDED_)

// BMView.h : interface of the CBMView class

//

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

#if !defined(AFX_BMVIEW_H__A58B1237_DC72_4389_BA43_93CC54F0F5EA__INCLUDED_)

#define AFX_BMVIEW_H__A58B1237_DC72_4389_BA43_93CC54F0F5EA__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

class CBMView : public CScrollView

{

// Идентификатор таймера

UINT m_nTimer;

// Заголовок окна

CString m_strOrgTitle;

//Виртуальный экран

CBitmap m_VirtScreenBitmap;// растр

CDCm_VirtScreenDC;// контекст

// Масштаб вывода картинки

doublem_dScale;

intm_nStretchMode;

protected: // create from serialization only

CBMView();

DECLARE_DYNCREATE(CBMView)

// Attributes

public:

CBMDoc* GetDocument();

// Operations

public:

BOOL UpdateVirtualScreen();

void OnStartTimer();

void OnStopTimer();

afx_msg LONG OnStartTransform(UINT wParam, LONG lParam);

afx_msg LONG OnEndTransform(UINT wParam, LONG lParam);

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CBMView)

public:

virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

virtual void OnInitialUpdate();

protected:

virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);

virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);

virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);

virtual void OnDraw(CDC* pDC);

virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);

virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);

//}}AFX_VIRTUAL

// Implementation

public:

virtual ~CBMView();

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const;

#endif

protected:

// Generated message map functions

protected:

//{{AFX_MSG(CBMView)

afx_msg BOOL OnEraseBkgnd(CDC* pDC);

afx_msg void OnTimer(UINT nIDEvent);

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

afx_msg void OnViewZoomin();

afx_msg void OnViewZoomout();

afx_msg void OnViewStretchhalftone();

afx_msg void OnUpdateViewStretchhalftone(CCmdUI* pCmdUI);

afx_msg void OnViewStretchcoloroncolor();

afx_msg void OnUpdateViewStretchcoloroncolor(CCmdUI* pCmdUI);

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

#ifndef _DEBUG // debug version in BMView.cpp

inline CBMDoc* CBMView::GetDocument()

{ return (CBMDoc*)m_pDocument; }

#endif

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

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_BMVIEW_H__A58B1237_DC72_4389_BA43_93CC54F0F5EA__INCLUDED_)

// BMViewer.h : main header file for the BMVIEWER application

//

#if !defined(AFX_BMVIEWER_H__854A9B8C_6BD4_44CA_B4E4_F00CEF40C1E7__INCLUDED_)

#define AFX_BMVIEWER_H__854A9B8C_6BD4_44CA_B4E4_F00CEF40C1E7__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

#ifndef __AFXWIN_H__

#error include 'stdafx.h' before including this file for PCH

#endif

#include "resource.h" // main symbols

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

// CBMApp:

// See BMViewer.cpp for the implementation of this class

//

class CBMApp : public CWinApp

{

public:

CBMApp();

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CBMApp)

public:

virtual BOOL InitInstance();

//}}AFX_VIRTUAL

// Implementation

//{{AFX_MSG(CBMApp)

afx_msg void OnAppAbout();

afx_msg void OnFileNew();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

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

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_BMVIEWER_H__854A9B8C_6BD4_44CA_B4E4_F00CEF40C1E7__INCLUDED_)

//BrightContDlg.h

#if !defined(AFX_BRIGHTCONTDLG_H__310F8D78_02DE_4055_A8DD_609EFC475802__INCLUDED_)

#define AFX_BRIGHTCONTDLG_H__310F8D78_02DE_4055_A8DD_609EFC475802__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

// BrightContDlg.h : header file

//

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

// CBrightContDlg dialog

class CBrightContDlg : public CDialog

{

// Construction

public:

CBrightContDlg(CWnd* pParent = NULL); // standard constructor

int m_iBrightnessOffset;

int m_iContrastOffset;

// Dialog Data

//{{AFX_DATA(CBrightContDlg)

enum { IDD = IDD_BRIGHT_CONT };

CSliderCtrlm_ctrlContrast;

CSliderCtrlm_ctrlBrightness;

CStringm_strBrightness;

CStringm_strContrast;

//}}AFX_DATA

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CBrightContDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

// Generated message map functions

//{{AFX_MSG(CBrightContDlg)

virtual BOOL OnInitDialog();

afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);

virtual void OnOK();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_BRIGHTCONTDLG_H__310F8D78_02DE_4055_A8DD_609EFC475802__INCLUDED_)

// ChildFrm.h : interface of the CChildFrame class

//

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

#if !defined(AFX_CHILDFRM_H__D84A743A_B4B5_4CE3_80C2_DF6B6B8A0860__INCLUDED_)

#define AFX_CHILDFRM_H__D84A743A_B4B5_4CE3_80C2_DF6B6B8A0860__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

class CChildFrame : public CMDIChildWnd

{

DECLARE_DYNCREATE(CChildFrame)

public:

CChildFrame();

// Attributes

protected:

CSplitterWnd m_wndSplitter;

public:

// Operations

public:

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CChildFrame)

public:

virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

protected:

virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);

//}}AFX_VIRTUAL

// Implementation

public:

virtual ~CChildFrame();

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const;

#endif

// Generated message map functions

protected:

//{{AFX_MSG(CChildFrame)

// NOTE - the ClassWizard will add and remove member functions here.

// DO NOT EDIT what you see in these blocks of generated code!

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

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

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_CHILDFRM_H__D84A743A_B4B5_4CE3_80C2_DF6B6B8A0860__INCLUDED_)

// Filter.h : interface of CFilter and derived classes

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

#ifndef _FILTER_INCLUDED

#define _FILTER_INCLUDED

class CRaster;

// Базовый виртуальный класс

class CFilter

{

protected:

CRaster *m_pSourceBM;

CRaster *m_pDestBM;

public:

// Устанавливает исходное и приемное изображения

void SetBuffers(CRaster *pSource, CRaster *pDest=NULL)

{m_pSourceBM=pSource;m_pDestBM=pDest;};

// Виртуальный метод преобразования пиксела

// будет переопределен в производных классах

virtual BOOL TransformPix(LONG x, LONG y){ return FALSE;};

};

// Базовый класс для точечных фильтров

class CDotFilter: public CFilter

{

protected:

// Таблицы преобразования для компонент цвета

BYTE BGRTransTable[3][256];

public:

// Метод преобразования пиксела

BOOL TransformPix(LONG x, LONG y);

};

// Яркость-контраст

class CBrightCont: public CDotFilter

{

public:

BOOL Init(int b_offset, int c_offset);

};

// Инверсия цветов

class CInvertColors: public CDotFilter

{

public:

CInvertColors();

};

// Рельеф

/*class CEmboss: public CDotFilter

{

public:

BOOL TransformPix(LONG x, LONG y);

};*/

// Пространственные (матричные) фильтры

// Базовый класс

class CMatrixFilter: public CFilter

{

protected:

int m_rangX; // размер матрицы по X и Y

int m_rangY;

const int *m_pMatrix; // указатель на матрицу

public:

// Метод преобразования пиксела

BOOL TransformPix(LONG x, LONG y);

};

class CBlur: public CMatrixFilter

{

public:

CBlur();

};

class CSharp: public CMatrixFilter

{

public:

CSharp();

BOOL TransformPix(LONG x, LONG y);

};

#endif

// MainFrm.h : interface of the CMainFrame class

//

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

#if !defined(AFX_MAINFRM_H__0E83271E_987C_45D5_8475_25E6B2754E48__INCLUDED_)

#define AFX_MAINFRM_H__0E83271E_987C_45D5_8475_25E6B2754E48__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

class CMainFrame : public CMDIFrameWnd

{

DECLARE_DYNAMIC(CMainFrame)

public:

CMainFrame();

// Attributes

public:

// Operations

Public:

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CMainFrame)

virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

//}}AFX_VIRTUAL

// Implementation

public:

virtual ~CMainFrame();

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const;

#endif

protected: // control bar embedded members

CStatusBar m_wndStatusBar;

CToolBar m_wndToolBar;

// Generated message map functions

protected:

//{{AFX_MSG(CMainFrame)

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

// NOTE - the ClassWizard will add and remove member functions here.

// DO NOT EDIT what you see in these blocks of generated code!

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

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

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MAINFRM_H__0E83271E_987C_45D5_8475_25E6B2754E48__INCLUDED_)

// Raster.h : interface of CRaster class

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

#ifndef _RASTER_INCLUDED

#define _RASTER_INCLUDED

// макрос для определения количества байт в выровненной по DWORD строки пикселов в DIB

// Width - длина строки в пикселах; BPP - бит на пиксел

#define BYTESPERLINE(Width, BPP) ((WORD)((((DWORD)(Width) * \

(DWORD)(BPP) + 31) >> 5)) << 2)

class CRaster

{

LPBITMAPINFOm_pBMI; //указатель на описание изображения

PBYTEm_pData;//указатель на начало растровых данных

public:

CRaster();

~CRaster();

void Clear(); //очистка памяти

// Возвращает

LPBITMAPINFO GetBMInfoPtr(){return m_pBMI;}//указатель на заголовок растра

RGBQUAD* GetBMColorTabPtr();//указатель на таблицу цветов

LONG GetBMWidth(); //ширину в пикселах;

LONG GetBMHeight();//высоту в пикселах;

BYTE* GetBMDataPtr(){return m_pData;};//указатель на растровые данные

BYTE* GetPixPtr(LONG x, LONG y);//указатель на пиксел

// Загружает из файла

BOOL LoadBMP(CString FileName);

// Выводит DIB на контекст pDC

// x, y - позиция левого верхнего угла области назначения

// cx, cy - размер области назначения

// x0, y0 - позиция левого верхнего угла выводимой части изображения

// cx0, cy0 - размер выводимой части изображения

// str_mode - режим масштабирования

// rop - растровая операция определяет способ наложения изображения

void DrawBitmap(CDC *pDC, LONG x=0, LONG y=0, LONG cx=0, LONG cy=0,

LONG x0=0, LONG y0=0, LONG cx0=0, LONG cy0=0, int str_mode=COLORONCOLOR, DWORD rop=SRCCOPY);

// Выводит DIB на контекст pDC с позиции (x,y) в масштабе scale

void DrawBitmap(CDC *pDC, LONG x, LONG y, double scale, int str_mode=COLORONCOLOR, DWORD rop=SRCCOPY);

// Записывает BMP в файл

BOOL SaveBMP(CString FileName);

// Создает копию

BOOL CreateCopy(CRaster *pOrg);

// Создает растр заданного размера, совместимый с параметрами BITMAPINFO

BOOL CreateCompatible(LPBITMAPINFO pBMI, LONG width=0, LONG height=0);

// Возвращает гисторамму изображения

BOOL GetHistogham(DWORD *pHist, int Range);

};

#endif

//{{NO_DEPENDENCIES}}

// Microsoft Developer Studio generated include file.

// Used by BMViewer.rc

//

#define IDD_ABOUTBOX 100

#define IDR_MAINFRAME 128

#define IDR_BMVIEWTYPE 129

#define IDD_HIST 130

#define IDD_BRIGHT_CONT 131

#define IDD_DENOISE 132

#define IDC_SLIDER_BRIGHTNESS 1001

#define IDC_STATIC_BRIGHTNESS 1002

#define IDC_SLIDER_CONTRAST 1003

#define IDC_SLIDER_HIST_B 1003

#define IDC_STATIC_CONTRAST 1004

#define IDC_SLIDER_HIST_T 1004

#define IDC_OFFSET_B_TXT 1005

#define IDC_OFFSET_T_TXT 1006

#define IDC_NOISE_SMOOTH 1008

#define IDC_NOISE_SHOW 1009

#define IDC_K 1011

#define IDC_SPIN_K 1012

#define IDC_HIST_VIEW 1014

#define ID_VIEW_HISTOGRAM 32771

#define ID_EDIT_HISTOGRAM 32772

#define ID_EDIT_BRIGHTNESSANDCONTRAST 32773

#define ID_EDIT_INVERTCOLORS 32774

#define ID_EDIT_BLUR 32775

#define ID_EDIT_SHARP 32776

#define ID_EDIT_CONTOUR 32777

#define ID_EDIT_EDITHALF 32778

#define ID_EDIT_HALF 32779

#define ID_EDIT_EMBOSS 32780

#define ID_EDIT_DENOISE 32781

#define ID_EDIT_STOP 32782

#define ID_VIEW_ZOOMIN 32792

#define ID_VIEW_ZOOMOUT 32793

#define ID_VIEW_STRETCHHALFTONE 32794

#define ID_VIEW_STRETCHCOLORONCOLOR 32795

#define ID__DFVGD 32796

// Next default values for new objects

//

#ifdef APSTUDIO_INVOKED

#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_3D_CONTROLS 1

#define _APS_NEXT_RESOURCE_VALUE 133

#define _APS_NEXT_COMMAND_VALUE 32797

#define _APS_NEXT_CONTROL_VALUE 1015

#define _APS_NEXT_SYMED_VALUE 101

#endif

#endif

// stdafx.h : include file for standard system include files,

// or project specific include files that are used frequently, but

// are changed infrequently

//

#if !defined(AFX_STDAFX_H__3471DB7C_3910_44C3_92EA_6D934D04BC94__INCLUDED_)

#define AFX_STDAFX_H__3471DB7C_3910_44C3_92EA_6D934D04BC94__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

#define VC_EXTRALEAN// Exclude rarely-used stuff from Windows headers

#include <afxwin.h> // MFC core and standard components

#include <afxext.h> // MFC extensions

#include <afxdisp.h> // MFC Automation classes

#include <afxdtctl.h>// MFC support for Internet Explorer 4 Common Controls

#ifndef _AFX_NO_AFXCMN_SUPPORT

#include <afxcmn.h>// MFC support for Windows Common Controls

#endif // _AFX_NO_AFXCMN_SUPPORT

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__3471DB7C_3910_44C3_92EA_6D934D04BC94__INCLUDED_)


Подобные документы

  • Описание математических методов представления и обработки графических изображений. Описание разработанного программного дополнения. Описание функций и их атрибутов. Представление и обработка графических изображений. Результаты тестирования программы.

    курсовая работа [1,7 M], добавлен 27.01.2015

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

    контрольная работа [22,9 K], добавлен 16.09.2010

  • Методы обработки растровых изображений (кластеризация, пороговая и интерактивная сегментация). Разработка программного модуля для системы мониторинга биосферы и дистанционного зондирования. Создание пользовательского интерфейса программного модуля.

    курсовая работа [2,2 M], добавлен 29.04.2015

  • Анализ влияния сглаживающего шума на различные категории томографических изображений. Разработка программного обеспечения для снижения помех и увеличения четкости очертаний крупных объектов. Метод рисования прямоугольников, ограничивающих все контуры.

    практическая работа [1006,7 K], добавлен 28.09.2019

  • Виды графических редакторов. Форматы файлов для хранения растровых графических изображений. Среда графического редактора. Панели инструментов и режимы работы графических редакторов. Инструменты редактирования рисунка. Изменение шрифта текста на рисунке.

    контрольная работа [246,6 K], добавлен 16.12.2010

  • Редактирование различных растровых изображений. Версии Adobe PhotoShop. Расширенная версия программы Adobe Photoshop Extended. Работа с файлами. Сложности использования PhotoShop. Простое редактирование фотографий. Разнообразие фильтров и рамок.

    контрольная работа [4,9 M], добавлен 08.01.2014

  • Реализация программы-конвертера для создания на основе передаваемых dbf файлов файла формата XML (по заданному пользователем шаблону). Создание шаблонов при помощи кода и при помощи конструктора. Проектирование архитектуры программного продукта.

    дипломная работа [1,6 M], добавлен 27.06.2013

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

    лабораторная работа [713,6 K], добавлен 26.04.2015

  • Основные типы графических режимов, условия и принципы их использования. Функции VGA и VESA BIOS. Простые форматы графических файлов, их содержание и специфика. Формат BMP для несжатого RGB-изображения. Особенности формата PCX для 256-цветов изображений.

    контрольная работа [33,7 K], добавлен 28.05.2016

  • Создание работоспособного приложения, обеспечивающего сокрытие информации произвольного размера в файле формата JPEG и доступ к уже имеющейся информации. Определение основных понятий стеганографии. Структура файла формата JPEG. Метод сокрытия данных.

    курсовая работа [57,5 K], добавлен 30.03.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.