?? hyperspectraldatacompressdlg.h
字號:
// HyperspectralDataCompressDlg.h : header file
//
#if !defined(AFX_HYPERSPECTRALDATACOMPRESSDLG_H__5DB6A6DC_72B2_4536_A03A_2FB674F4AF24__INCLUDED_)
#define AFX_HYPERSPECTRALDATACOMPRESSDLG_H__5DB6A6DC_72B2_4536_A03A_2FB674F4AF24__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define MAXBANDNUMBER 512//最大波段數
#define MIN_LINES_PER_BLOCK 64//每個壓縮數據塊包含圖像最小行數
#define MAX_LINES_PER_BLOCK 512//每個壓縮數據塊包含圖像最大行數
#define BSQ_AUXDATA_WIDTH 24//BSQ高光譜圖像格式數據中每個圖像行所包含的輔助數據默認寬度(以象素數為單位)
#define BFILE_AUXDATA_WIDTH 0
#define BIP_AUXDATA_WIDTH 0
#define BIL_AUXDATA_WIDTH 0
/////////////////////////////////////////////////////////////////////////////
// CHyperspectralDataCompressDlg dialog
#define WM_USER_HYPERSPECTRAL_COMPRESS_DLG (WM_USER+2)
class HyperspectralCompressThread;
class HyperspectralTestRelativeThread;
class CHyperspectralDataCompressDlg : public CDialog
{
// Construction
public:
CHyperspectralDataCompressDlg(CWnd* pParent = NULL); // standard constructor
CString lpImageFile[MAXBANDNUMBER];//純圖像方式時,單波段圖像文件名
int AllDataWidth;//連同輔助數據一起圖像行總寬度
int FileNumber;//輸入文件數(純圖像方式時就是波段數,高光譜圖像格式時是1)
int m_AllowMaxErr;//最大允許誤差
CString PredictBandList;//預測波段配置[波段號(-1是不預測,其它則為預測波段號)]
BOOL CompressComplete;//壓縮完成標志(區別于終止壓縮過程)
BOOL PureImageFormat;//純圖像格式標志
HyperspectralCompressThread *m_pCompressThread;//壓縮過程運行線程
BOOL CompressThreadRun;//壓縮過程運行標志
HyperspectralTestRelativeThread *m_pTestRelativeThread;//相關系數矩陣計算過程運行線程
BOOL TestRelativeThreadRun;//相關系數矩陣計算過程運行標志
BOOL TestRelativeComplate;//相關系數矩陣計算過程運行完成標志
double ErrMse,BitPerPixel;//均方誤差及單象素比特統計量
int AllowMaxErrBgn,AllowMaxErrEnd,AllowMaxErrStep;//用于連續誤差界下測試程序
CString Report;
BOOL AllowReport;
//預測波段更新過程
void UpdateControlList(BOOL UpdateMode);
//從字符串中獲得下一個數據項位置
int GetNextDataSeat(LPCTSTR lpAsc,LPSTR lpOne,int &Seat);
//初始化預測波段串
void InitPredictBandString();
//壓縮過程
void OkCompressProce();
//相關系數矩陣計算過程
void OkTestRelativeProce();
//計算一行圖像的均方值及均值(用于相關系數矩陣的計算)
void StatisticOneLineImage(LPBYTE lpImageLine1,//圖像行1
int BytesPerPixel,//圖像象素字節數
int OneLineWidth,//圖像行寬度
double &Mse1,//圖像行1平均平方和
double &M1);//圖像行1平均值
//計算一兩圖像行的相關函數值(用于相關系數矩陣的計算)
void StatisticOneLineTwoImage(LPBYTE lpImageLine1,//圖像行1
LPBYTE lpImageLine2,//圖像行2
int BytesPerPixel,//圖像象素字節數
int OneLineWidth,//圖像行寬度
double &Relative);//平均相關函數
CString GetCompressFileName(CString &InputFileName);//根據輸入文件名和最大允許誤差產生壓縮數據文件名
void OutString(CString str,LPCTSTR lpOutFile=NULL);
BOOL OnOffBandPredict();
// Dialog Data
//{{AFX_DATA(CHyperspectralDataCompressDlg)
enum { IDD = IDD_HYPERSPECTRALDATACOMPRESS_DIALOG };
CListCtrl m_RelativeList;
int m_AuxDataWidth;//輔助數據寬度
int m_BandNumber;//預測數
int m_BitsPerPixel;//每象素所包含的比特數
int m_BytesPerPixel;//每象素所包含的字節數
CString m_ComperssFileName;//壓縮數據文件名
CString m_CompressRateString;//壓縮比顯示
int m_ImageHeight;//圖像高度
int m_ImageWidth;//圖像寬度
CString m_InputFileName;//輸入的高光譜圖像文件名
int m_LinesPerBlock;//每個壓縮塊所含圖像行數
CString m_MaxErrString;//最大誤差顯示
CString m_NoticeString;//用于運行提示
CString m_PSNRString;//PSNR顯示
CString m_RateString;//碼率顯示
CString m_NoticeNumberString;//運行進度提示
CString m_AllowMaxErrorString;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CHyperspectralDataCompressDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CHyperspectralDataCompressDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnDestroy();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnClose();
afx_msg void OnCompressCancel();
afx_msg void OnKillfocusCompressFileName();
afx_msg void OnCompressOk();
afx_msg void OnMulbandImageFilenameFindButton();
afx_msg void OnOmisIPredictBand();
afx_msg void OnOmisIiPredictBand();
afx_msg void OnTestPredictBand();
afx_msg void OnKillfocusAuxDataWidth();
afx_msg void OnKillfocusLinesPerBlock();
afx_msg void OnDblclkCompressRelativeList(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnKillfocusImageWidth();
afx_msg void OnKillfocusAllowMasError();
afx_msg void OnKillfocusCompressRelativeList(NMHDR* pNMHDR, LRESULT* pResult);
//}}AFX_MSG
LRESULT OnSmallEditRecvMessage(WPARAM wParam, LPARAM lParam);
LRESULT OnHyperspectralDataCompressRecvMessage(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// HyperspectralCompressThread thread
class HyperspectralCompressThread : public CWinThread
{
DECLARE_DYNCREATE(HyperspectralCompressThread)
protected:
// Attributes
public:
HyperspectralCompressThread(); // protected constructor used by dynamic creation
CHyperspectralDataCompressDlg* m_pOwner;
BOOL m_bDone;
void SetOwner(CHyperspectralDataCompressDlg* pOwner) { m_pOwner = pOwner; };
virtual ~HyperspectralCompressThread();
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(HyperspectralCompressThread)
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
virtual int Run();
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(HyperspectralCompressThread)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// HyperspectralTestRelativeThread thread
class HyperspectralTestRelativeThread : public CWinThread
{
DECLARE_DYNCREATE(HyperspectralTestRelativeThread)
protected:
// Attributes
public:
HyperspectralTestRelativeThread(); // protected constructor used by dynamic creation
CHyperspectralDataCompressDlg* m_pOwner;
BOOL m_bDone;
void SetOwner(CHyperspectralDataCompressDlg* pOwner) { m_pOwner = pOwner; };
virtual ~HyperspectralTestRelativeThread();
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(HyperspectralTestRelativeThread)
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
virtual int Run();
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(HyperspectralTestRelativeThread)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_HYPERSPECTRALDATACOMPRESSDLG_H__5DB6A6DC_72B2_4536_A03A_2FB674F4AF24__INCLUDED_)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -