图像的直方图统计实验报告

合集下载

图像直方图实验报告

图像直方图实验报告

图像直方图实验报告实验目的本实验旨在通过使用Python编程语言对图像直方图进行分析和可视化,加深对图像亮度分布的理解,并通过实验结果来探索不同图像的特点和相似性。

实验步骤1. 导入必要的库在开始实验之前,首先需要导入所需的Python库,包括numpy、matplotlib.pyplot和cv2。

可以使用以下代码导入这些库:import numpy as npimport matplotlib.pyplot as pltimport cv22. 读取图像数据选择一张感兴趣的图像作为实验对象,并使用cv2库中的imread()函数读取图像数据。

例如,可以使用以下代码读取名为image.jpg的图像:image = cv2.imread('image.jpg', 0)3. 计算图像直方图使用numpy库中的histogram()函数计算图像的直方图。

直方图是一个表示图像亮度级别频率分布的数组。

可以使用以下代码计算直方图:histogram = np.histogram(image.flatten(), bins=256, range=[0, 256])上述代码将返回一个包含图像直方图数据的数组。

4. 可视化直方图使用matplotlib.pyplot库中的bar()函数将图像直方图可视化。

可以使用以下代码绘制直方图:plt.figure()plt.title('Image Histogram')plt.xlabel('Bins')plt.ylabel('Frequency')plt.bar(histogram[1][:-1], histogram[0], width=1, color='gray')plt.show()上述代码将绘制一个表示图像亮度级别频率分布的直方图。

5. 结果分析通过观察直方图,可以分析图像的亮度特性和分布情况。

图像直方图均衡实验

图像直方图均衡实验

/*初始化直方图背景为白色*/CvScalar white;white.val[0]=255;for(int i=0;i<dst->height;i++){for(int j=0;j<dst->width;j++){cvSet2D(dst, i, j, white);}}/*绘制横竖坐标*/CvScalar black;black.val[0] = 0;for(int i=0;i<280;i++){cvSet2D(dst, 280, i+10, black);}for(int i=0;i<280;i++){cvSet2D(dst, i+10, 20, black);}/*绘制直方图*/for(int i=0;i<256;i++){int high = count[i]*256/max;int x=20+i;for(int j=0;j<high;j++){int y=280-j;cvSet2D(dst, y, x, black);}}return dst;}实验结果如下图所示:2.通过计算归一化直方图,设计算法实现直方图均衡化处理。

核心代码如下:IplImage* Equalization(IplImage *src){IplImage* dst = cvCreateImage(cvGetSize(src),3.在灰度图像直方图均衡处理的基础上实现彩色直方图均衡处理。

核心代码如下:IplImage* ColorEqualization(IplImage *src){IplImage *dst = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 3);IplImage *pImageChannel[3] = {NULL};int i;for (i=0; i<3; i++) {pImageChannel[i] = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);}cvSplit(src, pImageChannel[0], pImageChannel[1], pImageChannel[2], NULL);for (i=0; i<src->nChannels; i++) {pImageChannel[i] = Equalization(pImageChannel[i]);}/*三通道合并*/cvMerge(pImageChannel[0], pImageChannel[1], pImageChannel[2], NULL, dst);return dst;}实验结果如下图所示:。

实验-直方图统计及亮度调整概要

实验-直方图统计及亮度调整概要

实验 2.直方图统计及亮度调整一、实验目的了解并掌握直方图统计方法以及分段线性拉伸、直方图均衡等亮度调整算法, 通过观察对这些运算建立感性认识。

二、实验内容1. 观察各类图像的直方图;2. 操作 LUT 灰度对照表,进行分段线性拉伸;3. 采用直方图均衡方法对低对比度的图像进行对比度增强。

