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

📄 data_compress_systemview.cpp

📁 各种数据压缩和解压的源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		// 更新视图
		pDoc->UpdateAllViews(NULL);
	}
	else
	{
		// 提示用户
		MessageBox("分配内存失败!", "系统提示" , MB_ICONINFORMATION | MB_OK);
	}
}


///////////////////////////////////////////
//	对图像实施线形平滑滤波(G1)		 //	
///////////////////////////////////////////
void CData_Compress_SystemView::OnLineSmoothFilter() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

	// 进行线形平滑滤波处理
	CSpaceFilter clsSpaceFilter;
	clsSpaceFilter.StencilFilter(pDoc->GetHDIB(), &Line_Filter[0]);

	// 设置脏标记
	pDoc->SetModifiedFlag(TRUE);

	// 更新视图
	Invalidate();
}

void CData_Compress_SystemView::OnLineSmoothFilter2() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

	// 进行线形平滑滤波处理
	CSpaceFilter clsSpaceFilter;
	clsSpaceFilter.StencilFilter(pDoc->GetHDIB(), &Line_Filter[1]);

	// 设置脏标记
	pDoc->SetModifiedFlag(TRUE);

	// 更新视图
	Invalidate();
}

void CData_Compress_SystemView::OnLineSmoothFilter3() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

	// 进行线形平滑滤波处理
	CSpaceFilter clsSpaceFilter;
	clsSpaceFilter.StencilFilter(pDoc->GetHDIB(), &Line_Filter[2]);

	// 设置脏标记
	pDoc->SetModifiedFlag(TRUE);

	// 更新视图
	Invalidate();
}


///////////////////////////////////////////
//	对图像实施非线形平滑滤波(G2)		 //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnMedianFilter() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

	// 进行线形平滑滤波处理
	CSpaceFilter clsSpaceFilter;
	clsSpaceFilter.MedianFilter(pDoc->GetHDIB());

	// 设置脏标记
	pDoc->SetModifiedFlag(TRUE);

	// 更新视图
	Invalidate();
}


///////////////////////////////////////////
//	对图像实施线形锐化滤波(G3)		 //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnLineQuickFilter() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

	// 进行线形平滑滤波处理
	CSpaceFilter clsSpaceFilter;
	clsSpaceFilter.StencilFilter(pDoc->GetHDIB(), &Line_Filter[3]);

	// 设置脏标记
	pDoc->SetModifiedFlag(TRUE);

	// 更新视图
	Invalidate();
}


///////////////////////////////////////////
//	对图像实施超限滤波					 //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnOverrunFilter() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

	// 进行线形平滑滤波处理
	CSpaceFilter clsSpaceFilter;
	clsSpaceFilter.OverRun(pDoc->GetHDIB(), &OverRun_Filter, 10);

	// 设置脏标记
	pDoc->SetModifiedFlag(TRUE);

	// 更新视图
	Invalidate();
}

///////////////////////////[正交变换处理]////////////////////////////////////////////


///////////////////////////////////////////
//	对图像实施傅立叶变换处理			 //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnFreqFour() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();
	
	CFreqCalculate clsFreqCalculate;

	// 调用DIBFourier()函数进行付立叶变换
	if (clsFreqCalculate.DIBFourier(pDoc->GetHDIB()))
	{
		// 标识为频谱图
		pDoc->m_bIsFrequency = TRUE;

		// 设置脏标记
		pDoc->SetModifiedFlag(TRUE);
		
		// 更新视图
		pDoc->UpdateAllViews(NULL);
	}
	else
	{
		// 提示用户
		MessageBox("分配内存失败!", "系统提示" , MB_ICONINFORMATION | MB_OK);
	}
}


///////////////////////////////////////////
//	对图像实施离散余弦变换处理			 //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnFreqDct() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();
	
	CFreqCalculate clsFreqCalculate;

	// 调用DIBFourier()函数进行付立叶变换
	if (clsFreqCalculate.DIBDCT(pDoc->GetHDIB()))
	{
		// 设置脏标记
		pDoc->SetModifiedFlag(TRUE);
		
		// 更新视图
		pDoc->UpdateAllViews(NULL);	
	}
	else
	{
		// 提示用户
		MessageBox("分配内存失败!", "系统提示" , MB_ICONINFORMATION | MB_OK);
	}
}


