void CDemoView::OnPowerSmooth() { CDemoDoc *pDoc=GetDocument(); ImgCenterDib *pDib=pDoc->GetPDib();
if(pDib->m_nBitCount!=8){ ::MessageBox(0,"只处理灰度图像",MB_OK,0); return ; }
CImgEnhance imgSmooth(pDib->GetDimensions (),pDib->m_nBitCount, pDib->m_lpColorTable, pDib->m_pImgData); int TempH, TempW, TempCX, TempCY; float fCoef; float Temp[25]; //设模板为平均模板 Temp[0]=0.0; Temp[1]=1.0; Temp[2]=2.0; Temp[3]=1.0; Temp[4]=0.0; Temp[5]=1.0; Temp[6]=2.0; Temp[7]=4.0; Temp[8]=2.0; Temp[9]=1.0; Temp[10]=2.0; Temp[11]=4.0; Temp[12]=8.0; Temp[13]=4.0; Temp[14]=2.0; Temp[15]=1.0; Temp[16]=2.0; Temp[17]=4.0; Temp[18]=2.0; Temp[19]=1.0; Temp[20]=0.0; Temp[21]=1.0; Temp[22]=2.0; Temp[23]=1.0; Temp[24]=0.0; //初始化对话框变量 TempH=5; TempW=5; TempCX=2; TempCY=2; fCoef=(float)(1.0/48.0); imgSmooth.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( imgSmooth.GetDimensions(), imgSmooth.m_nBitCountOut, imgSmooth. m_lpColorTable, imgSmooth.m_pImgDataOut); pDocNew->SetModifiedFlag(TRUE); pDocNew->UpdateAllViews(pView);
Invalidate(); } |