Разработка программного обеспечения для фильтрации растровых изображений
Общая информация о графическом формате. Описание формата 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