///////////////////////////////////////////
//	对图像实施沃尔什——哈达玛变换处理	 //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnFreqWalh() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();
	
	CFreqCalculate clsFreqCalculate;

	// 调用DIBFourier()函数进行付立叶变换
	if (clsFreqCalculate.DIBWalsh(pDoc->GetHDIB()))
	{
		// 设置脏标记
		pDoc->SetModifiedFlag(TRUE);
		
		// 更新视图
		pDoc->UpdateAllViews(NULL);
	}
	else
	{
		// 提示用户
		MessageBox("分配内存失败!", "系统提示" , MB_ICONINFORMATION | MB_OK);
	}
}

///////////////////////////[图像频域滤波部分]////////////////////////////////////////////


///////////////////////////////////////////
//	对图像实施巴特沃斯低通滤波			 //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnButterworthL() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

	// 由对话框输入截止频率
	CDLGSetFreq dlg;
	dlg.m_fValue = 250.0f;
	if(dlg.DoModal() == IDOK)
	{
		// 更新数据
		UpdateData(TRUE);

		// 对图象进行巴特沃斯低通滤波
		CFreqFilter clsFreqFilter;
		clsFreqFilter.ButterworthL(pDoc->GetHDIB(), dlg.m_fValue);

		// 重画视图
		Invalidate();

		// 设置脏标记
		pDoc->SetModifiedFlag(TRUE);
	}
}


///////////////////////////////////////////
//	对图像实施巴特沃斯高通滤波			 //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnButterworthH() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

	// 由对话框输入截止频率
	CDLGSetFreq dlg;
	dlg.m_fValue = 5.0f;
	if(dlg.DoModal() == IDOK)
	{
		// 更新数据
		UpdateData(TRUE);

		// 对图象进行巴特沃斯高通滤波
		CFreqFilter clsFreqFilter;
		clsFreqFilter.ButterworthH(pDoc->GetHDIB(), dlg.m_fValue);

		// 重画视图
		Invalidate();

		// 设置脏标记
		pDoc->SetModifiedFlag(TRUE);
	}
}


///////////////////////////////////////////
//	对图像实施交互式带阻滤波			 //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnMutualFilter() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

    if (pDoc->m_bIsFrequency == FALSE)
	{
		// 提示用户
		MessageBox("请先在频谱图指定滤波区域!", "系统提示" , MB_ICONINFORMATION | MB_OK);
		return;
	}
	
	// 重新打开文档
	pDoc->SetModifiedFlag(FALSE);
	pDoc->OnFileReopen();

	// 对图象进行交互式带阻滤波
	CFreqFilter clsFreqFilter;
	clsFreqFilter.MutualFilter(pDoc->GetHDIB(), pDoc->m_rect, pDoc->m_nRgnNum);

	pDoc->m_nRgnNum = 0;

	// 重画视图
	Invalidate();

	// 设置脏标记
	pDoc->SetModifiedFlag(TRUE);
}


///////////////////////////////////////////
//	对图像实施巴特沃斯低通滤波的逆滤波   //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnRetrorseFilter() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

	// 由对话框输入截止频率
	CDLGSetFreq dlg;
	dlg.m_fValue = 250.0f;
	if(dlg.DoModal() == IDOK)
	{
		// 更新数据
		UpdateData(TRUE);

		// 对图象进行巴特沃斯低通滤波
		CFreqFilter clsFreqFilter;
		clsFreqFilter.RetrorseFilter(pDoc->GetHDIB(), dlg.m_fValue);

		// 重画视图
		Invalidate();

		// 设置脏标记
		pDoc->SetModifiedFlag(TRUE);
	}
}


