1、 设计题目:设计题目:直方图均衡化直方图均衡化 1、直方图的理论基础: (1)直方图概念:灰度直方图表示图像中每种灰度出现的频率。 (2)直方图的作用: 反映一幅图像的灰度分布特性 (3)直方图的计算: 式中:nk为图像中出现rk级灰度的像素数,n是图像像素总数,而nk/n即为频数。 2、设计目的: 产生一幅灰度级分布具有均匀概率密度的图像,扩展像素取值的动态范围, 达到了图象增强的目的。 3、直方图均衡化的效果 : 1)变换后直方图趋向平坦,灰级减少,灰度合并。 2) 原始象含有象素数多的几个灰级间隔被拉大了, 压缩的只是象素数少的几个灰 度级,实际视觉能够接收的信息量大大地增强了,增加了图
2、象的反差。同 时,也增加了图象的可视粒度。 4、离散情况下的直方图均衡化的算法: A、列出原始图像的灰度级 B、统计各灰度级的像素数目 C、计算原始图像直方图各灰度级的频数 D、计算累积分布函数 F、应用以下公式计算映射后的输出图像的灰度级,P 为输出图像灰度级的个数, 其中 INT 为取整符号: G、用的映射关系修改原始图像的灰度级,从而获得直方图近似为均匀分布的输出 图像。 3、源程序代码 / cqxhistView.cpp : implementation of the CCqxhistView class #include “stdafx.h“ #include “cqxhist.h“
3、 #include “cqxhistDoc.h“ #include “cqxhistView.h“ #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE = _FILE_; #endif / / CCqxhistView 1, 1 ,0,Ljf j 1, 1 ,0,Ljn j 1, 1 ,0,/)(LjnnfP jjf 1, 1 ,0, )()( 0 LkjfPfC k j jf 5.0)()( minminmax gfCggINTg i n n rp k k )( 1,2, 1 ,010lkrk
4、IMPLEMENT_DYNCREATE(CCqxhistView, CView) BEGIN_MESSAGE_MAP(CCqxhistView, CView) /AFX_MSG_MAP(CCqxhistView) ON_COMMAND(ID_OPEN_IMAGE, OnOpenImage) ON_COMMAND(ID_HIST_IMAGE, OnHistImage) /AFX_MSG_MAP / Standard printing commands ON_COMMAND(ID_FILE_PRINT, CView:OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIR
5、ECT, CView:OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:OnFilePrintPreview) END_MESSAGE_MAP() / / CCqxhistView construction/destruction CCqxhistView:CCqxhistView() / TODO: add construction code here CCqxhistView:CCqxhistView() BOOL CCqxhistView:PreCreateWindow(CREATESTRUCT / / CCqxhistView drawing void CCqxhistView:OnDraw(CDC* pDC) CCqxhistDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); / TODO: add draw code for native data here if(m_dib.m_bLoaded=true) /判断是否加载图像 /获取图像宽