数字图像处理实验报告 直方图均衡化

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计

课程名称数字图像处理

题目名称直方图均衡化

学生学院信息工程学院

专业班级 08级电信2班

学号 3208002664 学生姓名陈慕仪

指导教师曹江中

2011年7 月 1 日

设计题目:直方图均衡化

1、直方图的理论基础:

(1)直方图概念:灰度直方图表示图像中每种灰度出现的频率。 (2)直方图的作用: 反映一幅图像的灰度分布特性

(3)直方图的计算: 式中:n k 为图像中出现r k 级灰度的像素数,n 是图像像素总数,而n k /n 即为频数。 2、设计目的: 产生一幅灰度级分布具有均匀概率密度的图像,扩展像素取值的动态范围,

达到了图象增强的目的。 3、直方图均衡化的效果 :

1)变换后直方图趋向平坦,灰级减少,灰度合并。

2)原始象含有象素数多的几个灰级间隔被拉大了,压缩的只是象素数少的几个灰

度级,实际视觉能够接收的信息量大大地增强了,增加了图象的反差。同

时,也增加了图象的可视粒度。

4、离散情况下的直方图均衡化的算法:

A 、列出原始图像的灰度级

B 、统计各灰度级的像素数目

C 、计算原始图像直方图各灰度级的频数

D 、计算累积分布函数

F 、应用以下公式计算映射后的输出图像的灰度级,P

为输出图像灰度级的个数,

其中INT 为取整符号:

G 、用的映射关系修改原始图像的灰度级,从而获得直方图近似为均匀分布的输出图像。 3、源程序代码

// cqxhistView.cpp : implementation of the CCqxhistView class #include "stdafx.h" #include "cqxhist.h"

#include "cqxhistDoc.h" #include "cqxhistView.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__; #endif

///////////////////////////////////////////////////////////////////////////// // CCqxhistView

IMPLEMENT_DYNCREATE(CCqxhistView, CView)

BEGIN_MESSAGE_MAP(CCqxhistView, CView)

1

,,1,0,-=L j f j 1

,,1,0,-=L j n j 1

,,1,0,/)(-==L j n n f P j j f 1

,,,1,0,)()(0

-==

∑=L k j f P f C k j j

f

]

5.0)()[(min min max ++-=g f C g g INT g i n

n r p k

k =)(1,,2,1,010-=≤≤l k r k

//{{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_DIRECT, 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& cs)

{

// TODO: Modify the Window class or styles here by modifying

// the CREATESTRUCT cs

return CView::PreCreateWindow(cs);

}

///////////////////////////////////////////////////////////////////////////// // 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) //判断是否加载图像

{

//获取图像宽和高

int nw=m_dib.GetDIBWidth();

int nh=m_dib.GetDIBHeight();

相关文档
最新文档