发布时间 : 星期日 文章Vc++数字图像处理Matlab语音信号及信号处理更新完毕开始阅读26ad93fa4693daef5ef73d15
BeginWaitCursor(); // 显示等待光标 CDIPDemoDoc* pDoc = GetDocument(); // 获取文档 ASSERT_VALID(pDoc);
if(pDoc->m_Image.IsValidate()) {
if(pPalette!=NULL)
pDC->SelectPalette(pOldPalette, FALSE); CPalette* pOldPalette;
CPalette* pPalette = pDoc->GetDocPalette(); if(pPalette!=NULL) {
pOldPalette = pDC->SelectPalette(pPalette, FALSE); pDC->RealizePalette(); //更新系统调色板
}
pDoc->m_Image.Draw(pDC); //绘制图像
}
EndWaitCursor(); // 恢复正常光标
}
void CDIPDemoView::OnEnhaSmooth() // 图像平滑 {
CDIPDemoDoc* pDoc = GetDocument(); // 获取文档 CImgProcess imgInput = pDoc->m_Image; // 输入对象 if (imgInput.m_pBMIH->biBitCount!=8) {
AfxMessageBox(\不是8-bpp灰度图像,无法处理!\ return;
} // 检查图像是灰度图 CImgProcess imgOutput = imgInput; // 输出的临时对象 int nTempH;
// 模板高度
int nTempW; // 模板宽度 FLOAT fTempC;// 模板系数 int
nTempMX;// 模板中心元素X坐标
4
int
nTempMY;// 模板中心元素Y坐标
FLOAT aValue[25] = {1.0, 1.0, 1.0, 0.0, 0.0,
1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,};
BeginWaitCursor(); // 更改光标形状 nTempH = 3; nTempW = 3; nTempMX = 1; nTempMY = 1;
fTempC = (FLOAT) (1.0 / 9.0); // 初始化对话框变量值
imgInput.Template(&imgOutput, nTempH, nTempW, nTempMY, nTempMX, aValue, fTempC);
void CDIPDemoView::OnEnhaSharp() // 拉普拉斯锐化 {
CDIPDemoDoc* pDoc = GetDocument(); // 获取文档 CImgProcess imgInput = pDoc->m_Image; // 输入对象 if (imgInput.m_pBMIH->biBitCount!=8) {
AfxMessageBox(\不是8-bpp灰度图像,无法处理!\ return;
// 输出的临时对象
// 调用Template()函数实现平滑滤波
pDoc->m_Image = imgOutput; // 将结果返回给文档类 pDoc->SetModifiedFlag(TRUE); // 设置脏标记 pDoc->UpdateAllViews(NULL); // 更新视图 EndWaitCursor(); // 恢复光标
}
} // 检查图像是灰度图 CImgProcess imgOutput = imgInput; int nTempH; // 滤波器的高度 int nTempW; // 滤波器的宽度 int nTempMX; // 中心元素的X坐标
5
int nTempMY; // 中心元素的Y坐标 FLOAT fCoef; // 模板系数 BeginWaitCursor(); nTempW = 3; nTempH = 3; fCoef = 1.0; nTempMX = 1; nTempMY = 1;
// 设置拉普拉斯模板参数
imgInput.Template(&imgOutput, nTempH, nTempW, nTempMY, nTempMX, Template_Laplacian2, fCoef);
// 调用Template()函数用拉普拉斯模板锐化 pDoc->m_Image = imgOutput; // 将结果返回给文档类 pDoc->SetModifiedFlag(TRUE); // 设置脏标记 pDoc->UpdateAllViews(NULL); // 更新视图 EndWaitCursor(); // 恢复光标
} 五、设计结果
设计程序运行结果如下图所示,运行后原始图像如下:
进行图像平滑处理后如下图所示:
6
图像进行拉普拉斯锐化后如下示:
六、收获和体会
在这一个礼拜的图像处理程序设计中,我经过多次的实践和多次的失败,终于在最后成功设计好了程序。同时深刻体会到图像平滑让图像中的细节成分越来越少,而相对的,图像锐化则是凸显图像的细节部分。
图像平滑处理,在很多噪声的情况下,图像平滑能够有效的减弱噪声对图像的影响。无论是高斯噪声、椒盐噪声还是乘性噪声,都能很好的在图像平滑中将
7