数字图像处理作业(第三次)直方图处理

合集下载

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

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

数字图像处理实验报告直⽅图均衡化课程设计课程名称数字图像处理题⽬名称直⽅图均衡化学⽣学院信息⼯程学院专业班级 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_FILEstatic char THIS_FILE[] = __FILE__; #endif///////////////////////////////////////////////////////////////////////////// // CCqxhistViewIMPLEMENT_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 jf]5.0)()[(min min max ++-=g f C g g INT g i nn r p kk =)(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 commandsON_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 csreturn CView::PreCreateWindow(cs);}///////////////////////////////////////////////////////////////////////////// // CCqxhistView drawingvoid CCqxhistView::OnDraw(CDC* pDC){CCqxhistDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native 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 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");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);}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+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){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(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_hist[i]>max)max=m_hist[i];for(i=0;i<256;i++){pDC->MoveTo(10+i,nh+200);pDC->LineTo(10+i,nh+200-(m_hist[i]*160/max));}}}///////////////////////////////////////////////////////////////////////////// // CCqxhistView printing BOOL CCqxhistView::OnPreparePrinting(CPrintInfo* pInfo){// default preparationreturn DoPreparePrinting(pInfo);}void CCqxhistView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add extra initialization before printing}void CCqxhistView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add cleanup after printing}///////////////////////////////////////////////////////////////////////////// // CCqxhistView diagnostics#ifdef _DEBUGvoid CCqxhistView::AssertValid() const{CView::AssertValid();}void CCqxhistView::Dump(CDumpContext& dc) const{CView::Dump(dc);}CCqxhistDoc* CCqxhistView::GetDocument() // non-debug version is inline{ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(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||"; //定义过滤⽂件的类型 CFileDialog dlg(TRUE,"bmp",NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);//定义⽂件对话框对象 CString filename;int ret=dlg.DoModal(); //运⾏打开⽂件对⽅框if(ret==IDOK){filename=dlg.GetFileName(); //获取所选择图像的路径 m_dib.LoadFromFile(filename); //加载图像if(!m_dib.m_bLoaded) //判断是否加载图像成功{AfxMessageBox("图像打不开");return;}for(int i=0;i<256;i++) //初始化直⽅图数组{ m_hist[i]=0;m_yuan[i]=0;}m_bHist=false;}{int nw=m_dib.GetDIBWidth();int nh=m_dib.GetDIBHeight();for(int j=0;jfor(int i=0;i{BYTE temp=m_dib.m_pdata[j*nw+i];m_yuan[temp]++;}}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 count[256]={0};//定义⼀个数组,⽤于存放灰度级个数float p[256];//定义⼀个数组,⽤于存放灰度级出现频率//对图像进⾏直⽅图均衡化处理for(i=0;ifor(j=0;j{k=m_dib.m_pdata[i*nw+j];//计算灰度级个数count[k]++;}for(k=0;k<256;k++)p[k]=count[k]/(nw*nh*1.0f);float c[256]={0};float sum=0.0;int ngray[256];//新的灰度级for(k=0;k<256;k++)//计算累积频率{sum+=p[k];c[k]=sum;ngray[k]=(int)(255.0*c[k]+0.5);}for(i=0;ifor(j=0;j{k=m_dib.m_pdata[i*nw+j];m_dib.m_pdata[i*nw+j]=ngray[k];}{int nw=m_dib.GetDIBWidth();int nh=m_dib.GetDIBHeight();for(int j=0;jfor(int i=0;i{BYTE temp=m_dib.m_pdata[j*nw+i];m_hist[temp]++;}}//将修改的m_pdata的数据赋值给m_pDIBData,以显⽰修改的结果m_dib.UpdateData();m_bHist=true;//将修改的m_pdata的数据赋值给m_pDIBData,以显⽰修改的结果 m_dib.UpdateData(); //刷新屏幕Invalidate();}4、实验结果C++编程结果:。

数字图像处理直方图处理

数字图像处理直方图处理

0.2
0.1
0.10
0.05 0
1 7 2 7 3 7
0.03
6 7
0.02
1
原图 ps(Sk) 0.25 0.20 0.19 0.15 0.10 0.05 0
1 7 2 7
4 7
5 7
rk
0
1/7
3/7
(c)
5/7
1
zk
希望直方图
ps(Sk)
0.25
0.24 0.21 0.11
0.25 0.20 0.15 0.10 0.05
直方图均衡化计算列表
序 号 1 2 3 4 5 6 7 运算 列出原始灰度级rk 0 1 2 步骤和结果 3 4 5 6
122
7
81
统计原始直方图各级灰度 790 1023 850 656 329 245 nk 计算原始直方图rk的pk 计算累计直方图sk 取整sk=int[(L-1)sk +0.5] 确定映射关系(rk→sk) 统计新直方图各灰度级n’k
直方图的作法
a) 将图像的灰度级归一化
若图象的灰度级为0,1, , L 1, 则令 L 1 则0 rk 1. L为灰度级层次数,Lk rk 1 rk为灰度间隔 rk k , k 0,1, , L 1
b) 计算各灰度级的像素频数(或概率)
设nk 为灰度级为rk的像素的个数,N 为总的像素个数,令 N nk 是像素值为k的像素的频数,pr (rk )为其出现的概率 pr (rk ) nk
0.19 0.19 0.25 0.44 0.21 0.65 0.16 0.81 0.08 0.89 0.06 0.95
0.03 0.98
0.02 1.00

数字图像处理-直方图处理与函数绘图

数字图像处理-直方图处理与函数绘图

p(r)图 灰 像 度 上 为 的 r的 总 像 像 素 素 数 数
n
i 1
p(ri )
1
直方图处理与函数绘图
一.灰度级直方图的概念
灰度级
123456
灰度级的像素数 7 4 3 7 2 13
图像的直方图
直方图处理与函数绘图
一. 灰度级直方图的概念
灰度图像的直方图
直方图处理与函数绘图
二. 直方图的作法
直方图处理与函数绘图
三. 直方图的性质
不同图象对应相同的直方图
直方图处理与函数绘图
四. 直方图均衡化
1.原因
大多数自然图像,其灰度分布集中在较窄的区间,引起图像细 节不够清晰。例如一幅过曝光的图片,其灰度级都集中在高亮度范 围内,而曝光不足的图片,其灰度级集中在低亮度范围内,具有这 样直方图的图片其可视效果比较差。而采用直方图均衡化修正后可 使图像的灰度间距拉开或使灰度分布均匀,从而增大反差,使图像 细节清晰,增强对比度。
直方图处理与函数绘图
四. 直方图均衡化
2.直方图均衡化步骤
(求(13)变)对用换给新后定灰的的度新待代灰处替度理旧;图灰像度统,计求其出直Ps方(s)图,,这求一出步Pr是(r近k)似过nk程/N ,应
(根2)据根处据理统目计的出尽的量直做方到图合采理用,累同积时分把布灰函度数值作相变等换或, 近似地合
3.直方图均衡化MATLAB的实现
(2)imadjust函数
功能:通过直方图变换调整对比度。 格式:g=imadjust(f, [low_in high_in],[low_out
high_out], gamma) 说明:g=imadjust(f, [low_in high_in], [ low_out high_out , gamma)返回图像f经直方图调整后的图像g,gamma为校正量 [low_in high_in]为原图像中要变换的灰度范围,[ low_out high_out 指定了变换后的灰度范围;newmap=imadjust(map, [low high] [bottom top], gamma)调整索引色图像的调色板map。此时若 [low high]和[bottom top]都为2×3的矩阵,则分别调整R、 G、B 3个分量。

数字图像处理第3章_图像直方图

数字图像处理第3章_图像直方图
原图像的直方图
g f r ( x , y , t ) f g ( , x , y , t ) f b ( x , , y , t )
3 图像灰度直方图
3.2 灰度直方图的性质
g f r ( x , y , t ) f g ( , x , y , t ) f b ( x , , y , t )
3 图像灰度直方图
3.3 灰度直方图的应用
✓ 用于判断图像量化是否恰当
g f r ( x , y , t ) f g ( , x , y , t ) f b ( x , , y , t )
3 图像灰度直方图
3.3 灰度直方图的应用
✓ 用于确定图像二值化的阈值
g(x,y)10
f(x,y)T f(x,y)T
g f r ( x , y , t ) f g ( , x , y , t ) f b ( x , , y , t )
第3章 图像灰度直方图
内容: ✓ 灰度直方图的基本概念 ✓ 灰度直方图的性质 ✓ 灰度直方图的应用
g f r ( x , y , t ) f g ( , x , y , t ) f b ( x , , y , t )
3 图像灰度直方图
3.2 灰度直方图的性质
一幅图像分成多个区域,多个区域的直方图之和即为原图像的直方图
g f r ( x , y , t ) f g ( , x , y , t ) f b ( x , , y , t )
3 图像灰度直方图
3.3 灰度直方图的应用
✓ 用于判断图像量化是否恰当 ✓ 用于确定图像二值化的阈值 ✓ 当物体部分的灰度值比其他部分灰度值大时,可利用 直方图统计图像中物体的面积 ✓ 计算图像信息量H(熵)
3 图像灰度直方图

数字图像处理_期末考试及答案(三篇)

数字图像处理_期末考试及答案(三篇)

《数字图像处理》试卷答案(2009级)一、名词解释(每题4分,共20分)1.灰度直方图:灰度直方图(histogram)是灰度级的函数,它表示图象中具有每种灰度级的象素的个数,反映图象中每种灰度出现的频率。

它是多种空间域处理技术的基础。

直方图操作能够有效用于图像增强;提供有用的图像统计资料,其在软件中易于计算,适用于商用硬件设备。

灰度直方图性质:1)表征了图像的一维信息。

只反映图像中像素不同灰度值出现的次数(或频数)而未反映像素所在位置。

2)与图像之间的关系是多对一的映射关系。

一幅图像唯一确定出与之对应的直方图,但不同图像可能有相同的直方图。

3)子图直方图之和为整图的直方图。

2.线性移不变系统:一个系统,如果满足线性叠加原理,则称为线性系统,用数学语言可作如下描述:对于,若T[a+b]=aT[]+bT[]=a+b(2.15)则系统T[·]是线性的。

这里,、分别是系统输入,、分别是系统输出。

T[·]表示系统变换,描述了输入输出序列关系,反映出系统特征。

对T[·]加上不同的约束条件,可定义不同的系统。

一个系统,如果系统特征T[·]不受输入序列移位(序列到来的早晚)的影响,则系统称为移不变系统。

由于很多情况下序号对应于时间的顺序,这时也把“移不变”说成是“时不变”。

用数学式表示:对于y(n)= T[x(n)] 若y(n-)=T[x(n-)] (2.16)则系统是移不变的。

既满足线性,又满足移不变条件的系统是线性移不变系统。

这是一种最常用、也最容易理论分析的系统。

这里约定:此后如不加说明,所说的系统均指线性移不变/时不变系统,简称LSI/LTI系统。

3.图像分割:为后续工作有效进行而将图像划分为若干个有意义的区域的技术称为图像分割(Image Segmentation)而目前广为人们所接受的是通过集合所进行的定义:令集合R代表整个图像区域,对R的图像分割可以看做是将R分成N个满足以下条件的非空子集R1,R2,R3,…,RN;(1)在分割结果中,每个区域的像素有着相同的特性(2)在分割结果中,不同子区域具有不同的特性,并且它们没有公共特性(3)分割的所有子区域的并集就是原来的图像(4)各个子集是连通的区域4.数字图像处理:数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。

西交大数字图像处理第三次作业

西交大数字图像处理第三次作业

数字图像处理第三次作业姓名:班级:学号:提交日期: 2015 年 3 月 31 日1、把附件图像的直方图画出; ( 1)问题分析:强度直方图图形化显示不同的像素值在不同的强度值上的出现频率,对于灰度图像来说强度范围为 [0~255] 之间,对于 RGB 的彩色图像可以独立显示三种颜色的强度直方图。

强度 直方图是用来寻找灰度图像二值化阈值常用而且是有效的手段之一, 如果一幅灰度图像的直方图显示为两个波峰, 则二值化阈值应该是这两个波峰之间的某个灰度值。

同时强度直方图是调整图像对比度的重要依据。

直方图实现方法: 对一幅灰度图像从上到下, 从左到右扫描每个像素值, 在每个灰度值上计算像素数目,以这些数据为基础完成图像直方图的绘制。