三、基本原理1.直方图的定义图象的灰度直方图是一个函数, 表示数字图象中每一灰度级与该灰度级出现的频数 (即具有这一灰度级的象素数目间的对应关系:P b N b M(( =M 为一幅图象所包含的象素总数; N (b 为图象中灰度值为 b 的象素总数。

通常,以灰度值 b 为横坐标, N (b 为纵坐标。

直方图是图象中象素灰度值的一阶概率分布密度的一种近似。

2.对比度增强对比度增强又称为点运算,逐点改变输入图象的每一象素的灰度,而各象素的位置不改变, 一般用来拓宽图象的灰度范围。

(1灰度变换法(LUT 对照典型的对比度拉伸灰度变换关系如图 1所示,其对应关系如下:gf f a f ag a f b f b g b f L ab=≤< -+≤< -+≤<⎧⎨⎪⎩⎪αβγ((式中, f 、 g 分别表示输入及输出图象, α、β、γ为折线段的斜率, a 、 b 决定低、中、高灰度级的范围。

选择不同的α、β、γ、 a、 b 、 g a 及 g b 数值,可得到各种各样的灰度拉伸效果。

灰度变换前后的灰度变化范围是不变的, 对一部分灰度区域的扩张 (感兴趣区都是以其它区域的压缩为代价的。

图 1. 典型的对比度拉伸灰度变换关系可见,输出和输入图象之间各点的灰度是按照一定的映射关系相联系的,这种映射关系在计算机中则是通过一个查照表(look-up table,即 LUT 实现的。

通过 LUT 对照改变了图象中不同灰度特性趋于的对比度或反差(contrast ,达到改善视觉效果的目的。

(2 直方图均衡直方图均衡(histogram equalization就是通过点运算使输入图像的灰度分布较为均匀, 使图像具有较好的视觉效果。

图形图像报告一直方图处理

图形图像报告一直方图处理

昆明理工大学信息工程与自动化学院学生实验报告( 2012 —2013 学年第二学期)课程名称:图形图像基础开课实验室:信自楼444 2013 年 5月 15日一、实验目的及内容目的:掌握和熟悉Matlab编程环境及语言;掌握直方图统计的算法和用途。

内容:1.在Matlab中载入一副灰度图像,统计显示该图像的直方图。

2.对图像进行直方图均衡化处理,显示处理后的图像及直方图。

二、要求1.描述直方图的概念并解释直方图均衡化原理。

2.程序结构清晰,运行结果正确。

3.描述上述程序的设计、实现和结果,并对结果进行分析。

三、实验原理1.直方图的概念灰度直方图反映的是一幅图像中个灰度级像素出现的频率之间的关系。

以灰度级为横坐标,纵坐标为灰度级的频率,绘制频率和灰度级的关系图就是灰度直方图。

直方图的横轴从左到右代表照片从黑(暗部)到白(亮度)的像素数量,其左边最暗处的Level值为0,而右边最亮处的Level值为255。

直方图的垂直轴方向代表了在给定的Level值下的像素的数目。

频率的计算公式为:i v =n n i在以上公式中:i n 是图像中灰度级为i 的像素数,n 为图像的总像素数。

灰度直方图是图像的重要特征之一,它反应了图像灰度分布的情况。

2.直方图均衡化原理直方图均衡化是通过对原图进行某种变化使得原图像的灰度直方图修正为一种均匀的直方图的一种方法。

灰度直方图均衡化,简单地说,就是把直方图的每一个灰度级进行归一化处理,计算出每一个灰度的累积分布,得到一个映射的灰度映射表,然后根据相应的灰度值来修正原图的每个像素。

四、实验环境Windows 7、MATLAB 7.11.0(R2010b)五、实验内容(包含过程及解析)1. 熟悉Matlab 编程环境及语言1.在Matlab 中载入一副灰度图像,统计显示该图像的直方图。

(1)设置工作空间为:D:\softid\matlab\workspace ,将pollen.tif 放进工作空间。

图像的直方图实验心得体会

图像的直方图实验心得体会

图像的直方图实验心得体会在这次实验中,我学习了图像的直方图并对其进行了实验。

以下是我的心得体会。

首先,直方图是用于显示灰度图像中每个灰度级别的像素的数量的直方图。

通过直方图,我们可以快速了解图像的灰度分布情况,从而更好地理解图像的特征和性质。

在这次实验中,我通过编程实现了直方图的绘制。

通过绘制直方图,我能够直观地看到图像中不同灰度级别的像素的分布情况。

在实验过程中,我使用了Python的matplotlib库来绘制直方图。

我将图像转换为灰度图像,并统计了每个灰度级别的像素的数量。

然后,我使用matplotlib库的hist函数绘制了直方图。

通过调整图像的亮度和对比度,我观察到了直方图的变化。

我发现,当图像的亮度和对比度增加时,直方图的峰值变得更加集中,表示图像中存在更多的像素值。

在绘制直方图的过程中,我还发现直方图可以用于图像增强。

通过调整图像的直方图,我们可以改变图像的亮度和对比度,从而使图像更加清晰。

例如,通过拉伸直方图,我可以增强图像的对比度,使图像中的细节更加明显。

通过直方图均衡化,我可以使图像的亮度分布更加均匀,提高图像的可视化效果。

此外,在实验中,我还学习了直方图匹配技术。

通过直方图匹配,我们可以将一张图像的直方图转换为另一张图像的直方图,从而达到两张图像具有相似的亮度和对比度的效果。

这种技术在图像处理和计算机视觉领域中有着广泛的应用。

通过这次实验,我了解到了直方图匹配的原理和方法,并成功实现了直方图匹配的代码。

总的来说,这次实验让我更好地理解了图像的直方图和直方图的应用。

通过实际操作和编程实现,我更加深入地了解了直方图的绘制和分析方法。

我也学会了如何使用直方图来调整图像的亮度和对比度,并实现了直方图匹配技术。

这次实验为我日后进一步研究图像处理和计算机视觉提供了基础和启示。

我相信,通过不断实践和学习,我可以更加深入地掌握图像处理和计算机视觉的知识,为解决实际问题提供更好的方案和方法。

数字图像直方图统计报告

数字图像直方图统计报告

一、学习情况
灰度直方图均衡化进行数字图像处理的基本原理
01
直方图均衡化:利用这一特性对图像中像素个数多的灰度 级进行展宽,而对图像中像素个数少的灰度进行压缩,从
而提高了对比度和灰度色调的变化,使图像更加清晰。
实现步骤: (1) 根据输入的灰度图像计算其原始直方图 (2) 对输入的原始直方图进行累加,计算其cdf (3) 使用累计分布函数的线性插值计算新的灰度值
一、学习情况
Matlab仿真
02
Imhist():直接显示图像的灰度直方图
均衡化: (1) 根据输入的灰度图像计算其原始直方图 (2) 对输入的原始直方图进行累加,计算其cdf (3) 使用累计分布函数的线性插值计算新的灰度值
二、已完成的工作及仿
真结果
二、已完成的工作及仿真结果 1 MATLAB仿真
阈值为100 200
阈值为120 200
阈值为140 180
阈值为150 170
由思考题得出的结论
阈值选择在波谷时,图片黑白分化更加明 显,对比度有所增强,当阈值靠近波峰时, 丢失信息过多,图片失真较为严重。
仿真1 MATLAB仿真
2 修改程序课后题的完成结果
双峰阈值分割法
在一些简单的图像中,物体的灰度分布比较有 规律,背景与各个目标在图像的直方图各自形 成一个波峰(区域与波峰一一对应),每两个 波峰之间会形成一个波谷,选择此波谷作为阈 值。
阈值为60 200
阈值为80 200
数字图像直方图均衡化增强实验 中期汇报
组员:张三
一、学习情况
一、学习情况
灰度直方图均衡化进行数字图像处理的基本原理
01
灰度直方图:横坐标是灰度级别,纵坐标是图像中该灰 度值的出现频率,是一个统计结果。

实验1 图像直方图分析

实验1 图像直方图分析模式识别与智能系统王衍平 20100430031 实验目的本试验通过MATLAB编程,获取一幅RGB图像的灰度直方图信息,并根据灰度直方图获得图像中的像素亮度的分布情况。

2 实验步骤(1)使用imread函数读取一幅RGB图像,并输出显示该图像;(2)使用size函数获取该图像的大小,然后分离三个颜色通道;(3)分别输出显示R、G、B三个颜色通道的图像;(4)分别绘制R、G、B三个颜色通道的灰度直方图;(5)绘制RGB三个颜色通道的灰度直方图于一幅图像中。

3 MATLAB程序代码I=imread('D:\数字图像处理实验\001.bmp');% 若果不是RGB图像,报错if(size(I,3)~=3)error('rgbhist:numberOfSamples','Input image must be RGB.')endfigure(1),imshow(I);title('原RGB图像');S=size(I); % Size of array file.H=reshape(I,S(1)*S(2),S(3)); % 将每个颜色通道变为一列H=double(H); % Convert to double precision.nHist=2^8-1;figure(2),imshow(I(:,:,1)); % 显示R通道上的图像title('R通道上的图像');figure(3),imshow(I(:,:,2)); % 显示G通道上的图像title('G通道上的图像');figure(4),imshow(I(:,:,3)); % 显示B通道上的图像title('B通道上的图像');figure(5),imhist(I(:,:,1),nHist); % 绘制图像R通道上的灰度直方图title('R通道上的灰度直方图');figure(6),imhist(I(:,:,2),nHist); % 绘制图像R通道上的灰度直方图title('G通道上的灰度直方图');figure(7),imhist(I(:,:,3),nHist); % 绘制图像R通道上的灰度直方图title('B通道上的灰度直方图');figure(8)[N,X]=hist(H,[0:1:255]); % 绘制RGB图像的R、G、B通道上的灰度直方图bar(X,N(:,[3 2 1]));xlim([0 255]) % X limits.hold onplot(X,N(:,[3 2 1])); % 上边界轮廓title('RGB图像的R、G、B通道上的灰度直方图');hold off4 实验结果与分析通过观察R、G、B三个颜色通道的灰度直方图可知,原图像的像素灰度值大部分集中在亮区,一般在摄影中曝光太弱将会导致这种结果。

数字图像实验 图像直方图分析1234

试验三:图像直方图分析一·实验目的1.掌握VC++6.0图像编程的基本操作2. 应用VC++6.0编程绘制灰度直方图。

二·实验内容1.用VC++6.0绘制灰度直方图;2. 对图像进行直方图分析。

三·实验步骤(1)启动VC++6.0,打开Dip工程。

(2)将Pointpro.h、Pointpro.cpp文件及Areapro.h、Areapro.cpp文件拷贝到当前工程目录文件里面。

(3)在Fileview-->Dipfiles→右键→Setting→Link→添加Pointpro.h、Pointpro.cpp 文件及Areapro.h、Areapro.cpp文件。

(4)在菜单栏→insert→resouce→dialog→new,在对话框模版的非控制区点击鼠标右键,在弹出的对话框中选properties,设置为ID:IDD_DLG_Intensity,C标题:Histogram,关闭属性对话框,回到“建立类向导”(MFC classwizard),在弹出的对话框中选创建新类CDlgIntensity后确定。

并且在FileView中修改DlgIntensity.cpp和DlgIntensity.h相应的代码;(5)在弹出的对话框中,添加如下的按钮等控件:例如右键单击上面最大的静态文本,在弹出的对话框中选“属性”,在属性对话框中添加如下内容:(6)在ResourceView栏中→Menu→选IDR_DIPTYPE ,如图在View菜单栏下空的一栏中,右键鼠标,在弹出的对话框中选属性properties,在弹出的对话框中,设置:ID:ID_VIEW_HIST,标题为Histogram,在建立的类向导中选类为CDlgIntensity,确定。

(7)在StdAfx.h中添加#include<math.h>(8)在DipView.h中//{{AFX_MSG(CDipView)下添加afx_msg void OnViewHist();afx_msg void OnUpdateViewHist(CCmdUI* pCmdUI); (9)DipView.cpp添加#include "PointPro.h"和#include "DlgIntensity.h",在BEGIN_MESSAGE_MAP(CDipView, CScrollView)处添加:ON_COMMAND(ID_VIEW_HIST, OnViewHist)ON_UPDATE_COMMAND_UI(ID_VIEW_HIST, OnUpdateViewHist) 在// CDipView message handlers下面添加:void CDipView::OnViewHist(){CDipDoc* pDoc = GetDocument();ASSERT_V ALID(pDoc);//判断当前是否有图像对象if( pDoc->m_pDibObject == NULL ) return;//在点处理CPointPro类中创建用来绘制直方图的数据CPointPro PointOperation( pDoc->m_pDibObject );int *pHistogram = PointOperation.GetHistogram();//生成一个对话框CHistDlg类的实例CDlgIntensity HistDlg;//将绘制直方图的数据传递给CHistDlg对话框类的公有成员变量m_pnHistogramif( pHistogram != NULL ){//设置直方图数据指针HistDlg.m_pnHistogram = pHistogram;//设置当前像素值为0的像素数HistDlg.m_nCurrentPiexsNum = pHistogram[0];//设置是否为256级灰度图像HistDlg.m_bIsGray256 = PointOperation.IsGray256();}//显示对话框if ( HistDlg.DoModal() != IDOK)return;delete [] pHistogram;}void CDipView::OnUpdateViewHist(CCmdUI* pCmdUI){CDipDoc* pDoc = GetDocument();ASSERT_V ALID(pDoc);pCmdUI->Enable( pDoc->m_pDibObject->GetNumBits() >= 8);}(10)在DipDoc.h中添加:protected:long m_lHeight;long m_lWidth;(11)在DipDoc.cpp中添加菜单命令:#include "AreaPro.h",在CDipDoc::CDipDoc()下面添加{m_pDibObject = NULL;m_bImageLoaded = FALSE;// TODO: add one-time construction code herem_lHeight = 0;m_lWidth = 0;}在最下面添加:void CDipDoc::OnFileSaveAs(){// TODO: Add your command handler code herestatic int nIndex = 1;CFileDialog DialogSaveAs( FALSE, NULL, m_pDibObject->GetImageName(),OFN_HIDEREADONLY, szFilter );DialogSaveAs.m_ofn.nFilterIndex = (DWORD) nIndex;if( DialogSaveAs.DoModal() == IDOK ){CMainFrame *pMainFrame = ( CMainFrame * )AfxGetMainWnd();CChildFrame *pChildFrame = ( CChildFrame * )pMainFrame->MDIGetActive();CDipView *pDipView = ( CDipView * )pChildFrame->GetActiveView();nIndex = (int) DialogSaveAs.m_ofn.nFilterIndex;if( nIndex == 5 ){if( m_pDibObject->GetNumBits() != 24 ){AfxMessageBox("必须是24位真彩色图像才能存为JPEG格式!");return;}}if( m_pDibObject != NULL ){CString strPathName = DialogSaveAs.GetPathName();int nFindIndex = strPathName.Find(".");if( nFindIndex != -1)strPathName = strPathName.Left( nFindIndex );strPathName += CDibObject::szExtensions[ nIndex - 1 ];//m_pDibObject->ProcessImageHeader();//m_pDibObject->ProcessPalette();m_pDibObject->Save( strPathName );CString strFileName = DialogSaveAs.GetFileName();nFindIndex = strFileName.Find(".");if ( nFindIndex != -1 )strFileName = strFileName.Left( nFindIndex );strFileName += CDibObject::szExtensions[ nIndex - 1 ];pChildFrame->SetWindowText( strFileName );SetPathName( strPathName );if( nIndex == 5 ){m_pDibObject->Load( strPathName );pDipView->InvalidateRect( NULL, FALSE );pDipView->UpdateWindow();}}}}(12)在ChildFrm.h中添加public:CChildFrame();int m_nWidth, m_nHeight;(13)在ChildFrm.cpp中添加CChildFrame::CChildFrame(){m_nWidth = 300;m_nHeight = 150;}在BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)添加:{// TODO: Modify the Window class or styles here by modifying// the CREATESTRUCT cscs.cx = m_nWidth;cs.cy = m_nHeight;if( !CMDIChildWnd::PreCreateWindow(cs) ) return FALSE;return TRUE;}一、实验结果二、实验心得及体会通过做这次实验,使我又学到了关于图像直方图的知识,进一步掌握了图像编程的基本操作:会应用VC++6.0编程绘制灰度直方图。

实验-数字图像的直方图统计

实验二数字图像的直方图统计一、实验目的1.了解对灰度图像进行直方图统计的基本原理;2.掌握用VC编程实现直方图统计的方法;3.在微机上调试程序;5. 分析数字图像直方图的特点。

二、实验原理图像的直方图图像的(灰度统计)直方图是一个一维的离散函数。

它的定义为:设s k为图像f(x,y)的第k级灰度值,n k是f(x,y)中具有灰度值s k的象素的个数,n是图像象素总数,则:p s(s k)= n k/n k=0,1, ,L-1称为图像f(x,y)的直方图。

这里p s(s k)代表原始图中第k个灰度级的出现概率。

以n k为自变量,以p s(s k)为函数,得到的曲线就是图像的直方图,在实际中常常直接将对第k个灰度级的统计值n k作为图像的直方图。

它提供了原图灰度值的分布情况,也可以说给出了一幅图所有灰度值的整体描述。

对灰度图像进行直方图统计的程序流程图如图2-1所示。

图2-1 灰度图像直方图统计流程三、实验前准备1.预习本实验中关于数字图像直方图统计的有关内容;2. 预习VC中添加对话框的步骤和方法;3.了解本实验的目的和实验内容。

四、实验内容1.在实验一的基础上读入并显示一幅数字图像;2.编写对灰度图像进行直方图统计的程序,并将结果显示在屏幕上。

五、实验报告要求1.总结对灰度图像进行直方图统计的过程,比较不同的图像其直方图特性;2.对实验结果进行分析。

六、参考步骤和程序在实验一的基础上,进行如下操作:1、点击ResourceView,右键点击Dialog,选Insert Dialog 在属性对话框中将ID改为ID_HIST,对话框名称改为“直方图”2、在工具栏中点“插入”-“新建类”,输入类名,并选Base Class为CDialog,Dialog ID为ID_HIST。

这样就将对话框和类联系起来了,在该对话框中拖入一Edit控件,将其ID 设为IDC_HISTSHOW;3、快捷键“Ctrl+W”,出现MFC ClassWizard对话框,在Messages栏中分别选WM_INITDIALOG和WM_Paint,再点击“Add Function”,即将对话框初始化和画图函数加入对话框类之中。

统计图像直方图及图像均衡化

数字图像处理实验报告一、实验内容:1、统计图像直方图2、直方图的均衡化二、实验目的:1、学会在VC环境下使用opencv,能学会基本的图像导入与显示2、学会加载图像及图像各像素点的统计3、理解并掌握利用直方图均衡化图像的过程,并用程序加以实现三、实验代码:#include "cv.h"#include "highgui.h"#include<stdio.h>#include<math.h>int main( int argc, char** argv ){IplImage* plmg; //声明IplImage指针int height,width,step,channels;uchar *data;int i,j,k,r,count=0;int r0[256]={0};float pr[256]={0},sk[256]={0};//载入图像plmg = cvLoadImage("Tulips.jpg", 1);{cvNamedWindow( "Image", 1 );//创建窗口cvShowImage( "Image", plmg );//显示图像//统计图像各参数并赋值height=plmg->height;width=plmg->width;step=plmg->widthStep;channels=plmg->nChannels;data=(uchar *)plmg->imageData;printf("Processing a %d*%d with %d channels\n",height,width,channels);//反转图像/* for(i=0;i<height;i++)for(j=0;j<width;j++)for(k=0;k<channels;k++)data[i*step+j*channels+k]=255-data[i*step+j*channels+k];cvNamedWindow( "Image1", 1 );//创建窗口cvShowImage( "Image1", plmg );//显示图像*/for(i=0;i<height;i++) //统计直方图for(j=0;j<width;j++)for(k=0;k<channels;k++)//for(r=0;r<256;r++)r0[data[i*step+j*channels+k]]++;for(r=0;r<256;r++)count=count+r0[r];for(r=0;r<256;r++)printf("pixel %d is %d\n",r,r0[r]);printf("all pixels=%d\n",count);for(r=0;r<256;r++){pr[r]=r0[r]/(float)count; //像素点归一化printf("pixel %d 的个数及归一化:%d %f\n",r,r0[r],pr[r]);}sk[0]=255*pr[0]; //均衡化像素函数for(r=1;r<256;r++)sk[r]=sk[r-1]+pr[r]*255;for(r=0;r<256;r++){printf("pixel %d befor equilibria is %d ,after is %f \n",r,r0[r],sk[r]);}//映射到原图像,即像素值强制修改为均衡后的值for(i=0;i<height;i++)for(j=0;j<width;j++)for(k=0;k<channels;k++)data[i*step+j*channels+k]=sk[data[i*step+j*channels+k]];cvNamedWindow( "Image1", 1 );//创建窗口cvShowImage( "Image1", plmg );//显示图像*/cvWaitKey(0); //等待按键cvDestroyWindow( "Image" );//销毁窗口cvReleaseImage( &plmg ); //释放图像return 0;}return -1;}四、实验结果:五、实验心得:1、每建立一个将要使用opencv的VC Project ,都需要给它指定需要的lib文件2、需要加载的图像必须和所建工程的程序文件在同一个目录下3、对图像操作时,必须先把定义的图像参数赋值,否则将不能对图像进行修改4、初步掌握了opencv在VC环境下的运行与基本的opencv语句5、图像均衡化时,要注意归一时是除以所有像素点的总数,均衡时概率依次累加后乘以的是最大灰度级,同时要注意所用数组整型和浮点型的转换6、实验误区:各灰度级经过像素点的计算得到均衡化的结果是灰度数,而不再是像素点的个数7、数组赋值需用{}。

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

华侨大学
数字图像处理与图像通信实验报告
实验题目:图像的直方图统计
专业、班级:通信3班
学生姓名:
学号:
分数:
2014 年 6 月 4 日
一、实验目的:
掌握直方图统计的算法原理和程序设计,了解各种图像的直方图统计的意义及其用途。

二、实验设备:
计算机、matlab 7.0软件
三、实验原理
灰度直方图是灰度值的函数,描述的是图像中具有该灰度值的像素的个数,其横坐标表示像素的灰度级别,纵坐标是该灰度出现的频率(像素个数与图像像素总数之比)。

直方图的作法如下: a )将图像的灰度级归一化
若图像的灰度级为:0,1,
,1,L -则令
,0,1,,1
10 1.k k k
r k L L r =
=--≤≤则
在灰度级中,0k r =代表黑,1k r =代表白。

对于一幅给定的图像来说,每一个像素取得[0,1]区间内的灰度级是随机的,也就是说k r 是一个随机变量。

b)计算各灰度级的像素概率
()()k k k r k k r k n r n n p r n n k p r =
设为灰度级为的像素的个数,为总的像素个数,令
是像素值为的像素的频数,为其出现的概率 c)作图
建立直角坐标系,横轴表示r k 的取值,纵轴表示p r (r k )的取值,作p r (r k )的函数图。

四、实验内容:
实现对一幅灰度图像的像素的统计,并绘制直方图。

程序编码:
I=imread('C:\MATLAB7\work\2.png'); figure(1)
subplot(1,2,1) imshow(I); title('原图') add=[];
tab1=zeros(1,256) for n=0:255 X=I==n;
add=[add;sum(sum(X))]; end;
[a b]=size(I); final=add/(a*b); subplot(1,2,2); bar(0:255,final,'g'); title('灰度级图象')
原图
-100
010*******
00.005
0.01
0.015
0.02
0.025
0.03
0.035
灰度级图象。

相关文档
最新文档