搜档网
当前位置:搜档网 › 使用matlab绘画柱状图,且使用不同的图案填充

使用matlab绘画柱状图,且使用不同的图案填充

使用matlab绘画柱状图,且使用不同的图案填充
使用matlab绘画柱状图,且使用不同的图案填充

精通MATLAB语言,有MATLAB编程问题的朋友,请直接联系我!

联系方式:

QQ:993878382

Email:993878382@https://www.sodocs.net/doc/1c11983425.html,

MATLAB博客:https://www.sodocs.net/doc/1c11983425.html,/46036333_d.html

更多学习资料和电子书,请直接访问我的博客!

如果我QQ不在线,请将问题发到我的邮箱,或者直接给我QQ留言,第一时间答复你!简单问题请直接留言,复杂问题可以提供解决思路!同探讨,共进步!

还可以为公司和科研单位设计各类算法,欢迎前来咨询!

郑重声明:本资源来源于网络,仅限交流使用,请勿用于商业用途!

在论文中,图表往往发挥着极为重要的作用,好的图表将能进一步提升论文的质量。在书写论文时,很多时候需要绘制柱状图,然而不同的柱状图如果采用颜色区分,当论文打印以后,视觉效果大打折扣,甚至无法区分。在遇到这个问题时,我通过网站论坛搜索,终于找到了在matlab 中绘制柱状图,并采用不同的图案进行表示。主要利用下面的代码。

代码出自:https://www.sodocs.net/doc/1c11983425.html,/~dvimont/matlab/Graphics_Tools/applyhatch.html

function applyhatch(h,patterns,colorlist)

%APPLYHATCH Apply hatched patterns to a figure

% APPLYHATCH(H,PATTERNS) creates a new figure from the figure H by

% replacing distinct colors in H with the black and white

% patterns in PATTERNS. The format for PATTERNS can be

% a string of the characters '/', '\', '|', '-', '+', 'x', '.'

% a cell array of matrices of zeros (white) and ones (black)

%

% APPLYHATCH(H,PATTERNS,COLORS) maps the colors in the n by 3

% matrix COLORS to PATTERNS. Each row of COLORS specifies an RGB

% color value.

%

% Note this function makes a bitmap image of H and so is limited

% to low-resolution, bitmap output.

%

% Example 1:

% bar(rand(3,4));

% applyhatch(gcf,'\-x.');

%

% Example 2:

% colormap(cool(6));

% pie(rand(6,1));

% legend('Jan','Feb','Mar','Apr','May','Jun');

% applyhatch(gcf,'|-+.\/',cool(6));

%

% See also: MAKEHATCH

% By Ben Hinkle, bhinkle@https://www.sodocs.net/doc/1c11983425.html, % This code is in the public domain.

oldppmode = get(h,'paperpositionmode'); oldunits = get(h,'units');

set(h,'paperpositionmode','auto');

set(h,'units','pixels');

figsize = get(h,'position');

if nargin == 2

colorlist = [];

end

bits = hardcopy(h,'-dzbuffer','-r0');

set(h,'paperpositionmode',oldppmode); bwidth = size(bits,2);

bheight = size(bits,1);

bsize = bwidth * bheight;

if ~isempty(colorlist)

colorlist = uint8(255*colorlist); [colors,colori] = nextnonbw(0,colorlist,bits); else

colors = (bits(:,:,1) ~= bits(:,:,2)) | ...

(bits(:,:,1) ~= bits(:,:,3));

end

pati = 1;

colorind = find(colors);

while ~isempty(colorind)

colorval(1) = bits(colorind(1));

colorval(2) = bits(colorind(1)+bsize);

colorval(3) = bits(colorind(1)+2*bsize);

if iscell(patterns)

pattern = patterns{pati};

elseif isa(patterns,'char')

pattern = makehatch(patterns(pati));

else

pattern = patterns;

end

pattern = uint8(255*(1-pattern));

pheight = size(pattern,2);

pwidth = size(pattern,1);

ratioh = ceil(bheight/pheight);

ratiow = ceil(bwidth/pwidth);

bigpattern = repmat(pattern,[ratioh ratiow]);

if ratioh*pheight > bheight

bigpattern(bheight+1:end,:) = [];

end

if ratiow*pwidth > bwidth

bigpattern(:,bwidth+1:end) = [];

end

bigpattern = repmat(bigpattern,[1 1 3]);

color = (bits(:,:,1) == colorval(1)) & ...

(bits(:,:,2) == colorval(2)) & ...

(bits(:,:,3) == colorval(3));

color = repmat(color,[1 1 3]);

bits(color) = bigpattern(color);

if ~isempty(colorlist)

[colors,colori] = nextnonbw(colori,colorlist,bits); else

colors = (bits(:,:,1) ~= bits(:,:,2)) | ...

(bits(:,:,1) ~= bits(:,:,3));

end

colorind = find(colors);

pati = (pati + 1);

if pati > length(patterns)

pati = 1;

end

end

newfig = figure('units','pixels','visible','off');

imaxes = axes('parent',newfig,'units','pixels');

im = image(bits,'parent',imaxes);

fpos = get(newfig,'position');

set(newfig,'position',[fpos(1:2) figsize(3) figsize(4)+1]);

set(imaxes,'position',[0 0 figsize(3) figsize(4)+1],'visible','off'); set(newfig,'visible','on');

function [colors,out] = nextnonbw(ind,colorlist,bits)

out = ind+1;

colors = [];

while out <= size(colorlist,1)

if isequal(colorlist(out,:),[255 255 255]) | ...

isequal(colorlist(out,:),[0 0 0])

out = out+1;

else

colors = (colorlist(out,1) == bits(:,:,1)) & ...

(colorlist(out,2) == bits(:,:,2)) & ...

(colorlist(out,3) == bits(:,:,3));

return

end

而applyhatch函数需要调用下面的函数

function A = makehatch(hatch)

%MAKEHATCH Predefined hatch patterns

% MAKEHATCH(HATCH) returns a matrix with the hatch pattern for HATCH % according to the following table:

% HATCH pattern

% ------- ---------

% / right-slanted lines

% \ left-slanted lines

% | vertical lines

% - horizontal lines

% + crossing vertical and horizontal lines

% x criss-crossing lines

% . single dots

%

% See also: APPLYHATCH

% By Ben Hinkle, bhinkle@https://www.sodocs.net/doc/1c11983425.html,

% This code is in the public domain.

n = 6;

A=zeros(n);

switch (hatch)

case '/'

A = fliplr(eye(n));

case '\'

A = eye(n);

case '|'

A(:,1) = 1;

A(1,:) = 1;

case '+'

A(:,1) = 1;

A(1,:) = 1;

case 'x'

A = eye(n) | fliplr(diag(ones(n-1,1),-1)); case '.'

A(1:2,1:2)=1;

otherwise

error(['Undefined hatch pattern "' hatch '".']); end

效果如下图所示

基于Matlab基本图像处理程序

图像读入 ●从图形文件中读入图像 imread Syntax: A = imread(filename, fmt) filename:指定的灰度或彩色图像文件的完整路径和文件名。 fmt:指定图形文件的格式所对应的标准扩展名。如果imread没有找到filename所制定的文件,会尝试查找一个名为filename.fmt的文件。 A:包含图像矩阵的矩阵。对于灰度图像,它是一个M行N列的矩阵。如果文件包含 RGB真彩图像,则是m*n*3的矩阵。 ●对于索引图像,格式[X, map] = imread(filename, fmt) X:图像数据矩阵。 MAP:颜色索引表 图像的显示 ●imshow函数:显示工作区或图像文件中的图像 ●Syntax: imshow(I) %I是要现实的灰度图像矩阵 imshow(I,[low high],param1, val1, param2, val2,...) %I是要现实的灰度图像矩阵,指定要显示的灰度范围,后面的参数指定显示图像的特定参数 imshow(RGB) imshow(BW) imshow(X,map) %map颜色索引表 imshow(filename) himage = imshow(...) ●操作:读取并显示图像 I=imread('C:\Users\fanjinfei\Desktop\baby.bmp');%读取图像数据 imshow(I);%显示原图像 图像增强 一.图像的全局描述 直方图(Histogram):是一种对数据分布情况的图形表示,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量。 图像直方图(Image Histogram):是表示数字图像中亮度分布的直方图,用来描述图象灰度值,标绘了图像中每个亮度值的像素数。 灰度直方图:是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图 像中某种灰度出现的频率。描述了一幅图像的灰度级统计信息。是一个二维图,横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各个灰度级别的像素在图像中出现的次数或概率。 归一化直方图:直接反应不同灰度级出现的比率。纵坐标表示具有各个灰度级别的像

基于matlab的直方图均衡化

目录 1、引言 (2) 2、直方图基础 (3) 3、直方图均衡化 (3) 3.1 直方图均衡化的概念 (3) 3.2 直方图均衡化理论 (4) 3.3 Matlab 实现 (4) 4、结论 (7) 致谢 (7) 参考文献 (7)

图像增强处理 —直方图均衡化的Matlab 实现摘要:为了使图像的灰度范围拉开或使灰度均匀分布,从而增大反差,使图像细节清晰,以达到增强的目的,通常采用直方图均衡化及直方图规定化两种变换,此文中探讨了直方图的理论基础,直方图均衡化的概念及理论,以Matlab为平台,对某地区遥感TM单波段遥感影像进行直方图均衡化,并给出了具体程序、仿真结果图像、直方图及变换函数。实验结果表明,原来偏暗的且对比度较低的图像经过直方图均衡化后图像的对比度及平均亮度明显提高,直方图均衡化处理能有效改善灰度图像的对比度差和灰度动态范围。 关键词:图像增强直方图均衡化 Matlab 1、引言 图像增强是指对图像的某些特征,如边缘、轮廓或对比度等进行强调或尖锐化。当一幅图像曝光不足或过度,造成对比度过小或过大而不能显示具体细节,通过增加这些细节的动态范围改善图像的视觉效果。图像增强可以突出图像中所感兴趣的特征信息,改善图像的主观视觉质量,提高图像的可懂度。 增强的首要目标是处理图像,使其比原始图像更适合于特定应用。图像增强的方法分为两大类:空间域方法和频域方法。“空间域”一词是指图像平面本身,这类方法是以对图像的像素直接处理为基础的。“频域”处理技术是以修改图像的傅氏变换为基础的。 一般说来,原始遥感数据的灰度值范围都比较窄,这个范围通常比显示器的显示范围小的多。增强处理可将其灰度范围拉伸到0-255 的灰度级之间来显示,从而使图像对比度提高,质量改善。增强主要以图像的灰度直方图最为分析处理的基础。直方图均衡化能够增强整个图像的对比度,提高图像的辨析程度,算法简单,增强效果好。本文主要讨论了空间域的直方图均衡化增强,并用Matlab 进行实验验证。 2、直方图基础 1、灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像元的个数。确定图像像

绘制数字图像灰度直方图实验报告MATLAB实现

数字图像处理 实验报告 实验一绘制直方图 学号 姓名 日期

实验一绘制直方图 一、实验内容 1、编程绘制数字图像的直方图。 2、直方图均衡处理。 二、实验步骤 1、设计思想或者流程图。 灰度直方图是将数字图像的所有像素,按照灰度值的大小,统计其所出现的频度。通常,灰度直方图的横坐标表示灰度值,纵坐标为半个像素个数,也可以采用某一灰度值的像素数占全图像素数的百分比作为纵坐标。 直方图均衡方法的基本原理是:对在图像中像素个数多的灰度值(即对画面起主要作用的灰度值)进行展宽,而对像素个数少的灰度值(即对画面不起主要作用的灰度值)进行归并。从而达到清晰图像的目的。 2、源程序并附上注释。 clear all %一,图像的预处理,读入彩色图像将其灰度化 PS=imread('1.jpg');%读入JPG彩色图像文件 imshow(PS)%显示出来 title('输入的彩色JPG图像') imwrite(rgb2gray(PS),'PicSampleGray.bmp');%将彩色图片灰度化并保存 PS=rgb2gray(PS);%灰度化后的数据存入数组 %二,绘制直方图 [m,n]=size(PS);%测量图像尺寸参数 GP=zeros(1,256);%预创建存放灰度出现概率的向量for k=0:255 GP(k+1)=length(find(PS==k))/(m*n);%计算每级灰度出现的概率,将其存入GP中相应位置 end figure,bar(0:255,GP,'g')%绘制直方图 title('原图像直方图') xlabel('灰度值') ylabel('出现概率') %三,直方图均衡化 S1=zeros(1,256); for i=1:256 for j=1:i S1(i)=GP(j)+S1(i);%计算Sk end end S2=round((S1*256)+0.5);%将Sk归到相近级的灰度for i=1:256 GPeq(i)=sum(GP(find(S2==i)));%计算现有每个灰度级出现的概率

基于matlab的直方图均衡化

课程设计报告 题目基于matlab的直方图均衡化程序设计 学生姓名: 学生学号: 系别: 专业: 届别: 指导教师: 电气信息工程学院制

目录 1、引言·······················································································- 2 - 2、直方图基础 ···············································································- 2 - 3、直方图均衡化············································································- 3 -3.1 直方图均衡化的概念·····················································································- 3 -3.2 直方图均衡化理论························································································- 4 - 3.3 Matlab 实现······························································································- 4 - 4、结论 ······················································································- 10 - 5、心得体会················································································- 10 -参考文献·····················································································- 10 - 基于matlab的直方图均衡化程序设计

课设报告正文(MATLAB的图像直方图的计算与显示)

目录 摘要........................................................................ I 1 基础介绍 (1) 1.1MATLAB简介 (1) 1.2数字图像处理简介 (1) 2 设计原理分析 (3) 2.1灰度直方图的定义 (3) 2.2设计原理 (3) 2.3常用函数介绍 (3) 3 程序及运行结果 (4) 3.1流程图 (4) 3.2源程序 (4) 3.3运行结果 (5) 3.4库函数运行结果 (7) 4设计总结 (8) 5心得体会 (9) 参考文献 (10)

1 基础介绍 1.1MATLAB简介 MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。 1.2数字图像处理简介 数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。数字图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。数字图像处理作为一门学科大约形成于20世纪60年代初期。早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。

基于Matlab基本图像处理程序

基于Matlab基本图像处理程序

————————————————————————————————作者:————————————————————————————————日期: ?

图像读入 ●从图形文件中读入图像imread Syntax:A = imread(, fmt) :指定的灰度或彩色图像文件的完整路径和文件名。 fmt:指定图形文件的格式所对应的标准扩展名。如果imread没有找到所制定的文件,会尝试查找一个名为的文件。 A:包含图像矩阵的矩阵。对于灰度图像,它是一个M行N列的矩阵。如果文件包含RGB 真彩图像,则是m*n*3的矩阵。 ●对于索引图像,格式[X, map]=imread(, fmt) X:图像数据矩阵。 MAP:颜色索引表 图像的显示 ●imshow函数:显示工作区或图像文件中的图像 ●Syntax: imshow(I) %I是要现实的灰度图像矩阵 imshow(I,[low high],param1,val1, param2, val2,...) %I是要现实的灰度图像矩阵,指定要显示的灰度范围,后面的参数指定显示图像的特定参数 imshow(RGB) imshow(BW) imshow(X,map) %map颜色索引表 imshow() himage=imshow(...)

●操作:读取并显示图像 I=imread('C:\Users\fanjinfei\Desktop\baby.bmp');%读取图像数据imshow(I);%显示原图像 图像增强 一.图像的全局描述 直方图(Histogram):是一种对数据分布情况的图形表示,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量。 图像直方图(Image Histogram):是表示数字图像中亮度分布的直方图,用来描述图象灰度值,标绘了图像中每个亮度值的像素数。 灰度直方图:是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图像中某种灰度出现的频率。描述了一幅图像的灰度级统计信息。是一个二维图,横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各个灰度级别的像素在图像中出现的次数或概率。 归一化直方图:直接反应不同灰度级出现的比率。纵坐标表示具有各个灰度级别的像素在图像中出现的概率。 图像的灰度直方图:是一个离散函数,表示图像每一灰度级与该灰度级出现概率的对应关系。 图像的灰度直方图运算: imhist()函数,其横坐标表示像素的灰度级别,纵坐标为像素点的个数。 ●Imhist函数=Display histogramof image data显示灰度直方图的函数 ●Syntax: ①imhist(I) % I为要计算的灰度直方图图像 ②imhist(I, n) %n指定的灰度级的数目,表示所有灰度级均匀分布在n个小区间内。 ③imhist(X, map) ④[counts,x] =imhist(...)%counts直方图数据向量。counts(i)第i个灰度区间中的像素数目。x是保存了对应的灰度小区间的向量。 注意:若调用时不接受这个函数的返回值,则直接显示直方图;在得这些返回数据之后,也可

MATLAB中的绘图程序

MATLAB中的绘图程序 2011-03-25 12:45:48| 分类:matlab | 标签:绘图 matlab |字号大中小订阅 matlab中如何在指定一点画一个填充颜色的小圆 plot(1,1,'r.','markersize',50) §4.1二维作图 绘图命令plot绘制x-y坐标图;loglog命令绘制对数坐标图;semilogx和semilogy命令绘制半对数坐标图;polar命令绘制极坐标图. §4.1.1 基本形式 如果y是一个向量,那么plot(y)绘制一个y中元素的线性图.假设我们希望画出 y=[0., 0.48, 0.84, 1., 0.91, 6.14 ] 则用命令:plot(y) 它相当于命令:plot(x, y),其中x=[1,2,…,n]或x=[1;2;…;n],即向量y的下标编号, n为向量y 的长度 Matlab会产生一个图形窗口,显示如下图形,请注意:坐标x和y 是由计算机自动绘出的. 图4.1.1.1 plot([0.,0.48,0.84,1.,0.91,6.14]) 上面的图形没有加上x轴和y轴的标注,也没有标题.用xlabel,ylabel,title命令可以加上.如果x,y是同样长度的向量,plot(x,y)命令可画出相应的x元素与y元素的x-y坐标图.例:x=0:0.05:4*pi; y=sin(x); plot(x,y) grid on, title(' y=sin( x ) 曲线图' ) xlabel(' x = 0 : 0.05 : 4Pi ') 结果见下图.

图4.1.1.2 y=sin(x)的图形 表4.1.1.1 Matlab图形命令 §4.1.2 多重线 在一个单线图上,绘制多重线有三种办法. 第一种方法是利用plot的多变量方式绘制: plot(x1,y1,x2,y2,...,xn,yn) x1,y1,x2,y2,...,xn,yn是成对的向量,每一对x, y在图上产生如上方式的单线.多变量方式绘图是允许不同长度的向量显示在同一图形上. 第二种方法也是利用plot绘制,但加上hold on/off命令的配合: plot(x1,y1) hold on plot(x2,y2) hold off 第三种方法还是利用plot绘制,但代入矩阵: 如果plot用于两个变量plot(x,y),并且x,y是矩阵,则有以下情况: (1)如果y是矩阵,x是向量,plot(x,y)用不同的画线形式绘出y的行或列及相应的x向量,y的行或列的方向与x向量元素的值选择是相同的. (2)如果x是矩阵,y是向量,则除了x向量的线族及相应的y向量外,以上的规则也适用.(3)如果x,y是同样大小的矩阵,plot(x,y)绘制x的列及y相应的列. 还有其它一些情况,请参见Matlab的帮助系统. §4.1.3 线型和颜色的控制 如果不指定划线方式和颜色,Matlab会自动为您选择点的表示方式及颜色.您也可以用不同的符号指定不同的曲线绘制方式.例如:

数字图像处理MATLAB程序完整版

第一部分数字图像处理

实验一图像的点运算 实验1.1直方图 一. 实验目的 1 ?熟悉matlab图像处理工具箱及直方图函数的使用; 2?理解和掌握直方图原理和方法; 二. 实验设备 1. PC 机一台; 2.软件matlab。 三. 程序设计 在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。l=imread('camerama n.tif);% 读取图像 subplot(1,2,1),imshow(l) % 输出图像 title(' 原始图像')% 在原始图像中加标题subplot(1,2,2),imhist(l) % 输出原图直方图 title(' 原始图像直方图')%在原图直方图上加标题 四. 实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab 环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像, 如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像; 3?浏览源程序并理解含义; 4. 运行,观察显示结果; 5. 结束运行,退出; 五. 实验结果 观察图像matlab环境下的直方图分布。 (a)原始图像(b) 原始图像直方图 六. 实验报告要求 1、给出实验原理过程及实现代码; 2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。

实验1.2灰度均衡 一. 实验目的 1 .熟悉matlab图像处理工具箱中灰度均衡函数的使用; 2?理解和掌握灰度均衡原理和实现方法; 二. 实验设备 1. PC机一台; 2. 软件matlab ; 三. 程序设计 在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。l=imread('camerama n.tif);% 读取图像 subplot(2,2,1),imshow(l) % 输出图像title(' 原始图像')% 在原始图像中加标题subplot(2,2,3),imhist(l) % 输出原图直方图 title(' 原始图像直方图')%在原图直方图上加标题a=histeq(l,256); % 直方图均衡化,灰度级为256 subplot(2,2,2),imshow(a) % 输出均衡化后图像title(' 均衡化后图像')%在均衡化后图像中加标题 subplot(2,2,4),imhist(a) % 输出均衡化后直方图 title(' 均衡化后图像直方图')%在均衡化后直方图上加标题 四. 实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab 环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像, 如:cameraman图像;再调用相应的灰度均衡函数,设置参数;最后输出处理后的图像; 3?浏览源程序并理解含义; 4. 运行,观察显示结果; 5. 结束运行,退出; 五. 实验结果 观察matlab环境下图像灰度均衡结果及直方图分布。 均衡化后图像

直方图均衡化matlab程序

直方图和直方图均衡的Matlab完整程序(数字图像处理) 一、实验目的 掌握基本的图象增强方法,观察图象增强的效果,加深对灰度直方图及直方图均衡化的理解,掌握直方图均衡化方法。 二、实验内容 将一张彩色图片转换成灰色图片,画灰度直方图和均衡化后的直方图,并将灰度图和均衡化后的图片对比。 三、实验原理 灰度直方图是将数字图像中的所有像素,按照灰度值的大小,统计其所出现的频度。通常,灰度直方图的横坐标表示灰度值,纵坐标为像素个数,也可以采用某一灰度值的像素数占全图像素数的百分比作为纵坐标。 直方图均衡方法的基本原理是:对在图像中像素个数多的灰度值(即对画面起主要作用的灰度值)进行展宽,而对像素个数少的灰度值(即对画面不起主要作用的灰度值)进行归并。从而达到清晰图像的目的。 四、实验程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%% %函数功能,画出图像的直方图,并对图像进行直方图均衡 %直接读图像abc.jpg,读到tuu中 %graydis是原始直方图各灰度级像素个数

%原始直方图graydispro,利用原始直方图计算原始累计直方图graydispro %t[]计算和原始灰度对应的新的灰度t[],建立映射关系,t坐标代表原始的灰度,t[]代表对应原始坐标的新坐标 %new_graydis是统计新直方图各灰度级像素个数 %计算新的灰度直方图new_graydispro,利用新的直方图计算新的累计直方图new_graydispro %计算直方图均衡后的新图new_tu %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%% clear all close all tuu=imread('abc.jpg'); %读入图片 tu=rgb2gray(tuu); %将彩色图片转换为灰度图 graydis=zeros(1,256); %设置矩阵大小 graydispro=zeros(1,256); new_graydis=zeros(1,256); new_graydispro=zeros(1,256); [h w]=size(tu); new_tu=zeros(h,w); %计算原始直方图各灰度级像素个数graydis for x=1:h

用MATLAB绘制频率分布直方图和累积图

数学建模假期8月9日作业 (发送邮件到gongchengjys@https://www.sodocs.net/doc/1c11983425.html,) 一、作频率直方图和累积频率直方图 82 89 97 92 85 79 89 80 83 87 92 85 65 73 58 62 30 67 79 74 81 80 67 68 83 52 46 98 76 二、编程序:单因素方差分析、双因素方差分析 三、某大学希望了解本校管理学院四个专业毕业的MBA学生与另外四所大学的管理学院相同专业毕业的MBA学生相比,工作后第一年的收入是否具有优势,做了如下调查: 五所大学毕业生第一年收入调查表 问MBA学生毕业后收入是否与选择的学校有关? Matlab代码: clc,clear x0=[9.6,8.3,5.2 6.8,10.2,4.6 11,7.3,5.2 7.5,6.3,9 4.5,6.8,8

7.8,12.1,11.2 8.1,18,6.5 5.7,4.9,13 9.8,7,3.6 3.8,5.2,1.8 11.3,14,6.2 4.2,9.5,8 8.2,7.3,15 7.4,16,8.5 6.3,2.6,12 9.5,10.6,8.2 6.4,3.6,12 7.5,18,9.4 12,15,8.8 5.2,2.1,7.8]; x1=x0(:,1:3:13);x2=x0(:,2:3:14); x3=x0(:,3:3:15); for i=1:4 x(3*i-2,:)=x1(i,:); x(3*i,:)=x2(i,:); x(3*i,:)=x3(i,:); end [p,t,st]=anova2(x,2) 输出:p = 0.8576 0.1504 1.0000 t = Columns 1 through 3 'Source' 'SS' 'df' 'Columns' [ 34.8640] [ 4] 'Rows' [ 235.2773] [ 5]

matlab画直方图

1.画直方图 基本: clf A=[170 120 180 200 190 220]'; B=[120 100 110 180 170 180]'; C=[70 50 80 100 95 120]'; bar([A,B,C],'stacked') colormap(cool) legend('A','B','C',2) 扩充: clf A=[170 120 180 200 190 220]'; B=[120 100 110 180 170 180]'; C=[70 50 80 100 95 120]'; subplot(2,2,1),bar([A,B,C],0.5,'stacked') legend('A','B','C',2) title('bar/粗细0.5')

subplot(2,2,2),bar([A,B,C],'grouped') legend('A','B','C',2) title('bar/grouped') subplot(2,2,3),bar3([A,B,C],'stacked') legend('A','B','C',1) title('bar3') subplot(2,2,4),bar3([A,B,C],'detached') legend('A','B','C',1) title('bar3/detached') colormap(summer) 2.三维透视网格曲面图 x=-3:0.1:3; y=x; [x,y]=meshgrid(x,y); z1=4.*x.*exp(-x.^2-y.^2); subplot(1,2,1),mesh(x,y,z1); subplot(1,2,2),ezmesh('4*x*exp(-x^2-y^2)'); hidden off

实验九 Matlab基本绘图

实验九 Matlab 基本绘图 一、实验目的 1、理解MATLAB 绘图方法 2、掌握绘制二维数据曲线图的方法 3、掌握用plot 函数和fplot 函数绘制曲线的方法 4、通过练习掌握绘制二维数据曲线图的方法和plot 函数和fplot 函数的使用 二、实验环境 1.计算机 2.MATLAB7.0集成环境 三、实验说明 1.熟练操作MATLAB7.0运行环境 2.自主编写程序,必要时参考相关资料 3.实验前应写出程序大致框架或完整的程序代码 4.实验学时:2学时 四、实验内容和步骤 1.实验内容 (1)绘制下列曲线: ①33x x y - = ②2221x e y π= ③6422 2=+y x

1. 2. 3. (2)通过用plot 、fplot 、ezplot 函数绘制x y 1sin 的曲线,并分析其区别。 Plot: Fplot: Ezplot:

(3)编写程序,该程序在同一窗口中绘制函数在[] 0,2π之间的正弦曲线和余弦曲线,π,线宽为 4 个象素,正弦曲线设置为蓝色实线,余弦曲线颜色设置为红色虚步长为/10 线,两条曲线交点处,用红色星号标记。 (4)绘制下列图像 (1)绘制电脑磁盘使用情况的饼状图 (2)生成100 个从0 到10 之间的随机整数,绘制其直方图 (3)生成10个从0 到10 之间的随机整数,绘制其阶跃图 1. 2. 3. 2.实验步骤

(1)分析实验内容,写出程序大致框架或完整的程序代码。 (2)进入MATLAB7.0集成环境。 (3)编辑程序并进行保存。 (4)运行程序,若有错误,修改错误后再次运行,如此反复进行到不显示出错为止。 (5)检查程序输出结果。 五、实验报告要求 x中的向量大于一的时候用的是

matlab图像处理各种程序代码要点

图像变换(傅立叶变换), 图像增强, 边缘检测, 滤波, 图像压缩等. 实验工具:MA TLAB软件 课程设计时间:2008年12月 实验部分 1. 图像变换 程序代码及说明 clear all N=100; f=zeros(50,50); %产生一个50*50的全0数组 f(15:35,23:28)=1; %定义图像数组,从15行到35行,23列到28列附值为1,为白色,其他区域为黑色figure(1) %创建窗口的图形对象,句柄为1 imshow(f,'notruesize') %显示图像f F=fft2(f,N,N); %在二维傅立叶变换前把f截断或者添加0,使其成为N*N的数组F2=fftshift(abs(F)); %把傅立叶变换的零频率部分移到频谱的中间 figure(2) x=1:N;y=1:N; %定义x和y的范围 mesh(x,y,F2(x,y));colormap(gray);colorbar %绘制立体网状图,将图形对象的色度改为灰度图像,colorbar给坐标轴添加色彩条%构建一个类似于figure(1)的矩形函数 N=200; f=zeros(100,100); f(30:70,45:55)=1; %定义图像数组,从30行到70行,45列到55列附值为1,为白色,其他区域为黑色imshow(f,'notruesize'); %然后对f进行二维快速傅立叶变换:以下列出你自己编写的代码… N=200; f=zeros(100,100); f(30:70,45:55)=1; imshow(f,'notruesize'); title('原始图像'); F=fft2(f,N,N); %对图像f进行二维快速傅立叶变换 grid on %打开网格线 axis on %打开坐标轴 imshow(F,[-1,5],'notruesize'); %显示傅立叶变换后的图像,图像数据的值域为[-1,5] x=1:N;y=1:N; title('二维快速傅立叶变换后的图像'); mesh(abs(F)); %绘制F的频谱图 title('傅立叶变换后的频谱图'); %然后对上述二维快速傅立叶变换提高分辨率: 要提高二维快速傅立叶变换的分辨率,在采样率一定的情况下,增大采 样点数N即可。对应的频谱图见测试结果。 N=300; f=zeros(100,100);

MATLAB中对比两幅图像各种直方图的程序

MATLAB中对比两幅图像各种直方图的程序 文章来源:中国科学院计算技术研究所作者:刘伟民 -------------------------------------------------------------------------------- 该文章讲述了MATLAB中对比两幅图像各种直方图的程序. MATLAB中对比两幅图像各种直方图的程序,程序如下。 figure(1); hold on; aa = 'e:\\d1.jpg'; bb = 'e:\\d4.jpg'; imhist(rgb2gray(imread(aa))); hold off; figure(2); hold on; imhist(rgb2gray(imread(bb))); hold off; imga = imread(aa); imgb = imread(bb); figure(3); hold on; title('imga1'); imhist(imga(:,:,1)); hold off; figure(4); hold on; title('imga2'); imhist(imga(:,:,2)); hold off; figure(5); hold on; title('imga3'); imhist(imga(:,:,3)); hold off; figure(6); hold on;

title('imgb1'); imhist(imgb(:,:,1)); hold off; figure(7); hold on; title('imgb2'); imhist(imgb(:,:,2)); hold off; figure(8); hold on; title('imgb3'); imhist(imgb(:,:,3)); hold off; 3 matlab图像配准的方法--医学图像配准 目前,图像配准技术在医学领域应用得相当广泛。医学图像配准具有很重要的临床应用价值。对各种使用相同或者不同的成像手段所获得的医学图像进行配准不仅可以应用于医疗诊断,也可以应用于手术计划的制定、治疗计划的制定、病理情况的跟踪和治疗效果的评价等各个方面。 下面给出一个具体的图像配准的例子来形象说明配准的应用。 【2】医学图像配准。 (1) 读取图像数据。因为源图像以矩阵形式存在一个二进制的文件里,用fread可将其读取到变量矩阵中。将读取文件编制成一个子函数(RTIread.m)。源代码如下: function imMatrix=RTIread(FILENAME,SIZE) %RTIread Read the image matrix from binary "Registration Test Image" file. % imMatrix=RTIread(FILENAME,SIZE) opens the file FILENAME, and reads the % number of elements specified by SIZE. % % FILENAME is a string containing the name of the file to be opened. % Valid entries for SIZE are: % N read N elements into a column vector.

MATLAB实现 图像直方图及均衡化

1、用matlab作出图像的直方图 clear; I=imread('2222.jpg'); I=rgb2gray(I); 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); figure; stem(final,'Marker','none'); figure(2) imshow(I)

2、用matlab实现图像的直方图均衡化 均衡化前均衡化后

程序: clear; I=imread('2222.jpg'); I=rgb2gray(I); I2=I; add=[]; add1=[]; tab1=zeros(1,256); tab2=zeros(1,256); for n=0:255 X=I==n; add=[add;sum(sum(X))]; end; [a,b]=size(I); final=add/(a*b); for n=1:256 for i=1:n tab1(n)=tab1(n)+final(i); end; end; tab1=tab1*255; tab2=round(tab1); for n=1:a for m=1:b for t=0:255 if I(n,m)==t I2(n,m)=tab2(t+1); end; end; end; end; for n=0:255 X1=I2==n; add1=[add1;sum(sum(X1))]; end; [a1,b1]=size(I2); final1=add1/(a1*b1); figure; stem(final,'Marker','none'); figure(2) imshow(I2); figure(3) stem(final1,'Marker','none') 均衡化后直方图

相关主题