开发工具:
文件大小: 134kb
下载次数: 0
上传时间: 2011-11-08
详细说明: 图像的增强/////////////////////////////////直方图对话框构造函数; ZFT::ZFT(CWnd* pParent /*=NULL*/) : CDialog(ZFT::IDD, pParent)//ZFT为定义的用来显示直方图的对话框类; { Width=Height=0;//对话框初始化阶段设置图像的宽和高为"0"; } ////////////////////////对话框重画函数; void ZFT::OnPaint() { CRect rect;//矩形区域对象; CWnd *pWnd;//得到图片框的窗口指针; pWnd=GetDlgItem(IDC_Graphic);//得到ZFT对话框内的"Frame"控件的指针; file://(IDC_Graphic为放置在对话框上的一个"Picture"控件,并讲类型设置为"Frame")。 pWnd->GetClientRect(&rect);//得到"Frame"控件窗口的"视"区域; int i; CPaintDC dc(pWnd);//得到"Frame"控件的设备上下文; file://画直方图的x、y轴; dc.MoveTo(0,rect.Height()); dc.LineTo(rect.Width(),rect.Height()); dc.MoveTo(0,rect.Height()); dc.LineTo(0,0); file://画直方图,num[]是"ZFT"的内部数组变量,存放的是图像各个灰度级出现的概率;该数组的各个分量在 显示具体图像的直方图时设置; for(i=0;i<256;i++)//根据图像上的各个灰度级出现的概率,在坐标上对应的画出一根直线,从而各个表示各灰度级出现概率的直线构成了图像的直方图; { dc.MoveTo(i+1,rect.Height()); dc.LineTo (i+1,(rect.Height()-rect.Height()*num[i]*30)); file://此处num分量乘以"30"是为了放大个灰度级上对应的出现概率直线,增强显示效果; } } //////////////////////////////////////////////////////// void ZFT::OnMouseMove(UINT nFlags, CPoint point) {//OnMouseMove函数处理鼠标消息,显示当前鼠标所在直方图上的灰度值等信息; CWnd *pWnd,*pWndText;//定义两个窗口对象; CPoint point1;//定义个一个点对象; point1=point;//存放当前鼠标的位置信息; CRect rect;//矩形对象; CString string ;//字符串对象; pWnd=GetDlgItem(IDC_Graphic);//得到显示直方图的框架窗口对象指针; pWndText=GetDlgItem(IDC_NUM);//得到指向文本框对象(IDC_NUM)窗口的指针; pWnd->GetWindowRect(&rect);//获取pWnd窗口对象窗口区域位置; file://屏幕坐标转换为客户区坐标; ScreenToClient(&rect); file://判断当前鼠标是否指在直方图内; if(rect.PtInRect (point)) { int x=point1.x-rect.left; file://当前鼠标位置减去区域的起始位置恰好为当前鼠标所指位置所表示的灰度级; string.Format("%d",x); file://显示当前位置对应的图像的灰度级; pWndText->SetWindowText((LPCTSTR)string); } CDialog::OnMouseMove(nFlags, point); } //////////////////////////////////////// void CDibView::OnImagehorgm() file://在程序的"视"类对象内处理显示图像直方图的函数; { CDibDoc *pDoc=GetDocument(); HDIB hdib; hdib=pDoc->GetHDIB(); BITMAPINFOHEADER *lpDIBHdr;//位图信息头结构指针; BYTE *lpDIBBits;//指向位图像素灰度值的指针; lpDIBHdr=( BITMAPINFOHEADER *)GlobalLock(hdib);//得到图像的位图头信息 lpDIBBits=(BYTE*)lpDIBHdr+sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD); file://获取图像像素值 ZFT dialog;//直方图对话框模板对象; int i,j; int wImgWidth=lpDIBHdr->biWidth; int wImgHeight=lpDIBHdr->biHeight; file://a[]数组用来存放各个灰度级出现的概率; float a[256]; for(i=0;i<256;i++)//初始化数组; { a[i]=0; } file://统计各个灰度级出现的次数; for(i=0;i
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.