数字图像处理实验源代码中值滤波,灰度拉伸,图像平滑模板...


用C语言实现数字图像处理中的多种操作:如实现图像的灰度变换,图像的中值滤波,线性变换,缩放,平移,旋转,灰度直方图,开运算,闭运算,,膨胀/腐蚀元素的设定等等功能。
资源截图
代码片段和文件信息
// cdib.cpp
// new version for WIN32
#include “stdafx.h“
#include “cdib.h“

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

IMPLEMENT_SERIAL(CDib Cobject 0);

CDib::CDib()
{
m_hFile = NULL;
m_hBitmap = NULL;
m_hPalette = NULL;
m_nBmihAlloc = m_nImageAlloc = noAlloc;
Empty();
}

CDib::CDib(CSize size int nBitCount)
{
m_hFile = NULL;
m_hBitmap = NULL;
m_hPalette = NULL;
m_nBmihAlloc = m_nImageAlloc = noAlloc;
Empty();
ComputePaletteSize(nBitCount);
m_lpBMIH = (LPBITMAPINFOHEADER) new 
char[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries];
m_nBmihAlloc = crtAlloc;
m_lpBMIH->biSize = sizeof(BITMAPINFOHEADER);
m_lpBMIH->biWidth = size.cx;
m_lpBMIH->biHeight = size.cy;
m_lpBMIH->biPlanes = 1;
m_lpBMIH->biBitCount = nBitCount;
m_lpBMIH->biCompression = BI_RGB;
m_lpBMIH->biSizeImage = 0;
m_lpBMIH->biXPelsPerMeter = 0;
m_lpBMIH->biYPelsPerMeter = 0;
m_lpBMIH->biClrUsed = m_nColorTableEntries;
m_lpBMIH->biClrImportant = m_nColorTableEntries;
ComputeMetrics();
memset(m_lpvColorTable 0 sizeof(RGBQUAD) * m_nColorTableEntries);
m_lpImage = NULL;  // no data yet
}

CDib::~CDib()
{
Empty();
}

CSize CDib::GetDimensions()
{
if(m_lpBMIH == NULL) return CSize(0 0);
return CSize((int) m_lpBMIH->biWidth (int) m_lpBMIH->biHeight);
}

BOOL CDib::AttachMapFile(const char* strPathname BOOL bShare) // for reading
{
// if we open the same file twice Windows treats it as 2 separate files
// doesn‘t work with rare BMP files where # palette entries > biClrUsed
HANDLE hFile = ::CreateFile(strPathname GENERIC_WRITE | GENERIC_READ
bShare ? FILE_SHARE_READ : 0
NULL OPEN_EXISTING FILE_ATTRIBUTE_NORMAL NULL);
ASSERT(hFile != INVALID_HANDLE_VALUE);
DWORD dwFileSize = ::GetFileSize(hFile NULL);
HANDLE hMap = ::CreateFileMapping(hFile NULL PAGE_READWRITE 0 0 NULL);
DWORD dwErr = ::GetLastError();

if(hMap == NULL)
{
AfxMessageBox(“Empty bitmap file“);
return FALSE;
}

LPVOID lpvFile = ::MapViewOfFile(hMap FILE_MAP_WRITE 0 0 0); // map whole file
ASSERT(lpvFile != NULL);

if(((LPBITMAPFILEHEADER) lpvFile)->bfType != 0x4d42)
{
AfxMessageBox(“Invalid bitmap file“);
DetachMapFile();
return FALSE;
}

AttachMemory((LPBYTE) lpvFile + sizeof(BITMAPFILEHEADER));
m_lpvFile = lpvFile;
m_hFile = hFile;
m_hMap = hMap;
return TRUE;
}

BOOL CDib::CopyToMapFile(const char* strPathname)
{
// copies DIB to a new file releases prior pointers
// if you previously used CreateSection the HBITMAP will be NULL (and unusable)
BITMAPFILEHEADER bmfh;
bmfh.bfType = 0x4d42;  // ‘BM‘
bmfh.bfSize = m_dwSizeImage + sizeof(BITMAPINFOHEADER) +
sizeof(RGBQUAD) * m_nColorTableEntries + sizeof(BITMAPFILEHEADER);
// meaning of bfSize open to interpretation
bmfh.bfReserved1 = bmfh.bfReserved2 = 0;
bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      16334  2010-04-02 23:01  VC-DIP-源代码源代码cdib.cpp

     文件       1906  2010-04-02 23:01  VC-DIP-源代码源代码cdib.h

     文件       3159  2010-04-02 23:01  VC-DIP-源代码源代码cDlgMorphClose.cpp

     文件       1675  2010-04-02 23:01  VC-DIP-源代码源代码cDlgMorphClose.h

     文件       3200  2010-04-02 23:01  VC-DIP-源代码源代码cDlgMorphDilation.cpp

     文件       1708  2010-04-02 23:01  VC-DIP-源代码源代码cDlgMorphDilation.h

     文件       3187  2010-04-02 23:01  VC-DIP-源代码源代码cDlgMorphErosion.cpp

     文件       1697  2010-04-02 23:01  VC-DIP-源代码源代码cDlgMorphErosion.h

     文件       3142  2010-04-02 23:01  VC-DIP-源代码源代码cDlgMorphOpen.cpp

     文件       1664  2010-04-02 23:01  VC-DIP-源代码源代码cDlgMorphOpen.h

     文件      51304  2010-07-02 20:58  VC-DIP-源代码源代码ch1_1.aps

     文件      18056  2010-07-02 21:01  VC-DIP-源代码源代码ch1_1.clw

     文件       4307  2010-04-02 23:01  VC-DIP-源代码源代码ch1_1.cpp

     文件       8572  2010-04-02 23:01  VC-DIP-源代码源代码ch1_1.dsp

     文件        535  2010-04-02 23:01  VC-DIP-源代码源代码ch1_1.dsw

     文件       1345  2010-04-02 23:01  VC-DIP-源代码源代码ch1_1.h

     文件     164864  2010-07-02 21:01  VC-DIP-源代码源代码ch1_1.ncb

     文件     126976  2010-07-02 21:01  VC-DIP-源代码源代码ch1_1.opt

     文件       6121  2010-07-02 20:17  VC-DIP-源代码源代码ch1_1.plg

     文件      43164  2010-04-02 23:01  VC-DIP-源代码源代码ch1_1.rc

     文件      41641  2010-04-02 23:01  VC-DIP-源代码源代码ch1_1.rc.bak

     文件        875  2010-04-02 23:01  VC-DIP-源代码源代码ch1_1.sln

     文件      22310  2010-04-02 23:01  VC-DIP-源代码源代码ch1_1.vcproj

     文件       1427  2010-04-02 23:01  VC-DIP-源代码源代码ch1_1.vcproj.2220FA2565B34DB.Bob Hu.user

     文件       7742  2010-04-02 23:01  VC-DIP-源代码源代码ch1_1Doc.cpp

     文件       2065  2010-04-02 23:01  VC-DIP-源代码源代码ch1_1Doc.h

     文件      95792  2010-04-02 23:01  VC-DIP-源代码源代码ch1_1View.cpp

     文件       4079  2010-04-02 23:01  VC-DIP-源代码源代码ch1_1View.h

     文件       1879  2010-04-02 23:02  VC-DIP-源代码源代码ChildFrm.cpp

     文件       1451  2010-04-02 23:02  VC-DIP-源代码源代码ChildFrm.h

............此处省略188个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)