void CDemoView::OnRandom() { CDemoDoc *pDoc=GetDocument(); ImgCenterDib *pDib=pDoc->GetPDib();
if(pDib->m_nBitCount!=8 ::MessageBox(0,"只处理灰度图像",MB_OK,0); return ; }
CImgEnhance imgnoise(pDib->GetDimensions(), pDib->m_nBitCount, pDib->m_lpColorTable, pDib->m_pImgData); imgnoise.AddRandomNoise();
CMainFrame* pFrame = (CMainFrame *) (AfxGetApp()->m_pMainWnd); pFrame->SendMessage(WM_COMMAND, ID_FILE_NEW);
CDemoView* pView=(CDemoView*)pFrame-> MDIGetActive()->GetActiveView(); CDemoDoc* pDocNew=pView->GetDocument(); ImgCenterDib *dibNew=pDocNew->GetPDib();
dibNew->ReplaceDib(imgnoise.GetDimensions(), imgnoise.m_nBitCountOut,imgnoise. m_lpColorTable, imgnoise.m_pImgDataOut); pDocNew->SetModifiedFlag(TRUE); pDocNew->UpdateAllViews(pView);
Invalidate();
}
void CDemoView::OnAveSmooth() { CDemoDoc *pDoc=GetDocument(); ImgCenterDib *pDib=pDoc->GetPDib();
if(pDib->m_nBitCount!=8 ::MessageBox(0,"只处理灰度图像",MB_OK,0); return ; }
CImgEnhance imgnoise(pDib->GetDimensions(),pDib->m_nBitCount, pDib->m_lpColorTable, pDib->m_pImgData); int TH, TW, TCX, TCY; float fCoef; float T[9]; //设模板为平均模板 T[0]=1.0; T[1]=1.0; T[2]=1.0; T[3]=1.0; T[4]=1.0; T[5]=1.0; T[6]=1.0; T[7]=1.0; T[8]=1.0; //初始化对话框变量 TH=3; TW=3; TCX=1; TempCY=1; fCoef=(float)(1.0/9.0); imgnoise.AvgTemplate(TempH,TempW,TempCX,TempCY,Temp,fCoef);
CMainFrame* pFrame = (CMainFrame *)(AfxGetApp()->m_pMainWnd); pFrame->SendMessage(WM_COMMAND, ID_FILE_NEW);
CDemoView* pView=(CDemoView*)pFrame->MDIGetActive()->GetActiveView(); CDemoDoc* pDocNew=pView->GetDocument(); ImgCenterDib *dibNew=pDocNew->GetPDib();
dibNew->ReplaceDib(imgnoise.GetDimensions(), imgnoise.m_nBitCountOut,imgnoise.m_lpColorTable, imgnoise.m_pImgDataOut); pDocNew->SetModifiedFlag(TRUE); pDocNew->UpdateAllViews(pView);
Invalidate(); return; } |