实验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)
2、利用抓屏方法(ctrl+sysRq)粘贴实验程序和实验结果。
实验过程与结果
第一题是对某大学100名新生数学素质测验分数生成频率直方图。
第一步:录入实验数据,并利用max函数找出最高分与最低分;
第二步:根据最高分与最低分之间的差选取合适的组距,本次实验分为7组;
第三步:根据每组的组频范围计算出频数与频率(注:本次实验组频选取左开右闭的形式);第四步:利用Excel中得数据分析选项,生成频率直方图并调整使其简洁美观;
第五步:利用Average函数求出其均值,利用Vara函数求出其方差。
实验过程及结果如图所示:
均值求解的函数截图;
方差求解的函数截图。
第二题是对某校100名新生身高的频率直方图,步骤与第一题类似,不做详细介绍。
实验过程与结果如下图所示:
均值求解的函数截图
方差求解的函数截图。
实验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.了解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()功能:调整图像灰度值或颜色映像表,也可实现伽马校正。
图像的直方图统计实验报告
华侨大学数字图像处理与图像通信实验报告实验题目:图像的直方图统计专业、班级:通信3班学生姓名:学号:分数:2014 年 6 月 4 日一、实验目的:掌握直方图统计的算法原理和程序设计,了解各种图像的直方图统计的意义及其用途。
二、实验设备:计算机、matlab 7.0软件三、实验原理灰度直方图是灰度值的函数,描述的是图像中具有该灰度值的像素的个数,其横坐标表示像素的灰度级别,纵坐标是该灰度出现的频率(像素个数与图像像素总数之比)。
直方图的作法如下: a )将图像的灰度级归一化若图像的灰度级为:0,1,,1,L -则令,0,1,,110 1.k k kr 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('灰度级图象')原图-100010*******00.0050.010.0150.020.0250.030.035灰度级图象。
图像分析之直方图分析
图像分析之直⽅图分析图像分析之强度直⽅图分析直⽅图介绍强度直⽅图图形化显⽰不同的像素值在不同的强度值上的出现频率,对于灰度图像来说强度范围为[0~255]之间,对于RGB的彩⾊图像可以独⽴显⽰三种颜⾊的强度直⽅图。
强度直⽅图是⽤来寻找灰度图像⼆值化阈值常⽤⽽且是有效的⼿段之⼀,如果⼀幅灰度图像的直⽅图显⽰为两个波峰,则⼆值化阈值应该是这两个波峰之间的某个灰度值。
同时强度直⽅图是调整图像对⽐度的重要依据直⽅图实现⽅法:对⼀幅灰度图像从上到下,从左到右扫描每个像素值,在每个灰度值上计算像素数⽬,以这些数据为基础完成图像直⽅图的绘制。
运⾏效果如下:程序实现:1.⾸先对⼀幅RGB图像完成灰度转换,转换代码如下:2.初始化直⽅图数据数组int[256] 因为灰度值的范围为0~2553.扫描灰度图像,完成强度数据计算。
4.使⽤Java 2D绘制直⽅图直⽅图实现源代码:package com.gloomyfish.image.analysis;import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.BufferedImage;public class HistogramAnalysisAlg {private BufferedImage srcImage;private BufferedImage histogramImage;private int size = 280;public HistogramAnalysisAlg(BufferedImage srcImage){histogramImage = new BufferedImage(size,size, BufferedImage.TYPE_4BYTE_ABGR);this.srcImage = srcImage;}public BufferedImage getHistogram() {int[] inPixels = new int[srcImage.getWidth()*srcImage.getHeight()];int[] intensity = new int[256];for(int i=0; i<intensity.length; i++) {intensity[i] = 0;}getRGB( srcImage, 0, 0, srcImage.getWidth(), srcImage.getHeight(), inPixels );int index = 0;for(int row=0; row<srcImage.getHeight(); row++) {int ta = 0, tr = 0, tg = 0, tb = 0;for(int col=0; col<srcImage.getWidth(); col++) {index = row * srcImage.getWidth() + col;ta = (inPixels[index] >> 24) & 0xff;ta = (inPixels[index] >> 24) & 0xff;tr = (inPixels[index] >> 16) & 0xff;tg = (inPixels[index] >> 8) & 0xff;tb = inPixels[index] & 0xff;int gray = (int)(0.299 * (double)tr + 0.587 * (double)tg + 0.114 * (double)tb);intensity[gray]++;}}// draw XY Axis linesGraphics2D g2d = histogramImage.createGraphics();g2d.setPaint(Color.BLACK);g2d.fillRect(0, 0, size, size);g2d.setPaint(Color.WHITE);g2d.drawLine(5, 250, 265, 250);g2d.drawLine(5, 250, 5, 5);// scale to 200g2d.setPaint(Color.GREEN);int max = findMaxValue(intensity);float rate = 200.0f/((float)max);int offset = 2;for(int i=0; i<intensity.length; i++) {int frequency = (int)(intensity[i] * rate);g2d.drawLine(5 + offset + i, 250, 5 + offset + i, 250-frequency);}// X Axis Gray intensityg2d.setPaint(Color.RED);g2d.drawString("Gray Intensity", 100, 270);return histogramImage;}private int findMaxValue(int[] intensity) {int max = -1;for(int i=0; i<intensity.length; i++) {if(max < intensity[i]) {max = intensity[i];}}return max;}/*** A convenience method for getting ARGB pixels from an image. This tries to avoid the performance * penalty of BufferedImage.getRGB unmanaging the image.*/public int[] getRGB( BufferedImage image, int x, int y, int width, int height, int[] pixels ) {int type = image.getType();if ( type == BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB )return (int [])image.getRaster().getDataElements( x, y, width, height, pixels );return image.getRGB( x, y, width, height, pixels, 0, width );}/*** A convenience method for setting ARGB pixels in an image. This tries to avoid the performance * penalty of BufferedImage.setRGB unmanaging the image.*/public void setRGB( BufferedImage image, int x, int y, int width, int height, int[] pixels ) {int type = image.getType();if ( type == BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB )image.getRaster().setDataElements( x, y, width, height, pixels );elseimage.setRGB( x, y, width, height, pixels, 0, width );}}测试代码如下:package com.gloomyfish.image.analysis;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.MediaTracker;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.JComponent;import javax.swing.JFileChooser;import javax.swing.JFrame;public class ImageAnalysisUI extends JComponent {/****/private static final long serialVersionUID = 1518574788794973574L;private BufferedImage rawImg;private BufferedImage modImg;private MediaTracker tracker;private Dimension mySize;public ImageAnalysisUI(File f) {try {rawImg = ImageIO.read(f);HistogramAnalysisAlg filter = new HistogramAnalysisAlg(rawImg);modImg = filter.getHistogram();} catch (IOException e1) {e1.printStackTrace();}tracker = new MediaTracker(this);tracker.addImage(rawImg, 1);// blocked 10 seconds to load the image datatry {if (!tracker.waitForID(1, 10000)) {System.out.println("Load error.");System.exit(1);}// end if} catch (InterruptedException e) {e.printStackTrace();System.exit(1);}// end catchmySize = new Dimension(2*rawImg.getWidth() + 20, rawImg.getHeight()*2); JFrame imageFrame = new JFrame("Gloomyfish - Image Analysis");imageFrame.getContentPane().add(this);imageFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);imageFrame.pack();imageFrame.setVisible(true);}public void paint(Graphics g) {Graphics2D g2 = (Graphics2D) g;g2.drawImage(rawImg, 0, 0, rawImg.getWidth(), rawImg.getHeight(), null);g2.drawImage(modImg, rawImg.getWidth()+10, 0, modImg.getWidth(), modImg.getHeight(), null);g2.drawString("source image", 10, rawImg.getHeight() +10);g2.drawString("connected component labeled area", 10 + modImg.getWidth(), rawImg.getHeight() +10); }public Dimension getPreferredSize() {return mySize;}public Dimension getMinimumSize() {return mySize;}public Dimension getMaximumSize() {return mySize;}public static void main(String[] args) {JFileChooser chooser = new JFileChooser();chooser.showOpenDialog(null);File f = chooser.getSelectedFile();new ImageAnalysisUI(f);}}转载时请注明!。
图像直方图实验报告
图像直方图实验报告图像直方图实验报告一、引言图像直方图是一种用于分析和描述图像亮度分布的工具。
通过统计图像中不同亮度级别的像素数量,我们可以获得图像的亮度分布情况,从而更好地理解图像的特征和内容。
本实验旨在通过对不同图像的直方图分析,探索图像直方图在图像处理中的应用。
二、实验方法1. 实验材料本实验使用了三张不同类型的图像:一张自然风景图像、一张人物肖像图像和一张抽象艺术图像。
2. 实验步骤(1)打开图像处理软件,并导入所选图像。
(2)选择图像直方图功能,并生成图像的直方图。
(3)观察直方图的形状和分布情况,并记录下来。
(4)根据观察结果,分析图像的亮度特征和内容特点。
三、实验结果与分析1. 自然风景图像的直方图自然风景图像的直方图呈现出较为平均的分布,亮度分布范围广泛。
这表明该图像中包含了丰富的亮度细节,从明亮的天空到昏暗的山脉,再到黑暗的树林,图像中的各个部分亮度差异较大。
这种直方图特点与自然风景图像的特点相符,展示了大自然的多样性和丰富性。
2. 人物肖像图像的直方图人物肖像图像的直方图呈现出较为集中的分布,亮度主要集中在中间区域。
这表明该图像中的人物主体亮度较为均匀,没有明显的高光或阴影。
这种直方图特点与人物肖像图像的特点相符,突出了人物的面部特征和表情。
3. 抽象艺术图像的直方图抽象艺术图像的直方图呈现出较为离散的分布,亮度分布呈现出一定的规律性。
这表明该图像中存在着一些重复出现的亮度模式或纹理。
这种直方图特点与抽象艺术图像的特点相符,强调了艺术家对于形式和结构的探索。
四、实验总结通过对不同类型图像的直方图分析,我们可以发现图像直方图与图像内容和特征之间存在一定的关联性。
自然风景图像的直方图展示了大自然的多样性和丰富性,人物肖像图像的直方图突出了人物的面部特征和表情,抽象艺术图像的直方图强调了艺术家对于形式和结构的探索。
因此,在图像处理中,我们可以通过对图像直方图的分析,更好地理解图像的内容和特征,为后续的图像处理工作提供参考。
实验一 图像的灰度变换及直方图均衡化
实验一:图像灰度变换及直方图均衡化实验一、实验目的:1. 掌握灰度直方图的概念及其计算方法;2. 掌握利用图像灰度变换实现对图像的增强处理;3. 掌握利用直方图直方图均衡化和直方图规定化实现对图像的增强处理;4. 熟悉MA TLAB中图像增强的相关函数。
二、实验设备:1. 硬件设备:计算机;2. 软件环境:Windows+Matlab编程与仿真环境;3. 其他设备:记录用的纸、笔,以及U盘等存储设备。
三、实验原理:灰度直方图(histogram)是灰度级的函数,它表示图像中具有每种灰度级的像素的个数,反映图像中每种灰度出现的频率。
一般来说,灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的概率,是图像的最基本的统计特性。
从概率论的观点来理解,灰度出现的频率可看作其出现的概率,这样直方图就对应于概率密度函数PDF(Probability Density Function),而概率分布函数就是直方图的累积和,即概率密度函数的积分。
1. 直方图均衡化直方图均衡化是通过灰度变换将一幅图像转换另一幅具有均衡直方图,即在每个灰度级上都具有相同的像素点数的过程。
设灰度变换s=T(r)为斜率有限的非减连续可微函数,它将输入图像A(x,y)转换为输出图像B(x,y),输入图像的直方图为H a(r),输出图像的直方图为H b(s),它们的关系如下:图1.1 输入图像和输出图像直方图之间的关系图直方图均衡化的基本思想是把原始图像的直方图变换成均匀分布的形式图像灰度值的动态范围,从而达到了增强图像整体对比度的效果。
具体方法为:①列出原始图像的灰度级Sk, k=0,1…L-1,其中L是灰度级的个数;②统计原始图像各灰度级的像素数目nk;③计算原始图像直方图各灰度级的频率数;④计算原始图像的累计直方图;⑤取整计算;⑥确定映射关系;⑦统计新直方图各个灰度级的像素数目nk;⑧计算新的直方图。
2. 灰度变换灰度变换是图像增强的另一种重要手段,它可使图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显。
大学认识实习(图像直方图均衡化)报告
subplot(2,2,3);
imshow(J)
title('均衡化后的图象');
subplot(2,2,4);
imhist(J);%画出灰度图像的直方图
title('均衡化后的直方图');
3程序分析
该段程序比较简洁,主要直接调用系统函数来直接实现相关功能,首先利用imread()函数来读取miss1.jpg图像的像素的灰度值,并作为向量存放在I中,利用imhist直接绘出初始图像像素的直方图。通过调用histeq()函数来实现图像的均衡化,并利用同样的方式来显示图像以及均衡化后的图像直方图。
②中兴通讯股份有限公司南京研发中心介绍
中兴通讯股份有限公司南京研发中心成立于1993年9月,是中兴通讯全球15个研发机构之一,是中兴通讯重要的研发基地,承担着中兴通讯大型交换系统、数据网络、网络增值业务以及面向未来的网络核心设备等重要的研发任务。南京研发中心已入驻人员1.3万余人。
中兴通讯一区一期项目占地120亩,于2001年3月投资建设,2002年2月竣工并投入使用,建筑面积4.5万平方米;中兴通讯一区二期项目占地87亩,于2005年7月开工建设,2006年11月南楼建成投入使用,2009年12月北楼建成投入使用,总建筑面积约6万平方米。中兴二区占地面积约574亩,计划投资11.88多亿元人民币,一期建筑面积约20万平方米已经入驻。南京研发中心目前已成为国内最大的以未来通讯为核心的生产、研发基地,也是作为向国际市场展示的中心,邀请各国政要到研发基地考察,并与国内外技术专家进行研发合作。另外,随着3G网络建设的全面展开,除原有的产品继续在南京当地实现相关的产值与税收外,3G核心网相关的全系列软件产品,亦落地南京,将实现相当的产值和税收。
直方图均衡化实验报告
直方图均衡化实验报告直方图均衡化实验报告引言:直方图均衡化是一种常用的图像处理技术,它可以增强图像的对比度和细节,使得图像更加清晰明亮。
本实验旨在通过实际操作验证直方图均衡化的效果,并探讨其在不同场景下的应用。
实验步骤:1. 图像获取与预处理:选择一张高对比度的彩色图像作为实验对象,通过图像处理软件将其转换为灰度图像。
确保图像的亮度范围适中,避免过亮或过暗的情况。
2. 直方图均衡化算法:实现直方图均衡化算法的代码,可以使用Python等编程语言。
算法的核心思想是将原始图像的像素值映射到新的像素值,使得新图像的直方图均匀分布在整个灰度范围内。
3. 实验结果展示:将经过直方图均衡化处理后的图像与原始图像进行对比展示。
通过观察图像的对比度、亮度和细节等方面的变化,评估直方图均衡化算法的效果。
实验结果与分析:经过直方图均衡化处理后,图像的对比度明显增强,细节更加清晰可见。
原本过亮或过暗的区域得到了适当的修正,使得整个图像的亮度分布更加均匀。
同时,图像中的细节也得到了突出,使得观察者能够更好地识别和分析图像中的内容。
在实际应用中,直方图均衡化可以用于图像增强、目标检测、图像匹配等领域。
例如,在安防监控系统中,直方图均衡化可以提高图像的对比度,使得目标物体更加明显,有利于目标检测和识别。
在医学图像处理中,直方图均衡化可以增强图像的细节,有助于医生对病灶的判断和诊断。
然而,直方图均衡化也存在一些局限性。
首先,直方图均衡化是一种全局操作,对整个图像进行处理,可能会导致某些局部细节的损失。
其次,直方图均衡化对于亮度变化较大的图像效果较差,可能会导致过度亮化或过度暗化的问题。
因此,在实际应用中,需要根据具体情况选择合适的图像处理方法。
结论:通过本次实验,我们验证了直方图均衡化在图像处理中的有效性。
直方图均衡化可以增强图像的对比度和细节,使得图像更加清晰明亮。
然而,直方图均衡化也存在一些局限性,需要根据具体情况选择合适的图像处理方法。
实验一_灰度图像直方图统计[1].
实验一灰度图像直方图统计一 . 实验目的掌握灰度图像直方图的概念和计算方法 , 了解直方图的作用和用途。
提高编程能力,巩固所学知识。
二 . 实验内容和要求(1 用 Photoshop 显示,了解图像平均明暗度和对比度等信息;(2 用 matlab 读取和显示一幅灰度图象;(3 用 matlab 编写直方图统计的程序。
三 . 实验步骤1. 用 Photoshop 显示直方图:(1.点击文件 -->打开 , 打开一幅图像 ;(2对图像做增强处理 , 选择图像→调整→自动对比度对图像近行灰度拉伸 , 观察图像进行对比度增强后的视觉变化(3利用灰度图像直方图的程序分别针对灰度拉伸前后的灰度图象绘制其灰度直方图 , 观察其前后的直方图变化 .2. 用 matlab 读取和显示一幅灰度图象; 、3. 制图像的灰度直方图程序:function dis_histo(img=imread('C:\Documents and Settings\Administrator\桌面 \haohao.jpg' figure(100;imshow(img;title('原始图像 ';sum=0;His_Image=zeros(1,256;[m,n]=size(img;for k=0:255for I=1:mfor j=1:nif img(I,j==kHis_Image(k+1=His_Image(k+1+1;endendendendplot(His_Image;figure(100;plot(His_Image;title('图像的灰度直方图 ';原始图像四 . 思考题(1直方图可以反映图像的那些性质灰度直方图只能反映图像的灰度分布情况, 不能反映图像的像素位置; 一幅图像对应唯一的灰度直方图(2如何使直方图曲线光滑?如何识别直方图的峰和谷?恰当量化。
直方图给出一个直观的指标, 用来判断数字化一幅图像量化时是否合理地利用了全部允许的灰度范围。
实验一直方图的统计
实验名称:直方图的修正
一.实验内容:
1.打开bhtmref.img影像,并进行标准假彩色合成;
2.对经过标准假彩色合成后的影像进行均衡化;
3.对经过标准假彩色合成后的影像进行规定划,即与目标影像匹配;
4.对上述三种影像分别进行直方图统计,并比较相关数据。
二.实验所用的仪器设备,包括用到的数据:
ENVI4.3软件,bhtmref.img影像.
三.实验原理:
1.经过标准假彩色合成,分别给TM2,TM3,TM4赋予蓝绿红三色,使图像清晰,特征明显;2.对原始直方图进行一定的加工,使其各像元的灰度变得均匀;
3.对原始直方图进行一定的加工,使其变成事先规定的直方图。
4.分别对各次所得到的直方图进行统计。
四.实验步骤及其结果分析:
1.对bhtmref.img影像先进行直方图的统计,然后输出,并截图如下:
2.对经过均衡化的影像进行直方图的统计,然后输出,并截图如下:
3.对给定影像,进行直方图的统计,并输出如下:
4.对进行规定化后的影像,进行直方图的统计,截图如下:
五.实验中遇到的问题及其解决方法:
问题一:初次使用ENVI软件,对软件的功能比较陌生,怎么办?
答:通过做作业来加强练习,效果不错。
问题二:实验操作基本掌握,但是对其本质的理解不够透彻,如何解决?
答:首先通过自己不断操作,来不断加深印象,然后通过与同学之间的交流,、取长补短,共同进步,加深对知识的理解。
问题三:对以后遥感课程的学习有何打算?
答:上课一定要认真听讲,不能走神,充分把握重点难点,课后认真复习,课前认真预习。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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三个颜色通道的灰度直方图可知,原图像的像素灰度值大部分集中在亮区,一般在摄影中曝光太弱将会导致这种结果。