直方图均衡化例题
数字图像处理计算题复习精华版
30452计算题复习一、直方图均衡化(P68)对已知图像进行直方图均衡化修正。
例:表1为已知一幅总像素为n=64×64的8bit数字图像(即灰度级数为8),各灰度级(出现的频率)分布列于表中。
要求将此幅图像进行均衡化修正(变换),并画出修正(变换)前后的直方图。
解:对已知图像均衡化过程见下表:画出直方图如下:(a)原始图像直方图(b)均衡化后直方图**以下部分不用写在答题中。
其中:①r k、n k中k = 0,1,…,7② p r (r k )= n k /n ,即计算各灰度级像素个数占所有像素个数的百分比,其中∑==kj jnn 0,在此题中n =64×64。
③ ∑==kj jrk r p s 0)(计,即计算在本灰度级之前(包含本灰度级)所有百分比之和。
④ ]5.0)1int[(+-=计并k k s L s ,其中L 为图像的灰度级数(本题中L = 8),int[ ]表示对方括号中的数字取整。
⑤ 并k k s s =⑥ n sk 为映射对应关系r k →s k 中r k 所对应的n k 之和。
⑦ n n s p sk k s /)(=,或为映射对应关系r k →s k 中r k 所对应的p r (r k )之和。
二、 模板运算 使用空间低通滤波法对图像进行平滑操作(P80)空间低通滤波法是应用模板卷积方法对图像每一个像素进行局部处理。
模板(或称掩模)就是一个滤波器,它的响应为H (r ,s ),于是滤波输出的数字图像g(x ,y )用离散卷积表示为)6.2.4(),(),(),(∑∑-=-=--=lls k k r s r H s y r x f y x g式中:x ,y = 0,1,2,…,N -1;k 、l 根据所选邻域大小来决定。
具体过程如下: (1)将模板在图像中按从左到右、从上到下的顺序移动,将模板中心与每个像素依次重合(边缘像素除外); (2)将模板中的各个系数与其对应的像素一一相乘,并将所有的结果相加; (3)将(2)中的结果赋给图像中对应模板中心位置的像素。
直方图的均衡化
三、例题演示
设有1幅64x64,8bit灰度图像,其直方 图见图1,所用均衡化变换函数(即累积 直方图)见图2,均衡化后的直方图见图 3。
直方图均衡化计算列表
序号
运算
1 列出原始图灰度级Sk,k=0,1,…7
0
1
2
2 统计原始直方图各灰度级象素数Nk 790 1023 850
3 用式1计算原始直方图(图1)
对图像空间域点的增强过程是通过增强函数t=EH(s)来完成的, t、s分别为目标图像和原始图像上的像素点(x,y)处的灰度值。
在进行均衡化处理时,增强函数EH需要满足两个条件: 1)、增强函数EH(s)在0≤s≤L-1的范围内是一个单调递增函数,
这个条件保证了在增强处理时没有打乱原始图像的灰度排列次序; 2)、对于0≤s≤L-1应当有0≤EH(s)≤L-1,它保证了变换过程
0 sk 1
k=0,1,…L-1
公式(2)
根据该方程可以由原图像的各像素灰度值直接得到直方图均衡化后各 像素的灰度值。
在实际处理变换时,一般先对原始图像的灰度情况进行统计分析,并
计算出原始直方图分布,然后根据计算出的累计直方图分布 t k ,按式 tkint[(L1)tk0.5]对其取整扩展并得出原灰度s k 到 t k 的灰度映
%step1:get histogram
for i=1:m;
for j=1:n;
k=plane(i,j);
tmhist(k)=tmhist(k)+1;
end
end
四、直方图均衡化的原理程序(lm2.m)
%step2:get cdf
cdf(1)=tmhist(1);
for i=2:256
▪ 其实在MATLAB中,用imhist函数求图像直方图,histeq函数可 以实现直方图均衡化操作(histogram equalization)。
数字图像处理课程设计报告---直方图均衡化
设计题目:直方图均衡化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///////////////////////////////////////////////////////////////////////////// // CCqxhistView1,,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 nn r p k k =)(1,,2,1,010-=≤≤l k r kIMPLEMENT_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 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/destructionCCqxhistView::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 printingBOOL 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;j<nh;j++)for(int i=0;i<nw;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;i<nh;i++)for(j=0;j<nw;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;i<nh;i++)for(j=0;j<nw;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;j<nh;j++)for(int i=0;i<nw;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++编程结果:。
数字图像处理期末考试题库
数字图像处理期末考试题库某数字图像处理的主要内容及特点图像获取、图像变换、图像增强、图像恢复、图像压缩、图像分析、图像识别、图像理解(1)处理精度高,再现性好。
(2)易于控制处理效果。
(3)处理的多样性。
(4)图像数据量庞大。
(5)图像处理技术综合性强。
某图像增强:通过某种技术有选择地突出对某一具体应用有用的信息,削弱或抑制一些无用的信息。
图像增强不存在通用理论。
图像增强的方法:空间域方法和变换域方法。
某图像反转:S=L-1-r1.与原图像视觉内容相同2.适用于增强嵌入于图像暗色区域的白色或灰色细节。
某对数变换S=C某log(1+r)c为常数,r>=0作用与特点:对数变换将输入中范围较窄的低灰度值映射为输出中较宽范围的灰度值,同时,对输入中范围较宽的高灰度值映射为输出中较窄范围的灰度值。
对数函数的一个重要特征是可压缩像素值变化较大的图像的动态范围;某幂律(伽马)变换=c某(r+ɛ)ɤ伽马小于1时减小图像对比度,伽马大于1时增大对比度。
某灰度直方图:是数字图像中各灰度级与其出现的频数间的统计关系。
某直方图均衡化:直方图均衡化就是通过变换函数将原图像的直方图修正为均匀的直方图,即使各灰度级具有相同的出现频数,图象看起来更清晰。
直方图均衡化变换函数必须为严格单调递增函数。
直方图均衡化的特点:›1.能自动增强图像的对比度2.得到了全局均衡化的直方图,即均匀分布3.但其效果不易控制某直方图规定化(匹配):用于产生处理后有特殊直方图的图像的方法某空间滤波即直接对图像像素进行处理。
获得最佳滤波效果的唯一方法是使滤波掩模中心距原图像边缘的距离不小于(n-1)/2个像素。
某平滑滤波器用于模糊处理和减小噪声。
平滑线性空间滤波器的输出是:待处理图像在滤波器掩模邻域内的像素的简单平均值。
优点:减小了图像灰度的“尖锐”变化,故常用于图像降噪。
负面效应:模糊了图像的边缘,因为边缘也是由图像灰度的尖锐变化造成的。
空间均值处理的重要应用是,为了对感兴趣的物体得到一个粗略的描述而模糊一幅图像。
图像直方图的均衡化处理图的均衡化
图像直⽅图的均衡化处理图的均衡化图像直⽅图的均衡化处理⼀,技术要求1.1,利⽤matlab提供的函数处理 (2)1.2,利⽤matlab⾃⾏编辑代码处理 (3)⼆,基本原理 (3)2.1,直⽅图的均衡化 (3)2.2,直⽅图的标准化 (3)三,建⽴模型描述 ......................................................................... 3~43.1,利⽤matlab提供的函数处理 (4)3.2,利⽤matlab⾃⾏编辑代码 (4)四,源程序代码 ............................................................................. 5~64.1,绘制图像直⽅图的代码 (5)4.2,绘制图像均衡化后直⽅图的代码 (5)4.3,显⽰均衡化后图像的代码 (6)五,调试过程及结论 ..................................................................... 6~85.1,在编辑窗⼝键⼊绘制直⽅图的源代码得到的输出结果为图2 (6)5.2,利⽤matlab函数绘制的图像直⽅图标准化的输出结果如图3..75.3,直⽅图均衡化输出结果如图4所⽰。
(8)六,⼼得体会 (9)七,参考⽂献 (9)图像直⽅图的均衡化处理⼀,技术要求1.1,利⽤matlab提供的函数处理利⽤matlab提供的函数画出⼀幅图像的直⽅图,对其进⾏均衡化和标准化处理,并⽐较均衡化(标准化)后图像和原图像的区别。
1.2,利⽤matlab⾃⾏编辑代码处理利⽤matlab⾃⾏编辑代码,实现⼀幅图像的直⽅图显⽰和均衡化的处理,同样⽐较处理前后两幅图像的区别,了解图像均衡化的效果和实际运⽤。
⼆,基本原理直⽅图是多种空域处理技术的基础。
它能有效的⽤于图像增强。
数字图像处理作业 直方图均衡
作业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均衡的效果差异。
直方图均衡化、规定化程序及结果
一、直方图均衡化程序A=imread('a.jpg');I=rgb2gray(A);J=histeq(I);figure,imshow(A)figure,imshow(I);title('原灰色图像');figure,imhist(I);title('原图像的灰度直方图');figure,imhist(J);title('均衡化图像的直方图');figure,imshow(J);title('均衡化图像');图片1结果原灰色图像10002000300040005000600070008000原图像的灰度直方图0501001502002500均衡化图像的直方图050100150200250图片2结果0原图像的灰度直方图050100150200250020004000600080001000012000均衡化图像的直方图050100150200250均衡化图像二、直方图规定化程序I=imread('tire.tif');J=histeq(I,32);[counts,x]=imhist(J);Q=imread('a.jpg');figure;imshow(Q);title('原图像');A=rgb2gray(Q);figure;imhist(A);title('原图像直方图');M=histeq(A,counts);figure;imshow(M);title('直方图规定化后的图像'); figure;imhist(M);title('规定直方图');Figure;subplot(1,2,1); imhist(I,64); subplot(1,2,2); imhist(J,64); 图片1结果原图像10002000300040005000600070008000原图像直方图050100150200250直方图规定化后的图像200040006000800010000120001400016000规定直方图050100150200250图片2结果原图像0原图像直方图050100150200250直方图规定化后的图像200040006000800010000120001400016000规定直方图050100150200250。
直方图均衡化
直⽅图均衡化今天学习了下直⽅图均衡化的原理。
先来看看维基百科上的⼀个例⼦: 从这张未经处理的灰度图可以看出,其灰度集中在⾮常⼩的⼀个范围内。
这就导致了图⽚的强弱对⽐不强烈。
直⽅图均衡化的⽬的,就是使得灰度分布尽可能平均地“填满”整个灰度空间(0~255),就是做到直⽅图的上界是⼀条平⾏于X轴的直线(理想化)。
有了这个⽬标之后,开始推导。
这个推导过程从连续函数出发。
第⼀步:建⽴⼀个从灰度r到s的映射s=T(r)第⼆步:将均衡化后的直⽅图的分布H B 表⽰成原图灰度分布H A 的函数 --> H B(s)=H A(r)/T(r),原理见下。
第三步:理想化的灰度分母应为常数,得T(r)=k*H A(r),不妨另:k=C/A o .(A o为所有像素数)第四步:两边同时积分(0->L),由密度函数的归⼀化条件得 : s=T(L)=C,因为s取值也是0->L,所以C=L。
第五步:把连续函数写成离散形式以适应计算机的处理。
(写出来⼤概就是这样,⾃⼰也能理解,但是总是感觉怪怪的) 可以看出,直⽅图均衡化只是将直⽅图进⾏了伸缩变换,或者说是⼀个搬移。
将变化律低的部分挤压,将变化率⾼的部分拉伸,得到⼀个两边变化陡峭中间平滑的灰度分布(单峰的话就很明显)。
可以看看维基百科上直⽅图均衡化之后的例⼦: 通过观察可以发现,由于中间部分灰度被拉伸了,灰度的取值变得不是很“连续”。
这个就是直⽅图均衡化的⼀个缺点吧。
(其实是离散的问题)———————————————————————————————————————————————————————————————————————————————闲着⽆聊搞了个最简单的直⽅图均衡化⼩程序,⼤家可以⾃⼰拿去试⼀下。
接下来的计划是做⾃适应直⽅图均衡化和对⽐对限制的直⽅图均衡化。
代码:#include <iostream>#include <string>#include <io.h>#include <opencv2/opencv.hpp>#include<math.h>#include<cv.h>using namespace std;using namespace cv;void main(int argc, char** argv){//变量定义//图⽚类IplImage *src , *dst;IplImage *histframesrc , *histframedst;CvSize size;//直⽅图类CvHistogram *histo_src , *histo_dst;int scale;float histmin,histmax;int bins=256;float range[]={0,255};float *ranges[]={range};//杂家int i,j,k,m,n; //循环变量……⽽已float s_r[256]; //S(r)映射函数//---------------------------------------------------------------src=cvLoadImage("11.jpg",0); //图⽚变量初始化cvShowImage("src",src);size=cvGetSize(src);dst=cvCreateImage(size,8,1);histo_src=cvCreateHist(1,&bins,CV_HIST_ARRAY,ranges); //直⽅图初始化histo_dst=cvCreateHist(1,&bins,CV_HIST_ARRAY,ranges);cvCalcHist(&src,histo_src,0,0); //计算直⽅图cvNormalizeHist(histo_src,1); //归⼀//累加,求S(r)映射s_r[0]=cvQueryHistValue_1D(histo_src,0);for(i=1;i<=255;i++){s_r[i]=s_r[i-1]+cvQueryHistValue_1D(histo_src,i);}//当然要把是S(r)归⼀到255啦for(i=0;i<=255;i++){s_r[i]=cvRound(s_r[i]*255);}//遍历图像并由sr关系进⾏直⽅图均衡化啦CvScalar s;for(m=0;m<size.height;m++){for(n=0;n<size.width;n++){s=cvGet2D(src,m,n);i=s.val[0];i=s_r[i];s.val[0]=i;cvSet2D(dst,m,n,s);}}//计算dst直⽅图cvCalcHist(&dst,histo_dst,0,0);cvNormalizeHist(histo_dst,1);//SHOWOFF⼀下啦cvShowImage("dst",dst);scale=1;//画出src和dst的直⽅图histframesrc=cvCreateImage( cvSize(bins*scale,256),8,1);histframedst=cvCreateImage( cvSize(bins*scale,256),8,1);//src的cvGetMinMaxHistValue(histo_src , &histmin , &histmax , 0 , 0 );for(int i = 0; i < bins; i++){/** 获得直⽅图中的统计次数,计算显⽰在图像中的⾼度 */float bin_val = cvGetReal1D(histo_src->bins,i);bin_val=bin_val*255/histmax;s.val[0]=cvRound(bin_val);cvRectangle(histframesrc,cvPoint(i*scale,256),cvPoint((i+1)*scale,256-bin_val),s,-1,8,0); }cvShowImage("src's hisogram",histframesrc);//dst的cvGetMinMaxHistValue(histo_dst , &histmin , &histmax , 0 , 0 );for(int i = 0; i < bins; i++){/** 获得直⽅图中的统计次数,计算显⽰在图像中的⾼度 */float bin_val = cvGetReal1D(histo_dst->bins,i);bin_val=bin_val*255/histmax;cout<<bin_val<<"\t";s.val[0]=cvRound(bin_val);cvRectangle(histframedst,cvPoint(i*scale,256),cvPoint((i+1)*scale,256-bin_val),s,-1,8,0); }cvShowImage("dst's hisogram",histframedst);//输出sr试⼀下for(i=0;i<=255;i++)cout<<s_r[i]<<"\n";for(;;)if(cvWaitKey(0)==27)break;}结果:(直⽅图变得平缓了但是中间部分变得稀疏了)。
《直方图》典型例题
《直方图》典型例题例1. 某区七年级有3000名学生参加“安全伴我行知识竞赛”活动.为了了解本次知识竞赛的成绩分布情况,从中抽取了200名学生的得分(得分取正整数,满分为100分)进行统计.分组 频数 频率 49.5~59.5 10 59.5~69.5 16 0.08 69.5~79.5 0.20 79.5~89.5 62 89.5~100.5720.36请你根据不完整的频率分布表,解析下列问题: (1)补全频数分布直方图;(2)若将得分转化为等级,规定得分低于59.5分评为“D ”,59.5~69.5分评为“C ”,69.5~89.5分评为“B ”,89.5~100.5分评为“A ”.这次全区七年级参加竞赛的学生约有多少学生参赛成绩被评为“D ”?如果随机抽查一名参赛学生的成绩等级,则这名学生的成绩被评为“A ”、“B ”、“C ”、“D ”哪一个等级的可能性大?请说明理由. 思路探索:(1)直方图缺第一组和第三组,通过计算可知,第一组的频率为0.05,第三组的频数为20,我们可根据第一、三两组的频数10、20画出两组的直方图.(2)这名学生的成绩被评为“A ”、“B ”、“C ”、“D ”哪一个等级的可能性大?可转化为“被评为“A ”、“B ”、“C ”、“D ”哪一个等级的频率较大”频率大的可能性就大. 解析:(1)图略 (2)由表知:评“D ”的频率是10120020,由此估计全区七年级参加竞赛的学生约120×3000=150(人)被评为“D ”∵P (A )=0.36,P (B )=0.51,P (C )=0.08,P (D )=0.05,∴P (A )>P (B )>P (C )>P (D ),∴随机抽查一名参赛学生的成绩等级“B ”的可能性大.规律总结:运用直方图解题,要综合直方图的特点和频率、频数的知识综合起来解题. 例 2. 某市对当年初中升高中数学考试成绩进行抽样分析,试题满分100分,将所得成绩(均为整数)整理后,绘制了如图所示的统计图,根据图中所提供的信息,回答下列问题: (1)共抽取了多少名学生的数学成绩进行分析?(2)如果80分以上(包括80分)为优生,估计该市的优生率为多少?(3)该年全市共有22000人参加初中升高中数学考试,请你估计及格(60分及60分以上)人数大约为多少?思路探索:(1)计算学生总数的时候,我们可以把各组频数进行相加即可得出:共抽取了300名学生的数学成绩进行分析;(2)在这300名学生中,共有105名学生80分以上(包括80分),20 10 30 40 50 60 70 80 166272频数成绩()49.5 59.5 69.5 79.5 89.5 100.5在样本里面的优生率为35%,根据样本估计总体可知,该市的优生率为大约是35%;(3)在这300个学生中,60分及60分以上人数为210人,频率为0.7, 22000×0.7=15400(人),所以全市60分及60分以上人数估计为15400人.规律总结:利用样本估计总体的时候,只要样本的选取具有代表性和广泛性,根据样本的频率就可以估计总体的频率.。
直方图直方图均衡化增强
直方图均衡化可以改善医学影像的对比度,使医生能够更清晰地观察病变区域,从而提高诊断的准确 性和可靠性。
病理分析
在病理切片分析中,直方图均衡化可以增强细胞核和染色体的细节,有助于病理医生进行更准确的诊 断和分类。
遥感图像增强
土地利用分类
通过直方图均衡化增强遥感图像的对比度,可以更好地区分不同类型的土地利用,如森 林、城市、农田等。
要点二
详细描述
多尺度直方图均衡化的基本思想是将图像分解为多个尺度 的小波系数,每个尺度上的小波系数具有不同的空间分辨 率和频率特性。在每个尺度上进行直方图均衡化,可以增 强图像在该尺度上的细节和边缘信息。通过将多个尺度上 的结果进行融合,可以得到增强后的图像。这种方法能够 更好地处理图像中的高频信息和边缘细节,提高图像的视 觉效果。
联合直方图均衡化
总结词
联合直方图均衡化是一种改进的直方图均衡化方法, 通过联合考虑多个图像或图像的多个通道进行直方图 均衡化,以增强图像的对比度和色彩信息。
详细描述
联合直方图均衡化的基本思想是同时对多个图像或图 像的多个通道进行直方图均衡化。通过联合处理,可 以增强图像的对比度和色彩信息,提高图像的视觉效 果。在实际应用中,可以同时对RGB三个通道进行联 合直方图均衡化,以增强彩色图像的色彩信息;也可 以对相邻帧的图像进行联合直方图均衡化,以提高视 频的清晰度和对比度。
可能会改变原始图像的灰度分布
01
直方图均衡化会改变原始图像的灰度分布,可能导致一些细节
信息的丢失。
对噪声敏感
02
在存在噪声的情况下,直方图均衡化可能会放大噪声,影响增
强效果。
对动态范围较小的图像效果不佳
03
对于动态范围较小的图像,直方图均衡化可能无法显著提高对
直方图均衡化
图像的灰度直方图是一个1-D的离散函数
h h ((ff)) n nf f ff 0, 0, 1, 1, ,, L L 1 1
灰度累积直方图也是一个1-D的离散函数
c( f ) n i
i 0 f
f 0, 1,
, L 1
直方图均衡化
直方图均衡化主要用于增强动态范围偏小的图像 的反差。
直方图均衡化
原始图像各灰度级对应的概率分布
例
灰度级
0
1
2
3
4
5
6
7
像素
概率
790
1023 850
656
329
245
122
0.03
81
0.02
0.19 0.25
0.21 0.16
0.08 0.06
18
直方图均衡化
图像直方图均衡化过程如下:
(1)得到变换后的值:
例解:
t 0 T ( s0 ) t1 T (s1 )
我们注意到在暗色的图像中,直 方图的组成成分集中在灰度级低 (暗)的一侧;反之,明亮的图 像的直方图的组成成分则集中在 灰度级高(亮)的一侧;动态范 围小,也就是对比度小,这种图 像直方图集中于灰度级的中部; 动态范围正常的图像直方图的成 分覆盖了灰度级很宽的范围。 直观上,若一图像像素占有全部 可能的灰度级并且分布均匀,则 图像有高的对比度和多变的灰度 色调,即,可通过改变直方图的 形状来达到增强图像对比度。
nk Pr ( rk ) 0 rk 1 n k 0, 1, 2 , , l 1
式中,nk为图像中出现rk 这种灰度的像素数,n 是 图像中像素总数,而 n k 就是概率论中所说的频数。 n 在直角坐标系中作出 rk 与Pr(rk) 的关系图形,这个图 形称为直方图。
数字图像处理知识点与考点(经典)
第 1 章 导论(知识引导)
1. 图像、数字图像和数字图像处理: 答: “图”是物体投射或反射光的分布,是客观存在的。“像”是人的视觉系统对图在大脑中形成的 印象或认识。图像(image)是图和像的有机结合,即反映物体的客观存在,又体现人的心理因素;是 客观对象的一种可视表示,它包含了被描述对象的有关信息。 数字图像是指由被称作像素(pixel)的小块区域组成的二维矩阵。将物理图像行列划分后,每个小 块区域称为像素。 数字图像处理是指用数字计算机及其它有关数字技术,对图像施加某种运算和处理,从而达到某种 预想目的的技术. 2. 数字图像处理一般包括图像处理、图像分析、图像理解三个层次。 图像处理是对图像本身进行加工,以改善其视觉效果或表现形式,为图像分析打下基础,图像处理 的输出仍是图像。 图像分析是目标图像进行检测和各种物理量的计算,以获取对图像的客观描述。 图像理解是在图像分析的基础上。理解图像所表现的内容,分析图像间的相互联系,得出对客观场 景的解释。 3. 数字图像处理主要包括哪些研究内容? 答:图像处理的任务是将客观世界的景象进行获取并转化为数字图像、进行增强、变换、编码、恢复、 重建、编码和压缩、分割等处理,它将一幅图像转化为另一幅具有新的意义的图像。 4. 一个数字图像处理系统由哪几个模块组成?试说明各模块的作用。 答: 一个基本的数字图像处理系统由图像输入、图像处理和分析、图像存储、图像通信、图像输出5 个模块组成,如下图所示。
说明:通过细心调整折线拐点的位置及控制分段直线的斜率,可对任一灰度区间进行拉伸或压缩。 4.曝光不足或过度的情况下,图像灰度可能会局限在一个很小的范围内,故采用线性变换拉伸图像。 5.直方图的均衡化(考)(习题第四章 6 题,如下示例)与规定化
实验一直方图均衡化-推荐下载
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术通关,1系电过,力管根保线据护敷生高设产中技工资术0艺料不高试仅中卷可资配以料置解试技决卷术吊要是顶求指层,机配对组置电在不气进规设行范备继高进电中行保资空护料载高试与中卷带资问负料题荷试22下卷,高总而中体且资配可料置保试时障卷,各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看2度并22工且22作尽22下可22都能2可地护1以缩关正小于常故管工障路作高高;中中对资资于料料继试试电卷卷保破连护坏接进范管行围口整,处核或理对者高定对中值某资,些料审异试核常卷与高弯校中扁对资度图料固纸试定,卷盒编工位写况置复进.杂行保设自护备动层与处防装理腐置,跨高尤接中其地资要线料避弯试免曲卷错半调误径试高标方中高案资等,料,编5试要写、卷求重电保技要气护术设设装交备备4置底高调、动。中试电作管资高气,线料中课并3敷试资件且、设卷料中拒管技试试调绝路术验卷试动敷中方技作设包案术,技含以来术线及避槽系免、统不管启必架动要等方高多案中项;资方对料式整试,套卷为启突解动然决过停高程机中中。语高因文中此电资,气料电课试力件卷高中电中管气资壁设料薄备试、进卷接行保口调护不试装严工置等作调问并试题且技,进术合行,理过要利关求用运电管行力线高保敷中护设资装技料置术试做。卷到线技准缆术确敷指灵设导活原。。则对对:于于在调差分试动线过保盒程护处中装,高置当中高不资中同料资电试料压卷试回技卷路术调交问试叉题技时,术,作是应为指采调发用试电金人机属员一隔,变板需压进要器行在组隔事在开前发处掌生理握内;图部同纸故一资障线料时槽、,内设需,备要强制进电造行回厂外路家部须出电同具源时高高切中中断资资习料料题试试电卷卷源试切,验除线报从缆告而敷与采设相用完关高毕技中,术资要资料进料试行,卷检并主查且要和了保检解护测现装处场置理设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
直方图处理(均衡化与匹配)解析
0.11
直方图均衡化结果
pr(rk)
0.25 0.20 0.15 0.10 0.05 0
1 7 2 7 3 7
4 7
Sk
0.25 0.21 0.19 0.16 0.08 0.06 0.03
6 7
1.00 0.80 0.60 0.40 0.02
1
0.89 0.81 0.95 0.98 0.65 0.44
(3) 计算原始直方图各概率:pk=nk/N; (4) 计算累计直方图:sk=Σpk; (5) 取整Sk=int{(L-1)sk+0.5}; (6) 确定映射对应关系:rksk;
(7) 统计新直方图各灰度级像素nk';
(8) 用pk (sk) =nk'/N计算新直方图。
其中L是灰度层次数, N是图幅总像素数。
c) 作图
建立直角坐标系,横轴表示rk 的取值,纵轴表示pr (rk )的取值, 作pr (rk )的函数图
练习:试求如图所 示一幅10×10, 8级灰度图像的灰 度直方图。
a)将图像的灰度级归一化
0 1 1 2
0 1 1 2
0 1 1 2
0 1 1 2
0 1 1 2
0 1 1 2
0 1 1 2
0 1 1 2
直方图均衡化的优点是能自动地增强整个图像 的对比度,但它的具体增强效果不易控制,处理 的结果总是得到全局均衡化的直方图。实际中有 时需要变换直方图使之成为某个特定的形状,从 而有选择地增强某个灰度值范围内的对比度。
s=T(r) Pr(r) Pz(z) s=T(r) v=G(z) z=G-1[T(r)]
z
两者经直方图均衡化处理后应有相同的直方图,因此 规定化后的的图像灰度级为: