实验1 图像直方图分析

合集下载

图像直方图实验报告

图像直方图实验报告

图像直方图实验报告实验目的本实验旨在通过使用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. 结果分析通过观察直方图,可以分析图像的亮度特性和分布情况。

实验一 灰度直方图

实验一 灰度直方图

实验一灰度直方图1.1实验介绍直方图是对图像中灰度级分布的统计,是将数字图像中的所有像素,按照灰度值的大小,统计其所出现的频率。

灰度直方图可看作为灰度级的函数,表示为y=f(x),x是灰度级的取值,y是取该灰度值的像素个数。

直方图具有以下几条重要的性质,表征图像的一维信息,不能提供定位;可以与多个图像对应,但一幅图像只能有唯一的直方图;可以用来计算物体的面积;计算的图像面积可用来得到图像的概率密度函数和累积分布函数;子图直方图之和为整图直方图。

由于直方图能够渐简便直观地表征图像特性的信息,因此在图像处理中起着非常重要的作用,可以用来作为图像数字化的参数和确定分割图像阈值的依据。

本次实验目的通过对几幅8-bit的灰度图像的灰度直方图的比较与分析,理解灰度直方图的性质,然后利用直方图实现简单的图像分割,了解它的用途。

1.2数据介绍Test 文件夹中有如下图像:其中RGB.jpg为RGB彩色图像,在实验RGB图像基本操作中使用;Index.gif为索引图像,在实验索引图像基本操作中使用;Dark.jpg和low_contrast.jpg为灰度图像做对比度线性展宽操作中使用;Lung.jpg在灰级窗及灰级窗切片中使用;Light在综合操作中使用;1.3实验内容1)RGB图像基本操作用数码相机拍摄几幅数字图像,要求目标单一背景单一、简单。

如果处理的图像是RGB 图像,采用下面的处理步骤:1.用下列函数将它们转换成不同灰度级的图像,>>I=imread(‘<图像名>.<文件后缀>’); %打开的一般是彩色图像>>Ig=rgb2gray(I) %将彩色图像转化为灰度图像2.绘制图像>>figure;imshow(Ig); %在新窗口中绘制图像3.绘制直方图>>figure;imhist(Ig); %在新窗口中绘制Ig的直方图如果要在同一窗口中绘制图像和它的直方图,用下面的方式:>>subplot(3,1,1); imshow(Ig); %subplot指明窗口绘图区划分为3行1%列的区域,第三个参数1规定紧接着后%面的绘图结果在第1个区域中显示>>subplot(3,1,2);imhist(Ig); %在第2个区域显示直方图4.根据直方图,分析图像的亮度和对比度。

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

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

昆明理工大学信息工程与自动化学院学生实验报告( 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函数绘制了直方图。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

实验报告(1)—直方图

实验报告(1)—直方图

实验一(1)
2、利用抓屏方法(ctrl+sysRq)粘贴实验程序和实验结果。

实验过程与结果
第一题是对某大学100名新生数学素质测验分数生成频率直方图。

第一步:录入实验数据,并利用max函数找出最高分与最低分;
第二步:根据最高分与最低分之间的差选取合适的组距,本次实验分为7组;
第三步:根据每组的组频范围计算出频数与频率(注:本次实验组频选取左开右闭的形式);第四步:利用Excel中得数据分析选项,生成频率直方图并调整使其简洁美观;
第五步:利用Average函数求出其均值,利用Vara函数求出其方差。

实验过程及结果如图所示:
均值求解的函数截图;
方差求解的函数截图。

第二题是对某校100名新生身高的频率直方图,步骤与第一题类似,不做详细介绍。

实验过程与结果如下图所示:
均值求解的函数截图
方差求解的函数截图。

实验1 图像直方图分析

实验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

数字图像实验 图像直方图分析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.了解MATLAB的操作环境和基本功能。

2.掌握MATLAB中图像增强与平滑的函数的使用方法。

3.加深理解图像增强与平滑的算法原理。

二、实验内容(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。

熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。

(可将每段程序保存为一个.m文件)1.直方图均衡化clear all; close all % Clear the MATLAB workspace of any variables% and close open figure windows.I = imread('pout.tif'); % R eads the sample images ‘ pout.tif’, and stores it inimshow(I) % an array named I.display the imagefigure, imhist(I) % Create a histogram of the image and display it in% a new figure window.[I2,T] = histeq(I); % Histogram equalization.figure, imshow(I2) % Display the new equalized image, I2, in a new figure window.figure, imhist(I2) % Create a histogram of the equalized image I2.figure,plot((0:255)/255,T); % plot the transformation curve.imwrite (I2, 'pout2.png'); % Write the newly adjusted image I2 to a disk file named% ‘pout2.png’.imfinfo('pout2.png') % Check the contents of the newly written file2.直接灰度变换clear all; close allI = imread('cameraman.tif'); J = imadjust(I,[0 0.2],[0.5 1]); imshow(I)figure, imshow(J) 注意:imadjust()功能:调整图像灰度值或颜色映像表,也可实现伽马校正。

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

实验1 图像直方图分析
模式识别与智能系统王衍平 2010043003
1 实验目的
本试验通过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.')
end
figure(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 on
plot(X,N(:,[3 2 1])); % 上边界轮廓
title('RGB图像的R、G、B通道上的灰度直方图');
hold off
4 实验结果与分析
通过观察R、G、B三个颜色通道的灰度直方图可知,原图像的像素灰度值大部分集中在亮区,一般在摄影中曝光太弱将会导致这种结果。

相关文档
最新文档