资源简介
KL变换可以实现图像特征空间的运动,从而达到缩减数据量的目的,等等,支持位图,可随意修改波段数量
代码附带了说明文档,有图有真相

代码片段和文件信息
// 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
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 16440 2010-08-21 08:52 CDib.cpp
文件 1924 2010-12-05 12:39 CDib.h
文件 240 2010-12-02 14:01 KL2.clw
文件 14524 2010-12-05 23:03 KL2.cpp
文件 4416 2010-12-05 11:30 KL2.dsp
文件 531 2010-12-02 14:01 KL2.dsw
文件 317 2010-12-02 14:01 KL2.h
文件 1451 2010-12-05 14:17 KL2.rc
文件 172245 2010-12-09 09:30 K-L变换实验报告.docx
文件 1584 2010-12-02 14:01 ReadMe.txt
文件 450 2010-12-05 14:17 resource.h
文件 290 2010-12-02 14:01 StdAfx.cpp
文件 1145 2010-12-02 23:43 StdAfx.h
----------- --------- ---------- ----- ----
215557 13
- 上一篇:计算图像之间的偏差指数
- 下一篇:max4.0发布接口.rar
相关资源
- 遥感图像几何校正模型探讨
- 印度泰米尔纳德邦Noyyal流域利用GIS和
- 遥感技术在地质灾害中的应用
- 遥感原理与应用.rar
- SPOT-5影像在安徽省矿山地质环境遥感
- 浅析遥感图像解译在矿区公路建设中
- img格式遥感图像读取代码
- IDL+ENVI开发多光谱遥感图像DN值求辐亮
- 深度学习在遥感中的应用综述
- 论文研究 - 遥感与GIS结合的卡拉巴尔
- 青藏高原天然气水合物遥感探测研究
- 基于光谱指数的植被含水率遥感反演
- 基于遥感与GIS的石羊河流域生态环境
- 城市卫星遥感图像融合处理质量评价
- 基于模拟多光谱遥感影像的大气校正
- 微波遥感课程报告
- 图像分割方法在遥感图像分析中的应
- ENVI去云补丁Haze_tool文件及其使用说明
- 论文研究-基于Harris角点和SURF特征的遥
- 遥感影像几何纠正程序
- 基于遥感与GIS的湖北省土地利用_覆被
- GOCI数据产品算法说明
- 基于神经网路的遥感图像分类
- 遥感地学分析_陈述彭等编著_
- 基于稳定夜间灯光遥感数据的城市群
- 遥感图像获取与分析.pdf
- 《遥感应用分析原理与方法》
- UC Merced_ LandUse数据集
- 基于deeplabv3+的遥感农作物语义分割
- 灰度共生矩阵下的遥感图像分类处理
评论
共有 条评论