///////////////////////////////////////////
//	对图像实施维纳滤波					 //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnWienerFilter() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

	// 由对话框输入截止频率
	CDLGSetFreq dlg;
	dlg.m_fValue = 250.0f;
	if(dlg.DoModal() == IDOK)
	{
		// 更新数据
		UpdateData(TRUE);

		// 对图象进行巴特沃斯低通滤波
		CFreqFilter clsFreqFilter;
		clsFreqFilter.WienerFilter(pDoc->GetHDIB(), dlg.m_fValue);

		// 重画视图
		Invalidate();

		// 设置脏标记
		pDoc->SetModifiedFlag(TRUE);
	}
}


///////////////////////////////////////////
//	对图像实施功率谱均衡滤波			 //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnPSE_Filter() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

	// 由对话框输入截止频率
	CDLGSetFreq dlg;
	dlg.m_fValue = 250.0f;
	if(dlg.DoModal() == IDOK)
	{
		// 更新数据
		UpdateData(TRUE);

		// 对图象进行巴特沃斯低通滤波
		CFreqFilter clsFreqFilter;
		clsFreqFilter.PSE_Filter(pDoc->GetHDIB(), dlg.m_fValue);

		// 重画视图
		Invalidate();

		// 设置脏标记
		pDoc->SetModifiedFlag(TRUE);
	}
}


///////////////////////////////////////////
//	对图像实施最小均方滤波				 //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnMinPower() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

	// 由对话框输入截止频率
	CDLGSetFreq dlg;
	dlg.m_fValue = 250.0f;
	if(dlg.DoModal() == IDOK)
	{
		// 更新数据
		UpdateData(TRUE);

		// 对图象进行巴特沃斯低通滤波
		CFreqFilter clsFreqFilter;
		clsFreqFilter.MinPower(pDoc->GetHDIB(), dlg.m_fValue);

		// 重画视图
		Invalidate();

		// 设置脏标记
		pDoc->SetModifiedFlag(TRUE);
	}
}


///////////////////////////////////////////
//	对空间失真图像进行矫正(从角度)	 //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnRotate() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

	// 由对话框输入旋转角度
	CDLGSetAngle dlg;
	dlg.m_fAngle = 0.0f;
	if(dlg.DoModal() == IDOK)
	{
		// 更新数据
		UpdateData(TRUE);

		// 对图象进行角度矫正
		CGeoTrans clsGeoTrans;
		clsGeoTrans.Rotate(pDoc->GetHDIB(), dlg.m_fAngle);

		// 重画视图
		Invalidate();

		// 设置脏标记
		pDoc->SetModifiedFlag(TRUE);
	}
}

///////////////////////////////////////////
//	对空间失真图像进行校直(从空间角度) //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnRectinication() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

	// 由对话框输入旋转角度
	CDLGSetAngle dlg;
	dlg.m_fAngle = 0.0f;
	if(dlg.DoModal() == IDOK)
	{
		// 更新数据
		UpdateData(TRUE);

		// 对图象进行角度矫正
		CGeoTrans clsGeoTrans;
		clsGeoTrans.Rectinication(pDoc->GetHDIB(), dlg.m_fAngle);

		// 重画视图
		Invalidate();

		// 设置脏标记
		pDoc->SetModifiedFlag(TRUE);
	}
}

///////////////////////////////////////////
//	向图像添加随机噪声					 //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnRandomNoise() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

	// 对图象进行巴特沃斯低通滤波
	CNoise clsNoise;
	clsNoise.RandomNoise(pDoc->GetHDIB());

	// 重画视图
	Invalidate();

	// 设置脏标记
	pDoc->SetModifiedFlag(TRUE);
}


///////////////////////////////////////////
//	向图象添加盐性噪声					 //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnSaltNoise() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

	// 对图象进行巴特沃斯低通滤波
	CNoise clsNoise;
	clsNoise.SaltNoise(pDoc->GetHDIB());

	// 重画视图
	Invalidate();

	// 设置脏标记
	pDoc->SetModifiedFlag(TRUE);
}

///////////////////////////[数学形态学部分]//////////////////////////////////////////


///////////////////////////////////////////
//	对图像实施水平腐蚀处理				 //	
///////////////////////////////////////////

void CData_Compress_SystemView::OnHErosion() 
{
	// 获取文档
	CData_Compress_SystemDoc* pDoc = GetDocument();

⌨️ 快捷键说明

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