( 2)处理结果:citywall.bmpcitywall1 直 方 图( 调 用 imhist 函 数 )citywall1 直 方 图 ( 自 己 编 写 )100000.0290000.0188000 0.016 70000.0146000度 0.012密5000率 0.01概4000的 0.008素3000像0.006200010000.0040.00250 100 150 200 2500 50 100150 200 250灰 度 值10000citywall2 直 方 图 ( 调 用 imhist 函 数 )0.1citywall2 直 方 图 ( 自 己 编 写 )90000.0980000.0870000.076000度 0.065000密率 0.05概4000的 0.043000素像20000.0310000.020.010 50 100 150 200 2500 50 100150 200 250灰 度 值elain.bmp5000 4500 4000 3500 30002500elain1 直 方 图 ( 调 用 imhist 函 数 ) elain1 直 方 图 ( 自 己编 写 )0.05 0.045 0.04 0.035度 0.03密率概0.0252000的 0.02 1500素像10000.0155000.010.00550 100 150 200 2500 50 100150 200 250灰 度 值5000elain2 直 方 图 ( 调 用 imhist 函 数 )0.05elain2 直 方 图 ( 自 己 编 写 )4500 0.045 4000 0.04 35000.0353000度 0.03密2500率2000概 0.025的 0.021500素像10000.0155000.010.00550 100 150 200 2500 50 100150 200 250灰 度 值5000elain3 直 方图 ( 调 用 imhist 函 数 )0.1elain3 直 方 图 (自 己 编 写 )45000.094000 0.08 35000.073000度 0.062500密率2000概 0.05的1500素 0.04像10000.035000.020.010 50 100 150 200 2500 50 100150 200 250灰 度 值lena.bmp5000lena1 直 方 图 ( 调 用 imhist 函 数 )0.1lena1 直 方 图 ( 自 己 编 写 )45000.09 4000 0.08 35000.073000度 0.062500密率2000概 0.05的1500 素 0.04像10000.035000.020.0150 100 150 200 2500 50 100150 200 250灰 度 值5000lena2 直 方 图 ( 调 用 imhist 函 数 )0.1lena2 直 方 图 ( 自 己 编 写 )45000.094000 0.08 35000.073000度 0.062500 密率 0.05概2000的 0.041500素像10000.035000.020.0150 100 150 200 2500 50 100150 200 250灰 度 值5000lena3 直 方 图 ( 调 用 imhist 函 数 )lena3 直 方图 ( 自 己 编 写 )0.0245000.01840000.01635000.0143000度 0.0122500密率0.012000概的1500素 0.008像10000.0065000.0040.0020 50 100 150 200 2500 50 100150 200 250灰 度 值woman.bmpx 10 5 21.81.61.41.210.80.60.40.25x 10 21.81.6woman1 直方图(调用 imhist 函数)woman1直方图(自己编写)0.020.0180.0160.014度0.012密率概 0.01的素 0.008像0.0060.0040.0025010015020025050100150200250灰度值woman2 直方图(调用 imhist 函数)woman2直方图(自己编写)0.040.0351.40.03 1.2度 0.0251密率0.02概0.8的0.6素0.015像0.40.01 0.20.005 0050100150200250050100150200250 0灰度值( 3)结果分析及总结:本文分别采用imhist 函数和自己编写的程序求取图像的直方图。

图像的直方图均衡、匹配及图像分割【数字图像处理大作业】

图像的直方图均衡、匹配及图像分割【数字图像处理大作业】

数字图像处理—————————————————————————————Porject3:图像的直方图均衡、匹配及图像分割摘要:本文利用matlab的编程,绘出图像的直方图。

本文用了一般的直方图均衡和自适应的直方图均衡的算法分别对各个直方图进行均衡,得到了不同的效果。

本文讨论了单映射规则和组映射规则的直方图匹配技术。

本文采用了一般的直方图图像分割技术对图像进行分割,同时还讨论了一种基于梯度的直方图阈值图像分割技术。

2012 年4 月12 日星期四项目题目:共10 幅经变亮或者变暗处理的源图像;要求:1.把附件图像的直方图画出;2.把所有图像进行直方图均衡;输出均衡后的图像和源图像进行比对;分析改善内容;3.进一步把图像按照对源图像直方图的观察,各自指定不同源图像的直方图,进行直方图匹配,进行图像增强;4.利用直方图对图像elain和woman 进行分割;技术分析1. 画出附件的直方图,先利用读取图像数据的函数将图像的数据点读取出来,然后再对数据点的值进行排序,然后再统计每个灰度值出现的次数,然后再用这些数据值绘出直方图2. 把所有图像进行直方图均衡;输出均衡后的图像和源图像进行比对;分析改善内容;先说说直方图均衡的原理:从数学上来说图像直方图是图像各灰度值统计特性与图像灰度值的函数,它是对图像中每一灰度值出现频率的统计,从图形上来说,它是一个二维图,横坐标表示图像中各个像素点的灰度级,纵坐标为各个灰度级上图像各个像素点出现的次数或概率。

灰度直方图性质:①表征了图像的一维信息。

只反映图像中像素不同灰度值出现的次数(或频数)而未反映像素所在位置。

②与图像之间的关系是多对一的映射关系。

一幅图像的直方图基本上可描述图像的概貌,如图像的阴暗状况和对比度等特征都可以通过直方图反映出来。

既然一幅图像的概貌可以通过直方图反映出来,反之,可以通过修改直方图的方法来调整图像的灰度分布情况,因为直方图反映的是一个图像的灰度值的概率统计特征,所以,基于直方图的图像增强技术是以概率统计学理论为基础的,直方图反映的是一个图像的灰度值的概率统计特征。

数字图像处理3-直方图均衡,直方图匹配,空间滤波相关等

数字图像处理3-直方图均衡,直方图匹配,空间滤波相关等

Timg(原图) im_1(MATLAB均衡处理) im_2(ps均衡处理)原图的rgb直方图r通道直方图(原图)g通道直方图(原图)b通道直方图(原图)r通道直方图(im_1)g通道直方图(im_1)b通道直方图(im_1)r通道直方图(im_2)g通道直方图(im_2)b通道直方图(im_2)这里找到了一张对比度较低的图像timg,其原本的对比度很低。

之后分别用MATLAB和ps对其进行了直方图均衡,生成了im_1与im_2,可见其处理的效果是有区别的。

MATLAB处理的结果色彩更加艳丽但是相对于原图来说其每个区域的颜色和旁边的区域颜色差别会很巨大,就是使得边界更明显,同时对比度提高了很多。

而ps处理的结果可以看出新的直方图和原直方图相比产生了很多形状上的差别,可见ps的直方图均衡采用了更为复杂的算法。

同时图像对比度以及颜色艳丽的程度得到了提升,但是没有MATLAB处理的效果明显,保持了原图的色调以及部分颜色关系。

Ps中直方图均衡可以一键实现,因此在此不做重点描写,我们来看如何用MATLAB实现这种操作。

MATLAB代码如下:主程序:im=imread('timg.jpg');im_r=change(im(:,:,1));im_g=change(im(:,:,2));im_b=change(im(:,:,3));im1(:,:,1)=im_r;im1(:,:,2)=im_g;im1(:,:,3)=im_b;figure;imshow(im1);imwrite(im1,'im1.jpg');Change函数:function [n] = change(m)n=m;sum=0;for i=0:255for j=1:407for k=1:500if(m(j,k)==i)sum=sum+1;endendendchan=sum/(407*500);chan1=fix(chan*255+0.5);for j=1:407for k=1:500if(m(j,k)==i)n(j,k)=chan1;endendendend[x,xout] = hist(n(:), 0:255);figure;bar(xout, x); xlim([0 255]);MATLAB其实本身有实现直方图均衡效果的函数,这里为了理解算法自己做了这个函数。

数字图像处理作业第三次直方图处理

数字图像处理作业第三次直方图处理

数字图像处理作业(第三次)直方图处理第一题第二题(例3.6)1. 问题:1)编写函数Y=MyHisteq(X), 对灰度图象X进行直方图均衡化,得到均衡化后的图像Y,假设X的数据类型为uint8。

2)利用自己编写的直方图均衡化函数,重现例3.6中的实验,即对图3.16中的图像进行直方图均衡化。

2.程序:(1) 函数程序:function Y = MyHisteq(X)%对灰度图象X进行直方图均衡化,得到均衡化后的图像Y[m,n]=size(X);A=zeros(1,256);for k=0:255A(k+1)=length(find(X==k))/(m*n);endS1=zeros(1,256);for i=1:256for j=1:iS1(i)=A(j)+S1(i); %算SkendendS2=round(S1*256);for i=1:256B(i)=sum(A(find(S2==i)));endfigure,bar(0:255,B,'b');title('均衡化后的直方图');xlabel('灰度'),ylabel('出现概率')Y=X;for i=0:255Y(find(X==i))=S2(i+1);endend(2)主程序:X=imread('Fig0316(1)(top_left).tif');figure,imshow(X);Y=MyHisteq(X);figure,imshow(Y);3. 实验结果:第三题(例3.12)1. 问题:编写程序,重现例3.12中的实验,产生图3.27。

2.程序:X=imread('Fig0327(a)(tungsten_original).tif');figure,imshow(X);Y=histeq(X);figure,imshow(Y);E=4.0;k0=0.4;k1=0.02;k2=0.4;[m,n]=size(X);X1=X;Mg=sum(X1(:))/(m*n);Vg=sum(sum((X1-Mg).^2))/(m*n);for i=2:m-1for j=2:n-1X2=X1(i-1:i+1,j-1:j+1);Ms=sum(X2(:))/9;Vs=sum(sum((X2-Ms).^2))/9;if(Ms<=k0*Mg&&k1*Vg<=Vs&&Vs<=k2*Vg)X1(i,j)=E*X1(i,j);endendendfigure,imshow(X1);3. 实验结果:放大了约130倍的钨丝的SME图像:全局直方图均衡的结果:使用局部直方图统计增强后的图像:1. 问题:用自己编写编程实现中值滤波,用96页例3.14的图测试。

数字图像处理(直方图).

数字图像处理(直方图).

21
其他类型的统计图
• 误差条:errorbar x = 1:10; y = sin(x); e = std(y)*ones(size(x)); errorbar(x,y,e)
22
其他类型的统计图
• 针状图:stem x = 1:60; y = sin(x/4); stem(x,y,'markerFace','b');
explode
17
环形饼图
ph = pie([2 4 3 5],{'North','South','East','West'}); hold on; z = 0.6*exp(i*linspace(0,pi*2,100)); fill(real(z),imag(z), 0.8*[1,1,1]);
18
二阶导数:
f m, n 1 f m, n 1 2 f m, n f x m, n , 2 x
[1 -2 1]
算子(Operator)
31
点操作
Y = F (X)
32
大局域操作
JP i, j G G IP i, j
38
for k = 1:1000
a(k) = a(k-1)+1; end 并行结构:a = [1:1000]+1;
6.递归过程
an = F(an-1) 计算过程中存在着相似的 部分,这里以阶乘为例 给出递归程序。
function y = fractorial(n); % 递归过程 if n==0; y=1; else y=fractorial(n-1)*n; end

数字图像处理 实验 直方图均衡化实现图像增强

数字图像处理 实验 直方图均衡化实现图像增强

XXXXXXXX大学(数字图形处理)实验报告实验名称直方图均衡化实现图像增强实验时间年月日专业姓名学号预习操作座位号教师签名总评一、实验目的:掌握直方图均衡化的原理。

掌握直方图均衡化实现图像增强的实现方法。

二、实验原理:直方图是统计像数统计图,如设一张灰度图或一个通道,值0~255。

直方图如果按。

255个区分的话。

统计出来的就是,值为。

0的有几个像数,值为1的有机个像数,这样的一张表。

那么均衡化的意思就是。

这样表要均衡。

不直不于。

0有上万个像数,1只有1 个。

正常,直方图本身可以用小于255个区。

比如10个,那么这样相对图中的点就有一个映射,这时值0-9统计落在第一个区,值为10-19落第二个区。

这样的结果就会出来,10个区,10个统计数区。

这时。

你均衡就是让10区的统计数据都不会差很多。

表现出来的就是一张图上的颜色分布相对均衡。

总的来说直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。

三、实验内容:利用直方图均衡化实现图像增强。

在资源编辑器中,在主菜单下添加一名为“直方图均衡化”的菜单步骤如前面实验。

