⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 statistic.cpp

📁 基于小波的SAR斑点处理
💻 CPP
字号:
// Statistic.cpp : implementation file
//

#include "stdafx.h"
#include "RSIP.h"
#include "Statistic.h"

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

/////////////////////////////////////////////////////////////////////////////
// CCorrelationDlg dialog


CCorrelationDlg::CCorrelationDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCorrelationDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCorrelationDlg)
	m_strFirstFile = _T("");
	m_strSecondFile = _T("");
	//}}AFX_DATA_INIT
	m_nImgWidth = 0;
	m_nImgHeight = 0;
	m_operatingMode = 0;
}


void CCorrelationDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCorrelationDlg)
	DDX_Text(pDX, IDC_FIRST_FILE, m_strFirstFile);
	DDX_Text(pDX, IDC_SECOND_FILE, m_strSecondFile);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCorrelationDlg, CDialog)
	//{{AFX_MSG_MAP(CCorrelationDlg)
	ON_BN_CLICKED(IDC_FIRST_IMAGE, OnFirstImage)
	ON_BN_CLICKED(IDC_SECOND_IMAGE, OnSecondImage)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCorrelationDlg message handlers

void CCorrelationDlg::OnFirstImage() 
{
	if(m_operatingMode != 2)
	{
		CFileDialog dlg(TRUE,"dat",NULL,
			OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
			"Image Files(*.dat)|*.dat||",NULL);
		if(dlg.DoModal() == IDOK)
		{
			m_strFirstFile = dlg.GetPathName();

			m_strFirstFile.TrimLeft();
			m_strFirstFile.TrimRight();
			int length = m_strFirstFile.GetLength();
			CString infFileName = m_strFirstFile.Left(length - 4)+".inf";

			CFile infFile;
			if(0 != infFile.Open(infFileName,CFile::modeRead))
			{
				CRSImage RSImage;
				RSImage.LoadRsInfo(&infFile);
				infFile.Close();

				if(RSImage.m_nImgType != IMAGE_SINGLEBAND)
				{
					AfxMessageBox("该图象不是单波段图象。\n\n请选择单波段图象计算相关系数!");
					return;
				}
				if(m_nImgHeight==0 && m_nImgWidth==0)
				{
					m_nImgHeight = RSImage.m_nImgHeight;
					m_nImgWidth = RSImage.m_nImgWidth;
				}
				else
				{
					if(m_nImgHeight-RSImage.m_nImgHeight!=0 || 
						m_nImgWidth-RSImage.m_nImgWidth!=0)
					{
						AfxMessageBox("该图象与另一幅图象尺寸不符合!");
						return;
					}
				}
			}
			else
			{
				AfxMessageBox("找不到该波段图象的信息文件!");
				return;
			}
		}
	}
	else
	{
		CFileDialog dlg(TRUE,"wtf",NULL,
			OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
			"Wavelet Transform Files(*.wtf)|*.wtf||",NULL);
		if(dlg.DoModal() == IDOK)
		{
			m_strFirstFile = dlg.GetPathName();
		}
	}

	UpdateData(FALSE);
}

void CCorrelationDlg::OnSecondImage() 
{
	if(m_operatingMode != 2)
	{
		CFileDialog dlg(TRUE,"dat",NULL,
			OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
			"Image Files(*.dat)|*.dat||",NULL);
		if(dlg.DoModal() == IDOK)
		{
			m_strSecondFile = dlg.GetPathName();

			m_strSecondFile.TrimLeft();
			m_strSecondFile.TrimRight();
			int length = m_strSecondFile.GetLength();
			CString infFileName = m_strSecondFile.Left(length - 4)+".inf";

			CFile infFile;
			if(0 != infFile.Open(infFileName,CFile::modeRead))
			{
				CRSImage RSImage;
				RSImage.LoadRsInfo(&infFile);
				infFile.Close();

				if(RSImage.m_nImgType != IMAGE_SINGLEBAND)
				{
					AfxMessageBox("该图象不是单波段图象。\n\n请选择单波段图象计算相关系数!");
					return;
				}
				if(m_nImgHeight==0 && m_nImgWidth==0)
				{
					m_nImgHeight = RSImage.m_nImgHeight;
					m_nImgWidth = RSImage.m_nImgWidth;
				}
				else
				{
					if(m_nImgHeight-RSImage.m_nImgHeight!=0 || 
						m_nImgWidth-RSImage.m_nImgWidth!=0)
					{
						AfxMessageBox("该图象与另一幅图象尺寸不符合!");
						return;
					}
				}
			}
			else
			{
				AfxMessageBox("找不到该波段图象的信息文件!");
				return;
			}
		}
	}
	else
	{
		CFileDialog dlg(TRUE,"wtf",NULL,
			OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
			"Wavelet Transform Files(*.wtf)|*.wtf||",NULL);
		if(dlg.DoModal() == IDOK)
		{
			m_strSecondFile = dlg.GetPathName();
		}
	}

	UpdateData(FALSE);
}

BOOL CCorrelationDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	switch(m_operatingMode){
	case 0:
		SetWindowText("光谱扭曲");
		break;
	case 1:
		SetWindowText("相关系数");
		break;
	case 2:
		SetWindowText("层相关系数");
		break;
	}
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
/////////////////////////////////////////////////////////////////////////////
// CLCdlg dialog


CLCdlg::CLCdlg(CWnd* pParent /*=NULL*/)
	: CDialog(CLCdlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CLCdlg)
	m_nContrast = 0;
	m_nLight = 0;
	//}}AFX_DATA_INIT
}


void CLCdlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLCdlg)
	DDX_Text(pDX, IDC_CONTRAST_EDIT, m_nContrast);
	DDX_Text(pDX, IDC_LIGHT_EDIT, m_nLight);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CLCdlg, CDialog)
	//{{AFX_MSG_MAP(CLCdlg)
	ON_WM_HSCROLL()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLCdlg message handlers

void CLCdlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	CSliderCtrl * pSlide = (CSliderCtrl *)pScrollBar;

	switch( pSlide->GetDlgCtrlID() )
	{
	case IDC_LIGHT_SLIDER:
		SetDlgItemInt(IDC_LIGHT_EDIT,int(pSlide->GetPos()));
		break;
	case IDC_CONTRAST_SLIDER:
		SetDlgItemInt(IDC_CONTRAST_EDIT,int(pSlide->GetPos()));
		break;
	}
}

BOOL CLCdlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	CSliderCtrl * pLightSlider = (CSliderCtrl *)GetDlgItem(IDC_LIGHT_SLIDER);
	pLightSlider->SetRange(-100,100);
	pLightSlider->SetPos(100);
	pLightSlider->SetPos(0);
	SetDlgItemInt(IDC_LIGHT_EDIT,m_nLight);

	CSliderCtrl * pContrastSlider = (CSliderCtrl *)GetDlgItem(IDC_CONTRAST_SLIDER);
	pContrastSlider->SetRange(-100,100);
	pContrastSlider->SetPos(100);
	pContrastSlider->SetPos(0);
	SetDlgItemInt(IDC_CONTRAST_EDIT,m_nContrast);

	return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -