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

📄 custhistogramdlg.cpp

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

#include "stdafx.h"
#include "RSIP.h"
#include "CustHistogramDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CCustHistogramDlg dialog


CCustHistogramDlg::CCustHistogramDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCustHistogramDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCustHistogramDlg)
	m_fileSelected = _T("");
	m_wholemapChecked = FALSE;
	//}}AFX_DATA_INIT
	m_modelSize = 1;
	m_nImgHeight = 0;
	m_nImgWidth = 0;

	m_bOperateMode = FALSE;
}


void CCustHistogramDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCustHistogramDlg)
	DDX_Control(pDX, IDC_MODELSIZE, m_modelSizeList);
	DDX_Text(pDX, IDC_FILE_SELECTED, m_fileSelected);
	DDX_Check(pDX, IDC_WHOLEMAP_CHECK, m_wholemapChecked);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCustHistogramDlg, CDialog)
	//{{AFX_MSG_MAP(CCustHistogramDlg)
	ON_BN_CLICKED(IDC_WHOLEMAP_CHECK, OnWholemapCheck)
	ON_BN_CLICKED(IDC_SELECTFILE, OnSelectfile)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCustHistogramDlg message handlers

void CCustHistogramDlg::OnWholemapCheck() 
{
	UpdateData(TRUE);

	if(IsDlgButtonChecked(IDC_WHOLEMAP_CHECK))
	{
		GetDlgItem(IDC_MODELSIZE)->EnableWindow(FALSE);
	}
	else
	{
		GetDlgItem(IDC_MODELSIZE)->EnableWindow(TRUE);
	}

	UpdateData(FALSE);
}

void CCustHistogramDlg::OnSelectfile() 
{
	UpdateData(TRUE);

	CFileDialog dlg(TRUE,"dat",NULL,
		OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
		"Image Files(*.dat)|*.dat||",NULL);
	if(dlg.DoModal() == IDOK)
	{
		m_fileSelected = dlg.GetPathName();
		
		m_fileSelected.TrimLeft();
		m_fileSelected.TrimRight();
		int length = m_fileSelected.GetLength();
		CString infFileName = m_fileSelected.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_wholemapChecked == FALSE)
			{
				if(m_nImgHeight-RSImage.m_nImgHeight!=0 ||
					m_nImgWidth-RSImage.m_nImgWidth!=0)
				{
					AfxMessageBox("该图像与本图像尺寸不符合!");
					return;
				}
			}
		}
		else
		{
			AfxMessageBox("找不到该图像的信息文件!");
			return;
		}
	}

	UpdateData(FALSE);
}

BOOL CCustHistogramDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();

	m_modelSizeList.ResetContent();
	m_modelSizeList.AddString("3  X  3");	// 0
	m_modelSizeList.AddString("5  X  5");   // 1
	m_modelSizeList.AddString("7  X  7");   // 2
	m_modelSizeList.AddString("9  X  9");   // 3
	m_modelSizeList.AddString("11 X 11");   // 4
	m_modelSizeList.AddString("13 X 13");   // 5
	m_modelSizeList.AddString("15 X 15");   // 6
	m_modelSizeList.AddString("17 X 17");   // 7
	m_modelSizeList.AddString("19 X 19");   // 8
	m_modelSizeList.AddString("21 X 21");   // 9
	m_modelSizeList.AddString("23 X 23");   // 10
	m_modelSizeList.AddString("25 X 25");   // 11
	m_modelSizeList.AddString("27 X 27");   // 12
	m_modelSizeList.AddString("29 X 29");   // 13
	m_modelSizeList.AddString("31 X 31");   // 14
	m_modelSizeList.AddString("33 X 33");   // 15
	
	GetDlgItem(IDC_MODELSIZE)->EnableWindow(!IsDlgButtonChecked(IDC_WHOLEMAP_CHECK));

	if(m_bOperateMode == FALSE)
		SetWindowText("直方图匹配");
	else
		SetWindowText("均值匹配");
	
	return TRUE;
}

void CCustHistogramDlg::OnOK() 
{
	UpdateData(TRUE);
	
	if(m_wholemapChecked == FALSE)
	{
		int curSelected = m_modelSizeList.GetCurSel();
		m_modelSize = 2 * curSelected + 3;
	}

	CDialog::OnOK();
}

⌨️ 快捷键说明

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