实验代码如下:if(m_DibHead->biBitCount!=8){MessageBox("当前版本仅支持256色位图的操作!","系统提示!",MB_ICONINFORMA TION|MB_OK);return;}zftjh(m_Image,m_DibHead->biWidth,m_DibHead->biHeight);Invalidate();其中函数zftjh的实现代码如下:zftjh(unsigned char *lpDib,long lWidth,long lHeight){unsigned char *lpsrc;long lresult(0);long i,j;unsigned char bMap[256];long lCount[256];for(i=0;i<256;i++)lCount[i]=0;for(i=0;i<lHeight;i++)for(j=0;j<lWidth;j++){lpsrc=lpDib+i*lWidth+j;lCount[*lpsrc]++;}for(i=0;i<256;i++){lresult=0;for(j=0;j<=i;j++)lresult+=lCount[j];bMap[i]=(lresult*255)/lHeight/lWidth;}for(i=0;i<lHeight;i++)for(j=0;j<lWidth;j++){lpsrc=lpDib+i*lWidth+j;*lpsrc=bMap[*lpsrc];}}原图为下图的左边部分,均值化以后的图为右边的部分:。

数字图像处理作业 直方图均衡

数字图像处理作业 直方图均衡

作业3:直方图均衡1.选取一张对比度不明显的彩色图像,编写MATLAB代码对RGB通道独立地进行直方图均衡,同时用PHOTOSHOP软件对其进行均衡,比较两种处理方法在效果上的差异。

使用R/G/B=image(:,:,1/2/3);提取图像的三个通道,imshow(R);显示三个通道的图像,imhist(R);显示对应颜色分量的直方图,r=histeq(R);分别对三个通道进行直方图均衡化,equated = cat(3,r,g,b);联合RGB三个数组,得到均衡化后的图像。

原图与matlab直方图均衡化后的图像原图的RGB分量均衡后的RGB分量在photoshop中处理图像后得到下图的结果。

Ps中得到的图像RGB通道独立直方图均衡得到的图像比较:选取的原图是逆光拍摄,颜色很暗,暗部细节很多。

经过matlab处理后,灰度级部分合并,灰度级较低的间隔变大,灰度级较高的间隔变小。

但对真彩色图像的直方图均衡化时,通过单纯地对RGB三个分量图像分别均衡、合并, 会使均衡后的图像出现轻微的色彩失真现象, 而且原图中灰度级较高的地方的细节部分缺失。

但是经过ps处理后的图像,原本灰度值较低的地方明显变亮,同时原本灰度值较高的地方仍然很好保留了,并没有出现matlab处理后的问题。

Ps处理后的图像色彩也很正常,没有出现失真的问题。

数字图像直方图的算法步骤:①列出原始图像的灰度级f j,j=0,1,…,L-1,②统计各灰度级的像素数目n j,j=0,1,…,L-1,③计算原始图像直方图各灰度级的频数p(f j)= n j/N,j=0,1,…,L-1,④计算累计分布函数C(j)=Σp(f k), j=0,1,…,L-1,⑤g i= INT[(g max-g min)C(f)+g min+0.5]2.阅读"Exact Hitogram Specification"这篇英文文献第二部分和第三部分,结合压缩包中MATLAB源代码,理解精确直方图均衡的算法原理,重点是借助空间滤波实现像素排序的算法原理,用(1)中图片,比较精确直方图均衡和PHOTOSHOP均衡的效果差异。

数字图像处理 第三版 (冈萨雷斯,自己整理的2)

数字图像处理 第三版 (冈萨雷斯,自己整理的2)

1. 数字数据传输通常用波特率度量,其定义为每秒钟传输的比特数。

通常的传输是以一个开始比特,一个字节(8 比特)的信息和一个停止比特组成的包完成的。

基于这个概念回答以下问题:(a) 用56K 波特的调制解调器传输一幅1024×1024、256 级灰度的图像需要用几分钟?(b) 以750K 波特[这是典型的电话DSL(数字用户线)连接的速度]传输要用多少时间?解:(a)T=M/56000=(1024×1024)×(8+2)/56000=187.25s=3.1min(b) T=M/56000=(1024×1024)×(8+2)/750000=14s2.两个图像子集S1和S2图下图所示。

对于V={1},确定这两个子集是(a)4-邻接,(b)8-邻接,(c)m-邻接。

a) S1 和S2 不是4 连接,因为q 不在N4(p)集中。

(b) S1 和S2 是8 连接,因为q 在N8(p)集中。

(c) S1 和S2 是m 连接,因为q 在集合N D(p)中,且N4(p)∩ N4(q)没有V 值的像素3. 考虑如下所示的图像分割(a) 令V={0,1}并计算p 和q 间的4,8,m 通路的最短长度。

如果在这两点间不存在特殊通路,试解释原因。

(b) 对于V={1,2}重复上题。

解:(a) 当V={0,1}时,p 和q 之间不存在4 邻接路径,因为不同时存在从p 到q 像素的4 毗邻像素和具备V 的值,如图(a)p 不能到达q。

8 邻接最短路径如图(b),最短长度为4。

m邻接路径如图(b)虚线箭头所示,最短长度为5。

这两种最短长度路径在此例中均具有唯一性。

(b) 当V={1, 2}时,最短的4 邻接通路的一种情况如图(c)所示,其长度为6,另一种情况,其长度也为6;8 邻接通路的一种情况如图(d)实线箭头所示,其最短长度为4;m 邻接通路的一种情况如图(d)虚线箭头所示,其最短长度为6.或解: (1) 在V={0,1}时,p和q之间通路的D4距离为∞,D8距离为4,Dm距离为5。

图像增强与边缘检测

图像增强与边缘检测

数字图像处理作业----第三次1、 什么是图像增强?常见算法有哪些?典型算法的程序实现,其优缺点?结果对比。

1.1图像增强的定义为了改善视觉效果或者便于人和机器对图像的理解和分析,根据图像的特点或存在的问题采取的简单改善方法或者加强特征的措施称为图像增强。

一般情况下,图像增强是按特定的需要突出一幅图像中的某些信息,同时削弱或去除某些不需要的信息的处理方法,也是提高图像质量的过程。

图像增强的目的是使图像的某些特性方面更加鲜明、突出,使处理后的图像更适合人眼视觉特性或机器分析,以便于实现对图像的更高级的处理和分析。

图像增强的过程往往也是一个矛盾的过程:图像增强希望既去除噪声又增强边缘。

但是,增强边缘的同时会同时增强噪声,而滤去噪声又会使边缘在一定程度上模糊,因此,在图像增强的时候,往往是将这两部分进行折中,找到一个好的代价函数达到需要的增强目的。

传统的图像增强算法在确定转换函数时常是基于整个图像的统计量,如:ST转换,直方图均衡,中值滤波,微分锐化,高通滤波等等。

这样对应于某些局部区域的细节在计算整幅图的变换时其影响因为其值较小而常常被忽略掉,从而局部区域的增强效果常常不够理想,噪声滤波和边缘增强这两者的矛盾较难得到解决。

1.2 图像增强的分类及方法图像增强可分成两大类:频率域法和空间域法。

前者把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。

采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则可增强边缘等高频信号,使模糊的图片变得清晰。

具有代表性的空间域算法有局部求平均值法和中值滤波(取局部邻域中的中间像素值)法等,它们可用于去除或减弱噪声。

图像增强的方法是通过一定手段对原图像附加一些信息或变换数据,有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征,使图像与视觉响应特性相匹配。

在图像增强过程中,不分析图像降质的原因,处理后的图像不一定逼近原始图像。

(精品)数字图像处理实验报告--直方图规定化

(精品)数字图像处理实验报告--直方图规定化

数字图像处理实验报告直方图匹配规定化直方图均衡化能够自动增强整个图像的对比度,但它的具体增强效果不容易控制,处理的结果总是得到全局均匀化的直方图。

实际上有时需要变换直方图,使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度。

这时可以采用比较灵活的直方图规定化。

一般来说正确地选择规定化的函数可以获得比直方图均衡化更好的效果。

所谓直方图规定化,就是通过一个灰度映像函数,将原灰度直方图改造成所希望的直方图。

所以,直方图修正的关键就是灰度映像函数。

直方图匹配方法主要有3个步骤(这里设M和N分别为原始图和规定图中的灰度级数,且只考虑N≤M的情况):(1) 如同均衡化方法中,对原始图的直方图进行灰度均衡化:(2) 规定需要的直方图,并计算能使规定的直方图均衡化的变换:(3) 将第1个步骤得到的变换反转过来,即将原始直方图对应映射到规定的直方图,也就是将所有pf(fi)对应到pu(uj)去。

一、A图直方图规定B图Matlab程序:%直方图规定化clear allA=imread('C:\Users\hp\Desktop\A.tif'); %读入A图像imshow(A) %显示出来title('输入的A图像')%绘制直方图[m,n]=size(A); %测量图像尺寸B=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255B(k+1)=length(find(A==k))/(m*n); %计算每级灰度出现的概率,将其存入B中相应位置endfigure,bar(0:255,B,'g'); %绘制直方图title('A图像直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.015])C=imread('C:\Users\hp\Desktop\B.tif');%读入B图像imshow(C) %显示出来title('输入的B图像')%绘制直方图[m,n]=size(C); %测量图像尺寸D=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255D(k+1)=length(find(C==k))/(m*n); %计算每级灰度出现的概率,将其存入D中相应位置endfigure,bar(0:255,D,'g'); %绘制直方图title('B图像直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.015])S1=zeros(1,256);for i=1:256for j=1:iS1(i)=D(j)+S1(i); %计算B灰度图累计直方图endendcounts=Bfigure,bar(0:255,counts,'r')title('A图像直方图 ')S2=zeros(1,256);for i=1:256for j=1:iS2(i)=counts(j)+S2(i);endend; %"累计"规定化直方图%对比直方图,找到相差最小的灰度级for i=1:256for j=1:255if S1(j)<=S2(i)&S1(j+1)>=S2(i)if abs(S1(j)-S2(i))<=abs(S1(j+1)-S2(i)) T(i)=j;else T(i)=j+1;endendendend%确定变换关系,重组直方图H=zeros(1,256);H(1)=S2(1);for i=2:255if T(i-1)>0for k=(T(i-1)+1):T(i)H(i)=H(i)+D(k);endelse H(i)=0;endendfigure,bar(0:255,H,'g') %显示规定化后的直方图title('A规定B后的直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.6])%显示规定图PA=C; %将各个像素归一化后的灰度值赋给这个像素for i=1:mfor j=1:nfor k=2:255if T(k-1)<=C(i,j)&C(i,j)<=T(k)PA(i,j)=k;break;endendendendfigure,imshow(PA) %显示规定化后的图像title('A规定B后图像')imwrite(PA,'guidinghua.bmp');二、用已知直方图规定A图规定灰度为[zeros(1,49),0.3,zeros(1,49),0.1,zeros(1,49),0.2,zeros(1,49),0.1,zeros(1,49 ),0.2,zeros(1,49),0.1]Matlab程序:clear allA=imread('C:\Users\hp\Desktop\B.tif'); %读入A图像imshow(A) %显示出来title('输入的A图像')%绘制直方图[m,n]=size(A); %测量图像尺寸B=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255B(k+1)=length(find(A==k))/(m*n); %计算每级灰度出现的概率,将其存入B中相应位置endfigure,bar(0:255,B,'g'); %绘制直方图title('A图像直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.015])S1=zeros(1,256);for i=1:256for j=1:iS1(i)=B(j)+S1(i); %计算原灰度图累计直方图endendcounts=[zeros(1,49),0.3,zeros(1,49),0.1,zeros(1,49),0.2,zeros(1,49),0.1,zer os(1,49),0.2,zeros(1,49),0.1];%规定化直方图figure,bar(1:300,counts,'r')title('规定化直方图')S2=zeros(1,256);for i=1:256for j=1:iS2(i)=counts(j)+S2(i);endend; %"累计"规定化直方图%对比直方图,找到相差最小的灰度级for i=1:256for j=1:256if S1(j)<=S2(i)&S1(j+1)>=S2(i)if abs(S1(j)-S2(i))<=abs(S1(j+1)-S2(i)) T(i)=j;else T(i)=j+1;endendendend%确定变换关系,重组直方图H=zeros(1,256);H(1)=S2(1);for i=2:256if T(i-1)>0for k=(T(i-1)+1):T(i)H(i)=H(i)+B(k);endelse H(i)=0;endendfigure,bar(0:255,H,'g') %显示规定化后的直方图title('规定化后的直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.6])%显示规定图PA=A; %将各个像素归一化后的灰度值赋给这个像素for i=1:mfor j=1:nfor k=2:256if T(k-1)<=A(i,j)&A(i,j)<=T(k)PA(i,j)=k;break;endendendendfigure,imshow(PA) %显示规定化后的图像title('规定化后图像')imwrite(PA,'guidinghua.bmp');。

数字图像处理实验报告实验三

数字图像处理实验报告实验三
2.设计一个检测图3-2中边缘的程序,要求结果类似图3-3,并附原理说明
代码:
I=imread('lines.png');
F=rgb2gray(I);
subplot(2,2,1);
imshow(I);
title('原始图像');
thread=130/255;
subplot(2,2,2);
imhist(F);
图5-2 添上一层(漆)
3.开运算open:
4.闭close:
5.HMT(Hit-Miss Transform:击中——击不中变换)
条件严格的模板匹配
模板由两部分组成。 :物体, :背景。
图5-3 击不中变换示意图
性质:
(1) 时,
(2)
6.细化/粗化
(1)细化(Thin)
去掉满足匹配条件的点。
图5-4 细化示意图
se = strel('ball',5,5);
I2 = imerode(I,se);
imshow(I), title('Original')
figure, imshow(I2), title('Eroded')
Matlab用imopen函数实现图像开运算。用法为:
imopen(I,se);
I为图像源,se为结构元素
构造一个中心具有菱形结构的结构元素,R为跟中心点的距离
SE = strel('rectangle',MN)
构造一个矩形的结构元素,MN可写在[3 4],表示3行4列
SE = strel('square',W)
构造一个正方形的矩阵。

(数字图像处理)灰度直方图 PPT

(数字图像处理)灰度直方图 PPT

课堂练习答案
解:黑色像素数=520+920+490+30+40+5910=7910 白色像素数
=6050+80+20+80+440+960+420=7970 足球的总像素=7910+7970=15880 足球的面积=6644.24平方毫米 像素的间距=6644.24/15880=0.42毫米
课后作业
替 换D, 并 等 式 两 端 从D到进 行 积 分
DH(p)dp [A(p)]D
因为A() 0
所以DH(p)dp A(D) 若令D 0,则0 H(p)dp A(0) 图象的面积
255
对于离散图象, H(D) NL NS
D0
PDF:通过除以图像的面积可以归一化 灰度直方图,可得到图像的概率密度函 数。
y是图象纵坐标,MAX(y) b;
I/R损伤早期脑组织
3 直方图的用途
(2)对于数字图像,有
NL NS
IOD D(i, j)
i1 j1 255
IOD kNk
k0 255
IOD kH(k)
k0
IOD 0 DH(D)dD
第2种计算方式
3 直方图的用途
(3)所以
0a0b D(x, y)dxdy 0 DH(D)dD
3. 归一化 hist[f(x,y)]/=M*N
2 直方图的计算和性质
2)直方图的性质
①不表示图像的空间信息; ②任一特定图像都有唯一直方图,但反之并不成立;
2 直方图的计算和性质
③归一化灰度直方图和面积函数可得到图像 的概率密度函数PDF和累积分布函数CDF。
因为H(D) d A(D) dD

数字图像大作业直方图均衡化(精品)

数字图像大作业直方图均衡化(精品)

数字图像大作业直方图均衡化(精品)数字图像处理作业数字图像处理作业测绘科学与技术学院测绘科学与技术学院测绘测绘0801班秦萌秦萌 0810020107班直方图均衡化假定有假定有64*64大小的图像,灰度为大小的图像,灰度为16级,概率分布如下表,试进行直方图均衡化,并画出处理前后的直方图。

理前后的直方图。

级,概率分布如下表,试进行直方图均衡化,并画出处rnkPr((rk))r0=08000.195r1=1/156500.160r2=2/15r3=3/15r4=4/15r5=5/15r6=6/15r7=7/15r77/15r8=8/156000. 1474300.1063000.0732300.0562000.04917017000410.0411500.037r9=9/151300.031r10=10/151100.027r11=11/15r12=12/15r13=13/15r14=14/15r15 =1960.023800.019700.017500.012300.007直方图的均衡化计算((1)求变换函数)求变换函数s计计::355.0160.0195.0rprprprTs195.0rprT10j)10jr11j)00jr00)()(()(()(计计s 类似地,计算出类似地,计算出s2计=0.786,,s7计s12计(2)计算)计算sk并;考虑输出图像灰度是等间隔的,且与原图像灰度范围16个等级,即要求sk=k/15,,k=0,1,2,…,,15.因而对因而对sk计计=0.502,,s8计计=0.981,,s3计计=0.864,s9计,s14计计=0.608,计=0.895,计=0.993,,s4计计=0.681,,s10计,s15计,s5计计=0.737,,s11计,s6计计=0.945,计计=0.827,,s13计计=0.922,,计=0.964,计=1.(并;考虑输出图像灰度是等间隔的,且与原图像灰度范围个等级,即要求计修正(采用四舍五入法),得到:修正(采用四舍五入法),得到:s0并=11/15,=14/15,并=3/15,,s1并,s6并,s11并并=5/15,并=12/15,并=14/15,,s2并,s7并,s12并并=8/15,并=12/15,并=14/15,,s3并,s8并,s13并并=9/15,并=13/15,并=1,,s4并,s9并,s14并并=10/15,并=13/15,并=1,,s15并,s5并,s10并并=1.并并(3)Sk的确定;的确定;由sk可知,输出图像的灰度级仅为可知,输出图像的灰度级仅为10个级别,它们是:S0=3/15,,s1=5/15,,s2=8/15,s6=12/15,,s7=13/15,,s8=14/15,(4)计算对应每个)计算对应每个sk的的nsk因为因为r0=0映射到映射到s0=3/15,所以有,所以有800个像素变成个像素变成s0=3/15。

数字图像处理 实验 直方图编程

数字图像处理 实验  直方图编程

XXXXXX大学(数字图形处理)实验报告实验名称直方图编程实验时间年月日专业姓名学号预习操作座位号教师签名总评一、实验目的:深入理解直方图的概念,学习VC++对话框中图形绘制的基本方法及步骤。

二、实验原理:通过函数变换,对在图像中像素个数多的灰度级进行展宽,而对像素个数少的灰度级进行缩减。

从而达到清晰图像的目的。

设f、g分别为原图象和处理后的图像。

1) 求出原图f的灰度直方图,设为h。

h为一个256维的向量2)求出图像f的总体像素个数Nf=m*n (m,n分别为图像的长和宽)计算每个灰度级的像素个数在整个图像所占的百分比。

hs(i)=h(i)/Nf (i=0,1, (255)3)计算图像各灰度级的累计分布hp。

4)求出新图像g的灰度值。

,...,2,1=i i=0 g=0g⋅)(255ihp=255三、实验内容:1.在点运算的主菜单中添加一名为直方图的菜单资源,命名资源ID为IDM_ZFT 。

2.利用类向导添加相应消息响应函数。

3.展开Resource选项中Dialog项,右键单击该项,选择Insert Dialog项,添加一对话框资源,并命名为IDD_ZFT_DIALOG。

4.编辑对话框资源,添加一PICTURE控件,两个button控件,并分别设置相应的ID 号(一个为ID_OK,一个为ID_CANCEL)并加入相应的消息响应函数。

5.在ID_OK的消息响应函数中加入直方图的绘制代码,见附1。

6.编译运行。

代码如下所示:CZFT::CZFT(CWnd* pParent /*=NULL*/): CDialog(CZFT::IDD, pParent){EnableAutomation();//{{AFX_DATA_INIT(CZFT)// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT}void CZFT::OnFinalRelease(){// When the last reference for an automation object is released// OnFinalRelease is called. The base class will automatically// deletes the object. Add additional cleanup required for your// object before calling the base class.CDialog::OnFinalRelease();}void CZFT::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CZFT)// NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CZFT, CDialog)//{{AFX_MSG_MAP(CZFT)//}}AFX_MSG_MAPEND_MESSAGE_MAP()BEGIN_DISPATCH_MAP(CZFT, CDialog)//{{AFX_DISPATCH_MAP(CZFT)// NOTE - the ClassWizard will add and remove mapping macros here.//}}AFX_DISPATCH_MAPEND_DISPATCH_MAP()// Note: we add support for IID_IZFT to support typesafe binding// from VBA. This IID must match the GUID that is attached to the// dispinterface in the .ODL file.// {52AFB060-5779-4786-8B26-45DFA96E5F2F}static const IID IID_IZFT ={ 0x52afb060, 0x5779, 0x4786, { 0x8b, 0x26, 0x45, 0xdf, 0xa9, 0x6e, 0x5f, 0x2f } }; BEGIN_INTERFACE_MAP(CZFT, CDialog)INTERFACE_PART(CZFT, IID_IZFT, Dispatch)END_INTERFACE_MAP()///////////////////////////////////////////////////////////////////////////// // CZFT message handlersvoid CZFT::OnOK(){// TODO: Add extra validation here//CDialog::OnOK();int i=0;CWnd *wnd1=GetDlgItem(IDC_ZFT_DIALOG);CDC *pdc=wnd1->GetDC();int y0=250;for(i=0;i<256;i++){pdc->MoveTo(i,y0);pdc->LineTo(i,y0-a[i]);}}绘制直方图运行结果如图所示:在对话窗中绘制直方图如下图所示:。

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

数字图像处理作业(第三次)直方图处理
第一题第二题(例3.6)
1. 问题:
1)编写函数Y=MyHisteq(X), 对灰度图象X进行直方图均衡化,得到均衡化后的图像Y,假设X的数据类型为uint8。

2)利用自己编写的直方图均衡化函数,重现例3.6中的实验,即对图3.16中的图像进行直方图均衡化。

2.程序:
(1) 函数程序:
function Y = MyHisteq(X)
%对灰度图象X进行直方图均衡化,得到均衡化后的图像Y
[m,n]=size(X);
A=zeros(1,256);
for k=0:255
A(k+1)=length(find(X==k))/(m*n);
end
S1=zeros(1,256);
for i=1:256
for j=1:i
S1(i)=A(j)+S1(i); %算Sk
end
end
S2=round(S1*256);
for i=1:256
B(i)=sum(A(find(S2==i)));
end
figure,bar(0:255,B,'b');
title('均衡化后的直方图');
xlabel('灰度'),ylabel('出现概率')
Y=X;
for i=0:255
Y(find(X==i))=S2(i+1);
end
end
(2)主程序:
X=imread('Fig0316(1)(top_left).tif');
figure,imshow(X);
Y=MyHisteq(X);
figure,imshow(Y);
3. 实验结果:
第三题(例3.12)
1. 问题:
编写程序,重现例3.12中的实验,产生图3.27。

2.程序:
X=imread('Fig0327(a)(tungsten_original).tif');
figure,imshow(X);
Y=histeq(X);
figure,imshow(Y);
E=4.0;k0=0.4;k1=0.02;k2=0.4;
[m,n]=size(X);
X1=X;
Mg=sum(X1(:))/(m*n);
Vg=sum(sum((X1-Mg).^2))/(m*n);
for i=2:m-1
for j=2:n-1
X2=X1(i-1:i+1,j-1:j+1);
Ms=sum(X2(:))/9;
Vs=sum(sum((X2-Ms).^2))/9;
if(Ms<=k0*Mg&&k1*Vg<=Vs&&Vs<=k2*Vg)
X1(i,j)=E*X1(i,j);
end
end
end
figure,imshow(X1);
放大了约130倍的钨丝的SME图像:全局直方图均衡的结果:使用局部直方图统计增强后的图像:
1. 问题:
用自己编写编程实现中值滤波,用96页例3.14的图测试。

2.程序:
(1) 函数程序:
function Y=mid_filter(X,n)
%自编的中值滤波函数。

X是需要滤波的图像,n是模板大小(即n×n)
[height, width]=size(X); %输入图像是p×q的,且p>n,q>n
X1=double(X);
X2=X1;
for i=1:height-n+1
for j=1:height-n+1
C=X1(i:i+(n-1),j:j+(n-1)); %取出X1中从(i,j)开始的n行n列元素,即模板(n×n的)
E=C(1,:); %是C矩阵的第一行
for k=2:n
E=[E,C(k,:)]; %将C矩阵变为一个行矩阵
end
mm=median(E); %mm是中值
X2(i+(n-1)/2,j+(n-1)/2)=mm;%将模板各元素的中值赋给模板中心位置的元素end
end
Y=uint8(X2);
end
(2) 主程序:
X=imread('Fig0335(a)(ckt_board_saltpep_prob_pt05).tif');
figure,imshow(X);
n=3;Y=mid_filter(X,n);
figure,imshow(Y);
被椒盐噪声污染的电路板X射线图像:用3×3中值滤波器降噪后的图像:。

相关文档
最新文档