




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、设计题目:直方图均衡化1、直方图的理论基础:(1)直方图概念:灰度直方图表示图像中每种灰度出现的频率。(2)直方图的作用: 反映一幅图像的灰度分布特性(3)直方图的计算:式中:nk为图像中出现rk级灰度的像素数,n是图像像素总数,而nk/n即为频数。2、设计目的: 产生一幅灰度级分布具有均匀概率密度的图像,扩展像素取值的动态范围,达到了图象增强的目的。3、直方图均衡化的效果 : 1)变换后直方图趋向平坦,灰级减少,灰度合并。 2)原始象含有象素数多的几个灰级间隔被拉大了,压缩的只是象素数少的几个灰度级,实际视觉能够接收的信息量大大地增强了,增加了图象的反差。同时,也增加了图象的可视粒度。 4、
2、离散情况下的直方图均衡化的算法:A、列出原始图像的灰度级 B、统计各灰度级的像素数目C、计算原始图像直方图各灰度级的频数D、计算累积分布函数F、应用以下公式计算映射后的输出图像的灰度级,P为输出图像灰度级的个数,其中INT为取整符号:G、用的映射关系修改原始图像的灰度级,从而获得直方图近似为均匀分布的输出图像。3、源程序代码 / cqxhistView.cpp : implementation of the CCqxhistView class#include "stdafx.h"#include "cqxhist.h"#include "cq
3、xhistDoc.h"#include "cqxhistView.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CCqxhistViewIMPLEMENT_DYNCREATE(CCqxhistView, CView)BEGIN_MESSAGE_MAP(CCqxhistView, CView)/AFX_MSG_MAP(CCqxhistView)ON_COMMAND(ID_OPEN_IMAGE, OnOpenImage)ON_COMM
4、AND(ID_HIST_IMAGE, OnHistImage)/AFX_MSG_MAP/ Standard printing commandsON_COMMAND(ID_, CView:On)ON_COMMAND(ID_, CView:On)ON_COMMAND(ID_, CView:On)END_MESSAGE_MAP()/ CCqxhistView construction/destructionCCqxhistView:CCqxhistView()/ TODO: add construction code hereCCqxhistView:CCqxhistView()BOOL CCqxh
5、istView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CView:PreCreateWindow(cs);/ CCqxhistView drawingvoid CCqxhistView:OnDraw(CDC* pDC)CCqxhistDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native
6、data hereif(m_dib.m_bLoaded=true) /判断是否加载图像/获取图像宽和高int nw=m_dib.GetDIBWidth();int nh=m_dib.GetDIBHeight();/ 显示图像(具体的参数见CDIB类的该函数说明)m_dib.ShowDIB(pDC,10,10,nw,nh,m_dib.m_pDIBData,m_dib.m_pBMI);m_dib.ShowDIB(pDC,400,10,nw,nh,m_dib.m_pDumpDIBData,m_dib.m_pBMI);if(m_bHist=true) /绘制原图像的直方图CString str;int
7、 nh=m_dib.GetDIBHeight();int i;/画坐标轴/ 绘制坐标轴pDC->MoveTo(410,nh+20); /(410,nh+20 )是直方图的左上角坐标 / 垂直轴pDC->LineTo(410,nh+200);/(410,nh+200 )是直方图的左下角坐标 / 水平轴pDC->LineTo(710,nh+200);/(710,nh+200 )是直方图的右下角坐标 / 写X轴刻度值str.Format("0");pDC->TextOut(410, nh+200+10, str);str.Format("50&q
8、uot;);pDC->TextOut(460, nh+200+10, str);str.Format("100");pDC->TextOut(510, nh+200+10, str);str.Format("150");pDC->TextOut(560, nh+200+10, str);str.Format("200");pDC->TextOut(610, nh+200+10, str);str.Format("255");pDC->TextOut(665, nh+200+10, st
9、r);/ 绘制X轴刻度for ( i = 0; i < 256; i += 25)if (i & 1) = 0)/ 10的倍数pDC->MoveTo(i + 10, nh+200-2);pDC->LineTo(i + 10, nh+200+2);else/ 10的倍数pDC->MoveTo(i + 10, nh+200-2);pDC->LineTo(i + 10, nh+200+2);/ 绘制X轴箭头pDC->MoveTo(705,nh+200-5);pDC->LineTo(710,nh+200);pDC->LineTo(705,nh+2
10、00+5);/ 绘制y轴箭头pDC->MoveTo(410,nh+20);pDC->LineTo(405,nh+20+5);pDC->MoveTo(410,nh+20);pDC->LineTo(415,nh+20+5);int max=0;for(i=0;i<256;i+)if(m_yuani>max)max=m_yuani;for(i=0;i<256;i+)pDC->MoveTo(410+i,nh+200);pDC->LineTo(410+i,nh+200-(m_yuani*160/max);if(m_bHist=true)/绘画直方图C
11、String str;int nh=m_dib.GetDIBHeight();int i;/画坐标轴/ 绘制坐标轴pDC->MoveTo(10,nh+20); /(10,nh+20 )是直方图的左上角坐标 / 垂直轴pDC->LineTo(10,nh+200);/(10,nh+200 )是直方图的左下角坐标 / 水平轴pDC->LineTo(310,nh+200);/(310,nh+200 )是直方图的右下角坐标 / 写X轴刻度值str.Format("0");pDC->TextOut(10, nh+200+10, str);str.Format(&
12、quot;50");pDC->TextOut(60, nh+200+10, str);str.Format("100");pDC->TextOut(110, nh+200+10, str);str.Format("150");pDC->TextOut(160, nh+200+10, str);str.Format("200");pDC->TextOut(210, nh+200+10, str);str.Format("255");pDC->TextOut(265, nh+20
13、0+10, str);/ 绘制X轴刻度for ( i = 0; i < 256; i += 25)if (i & 1) = 0)/ 10的倍数pDC->MoveTo(i + 10, nh+200-2);pDC->LineTo(i + 10, nh+200+2);else/ 10的倍数pDC->MoveTo(i + 10, nh+200-2);pDC->LineTo(i + 10, nh+200+2);/ 绘制X轴箭头pDC->MoveTo(305,nh+200-5);pDC->LineTo(310,nh+200);pDC->LineTo(
14、305,nh+200+5);/ 绘制y轴箭头pDC->MoveTo(10,nh+20);pDC->LineTo(5,nh+20+5);pDC->MoveTo(10,nh+20);pDC->LineTo(15,nh+20+5);int max=0;for(i=0;i<256;i+)if(m_histi>max)max=m_histi;for(i=0;i<256;i+)pDC->MoveTo(10+i,nh+200);pDC->LineTo(10+i,nh+200-(m_histi*160/max);/ CCqxhistView printin
15、gBOOL CCqxhistView:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrinting(pInfo);void CCqxhistView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra initialization before printingvoid CCqxhistView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO
16、: add cleanup after printing/ CCqxhistView diagnostics#ifdef _DEBUGvoid CCqxhistView:AssertValid() constCView:AssertValid();void CCqxhistView:Dump(CDumpContext& dc) constCView:Dump(dc);CCqxhistDoc* CCqxhistView:GetDocument() / non-debug version is inlineASSERT(m_pDocument->IsKindOf(RUNTIME_CL
17、ASS(CCqxhistDoc);return (CCqxhistDoc*)m_pDocument;#endif /_DEBUG/ CCqxhistView message handlersvoid CCqxhistView:OnOpenImage() / TODO: Add your command handler code here/ TODO: Add your command handler code herestatic char szFilter="BMP文件(*.bmp)|*.bmp|" /定义过滤文件的类型 C dlg(TRUE,"bmp"
18、;,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);/定义文件对话框对象 CString ;int ret=dlg.DoModal(); /运行打开文件对方框if(ret=IDOK)(); /获取所选择图像的路径 m_dib.LoadFrom); /加载图像 if(!m_dib.m_bLoaded) /判断是否加载图像成功AfxMessageBox("图像打不开"); return;for(int i=0;i<256;i+) /初始化直方图数组 m_histi=0; m_yuani=0; m_bHist=fals
19、e;int nw=m_dib.GetDIBWidth(); int nh=m_dib.GetDIBHeight(); for(int j=0;j<nh;j+)for(int i=0;i<nw;i+) BYTE temp=m_dib.m_pdataj*nw+i; m_yuantemp+;Invalidate(1);/刷新屏幕void CCqxhistView:OnHistImage() / TODO: Add your command handler code here/功能:实现直方图均衡化/判断图像是否打开,没打开,则弹出提示框并退出函数if(!m_dib.m_bLoaded) AfxMessageBox("图像还打开,请先打开图像!");return; /获取图像宽和高int nw=m_dib.GetDIBWidth();int nh=m_dib.GetDIBHeight();int i,j,k; int count256=0;/定义一个数组,用于存放灰度级个数 float p256;/定义一个数组,用于存放灰度级出现频率/对图像进行直方图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 理解注册会计师考试的重要性与试题及答案
- 2025年【工具钳工(高级)】模拟考试题及答案
- 2024年项目管理考试提升指南试题及答案
- 2023年中国葛洲坝三峡建设工程有限公司成熟人才招聘若干人笔试参考题库附带答案详解
- 污水处理中的低温脱氮技术与应用考核试卷
- 橡胶管材在工业通风系统的消声性能考核试卷
- 行政管理研究的现状与展望试题及答案
- 管道工程行业绿色技术创新考核试卷
- 2024年管理工具与技巧考试题目及答案
- 国际邮轮航线考核试卷
- 危重孕产妇(MNM)转诊中国专家共识:规范流程与安全保障(2025版)解读课件
- 课件:《科学社会主义概论(第二版)》第一章
- 国际关系理论知到智慧树章节测试课后答案2024年秋外交学院
- 高效机房目前几种全局节能优化控制算法技术路线的分享和探讨
- 屋顶光伏支架安装施工方案
- 2024版专业工程资质居间转让合同范文版B版
- 新能源购售电合同模板
- 上海市2024年中考英语试题及答案
- 2024年一级建造师《建设工程项目管理》真题及答案
- 颈椎病课件完整版本
- 部编版语文小学二年级下册第一单元集体备课(教材解读)
评论
0/150
提交评论