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

更新时间:2023-07-20 19:04:29 阅读: 评论:0

数字图像处理实验报告直⽅图均衡化
课程设计
课程名称数字图像处理
题⽬名称直⽅图均衡化
学⽣学院信息⼯程学院
专业班级 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()
{
cad入门
}
北京广济寺
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();
// 显⽰图像(具体的参数见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 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轴刻度值
6月22日是什么星座
str.Format("0");
pDC->TextOut(410, nh+200+10, str);
str.Format("50");
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, 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);
}
el
{
// 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+200+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_yuan[i]>max)
max=m_yuan[i];
for(i=0;i<256;i++)
{
pDC->MoveTo(410+i,nh+200);
pDC->LineTo(410+i,nh+200-(m_yuan[i]*160/max));
}
}
if(m_bHist==true)
{
//绘画直⽅图
CString 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("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+200+10, str);
// 绘制X轴刻度
for ( i = 0; i < 256; i += 25)
{梦见要搬家

本文发布于:2023-07-20 19:04:29,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1107434.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   灰度级   灰度   均衡化   原始   绘制   分布   计算
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图