matlab自学笔记(3)—图像绘制与图像处理

  

1、绘制函数的图像

在matlab中绘制函数的图像大概可以分为三步,1、定义函数;22、制定取值范围;3、调用plot(x,y)函数。

例如我们绘制 y =  sin (x)的图像,可以使用如下的代码:

当然,我们还可以对图像进行一些优化与处理,比如为坐标轴加上标签,加上网格等。直接看代码及效果:

x = [0:0.1:10];

y = sin(x);

plot(x,y),xlabel(‘x‘),ylabel(‘sin(x)‘),legend(‘x‘),grid on;

%xlabel()是显示x轴的标识符,legend是为线加上注解,gird on 是加上网格。

当然,我们也可以同时显示多张图片,使用的是函数subplot(x,y,z);x是指图像有x行,y指图像有y列,z是值要显示的图像是第几个。下面,用一个简单的例子说明一下。

x = [0:0.1:10];

y = sin(x);

z = cos(x);

subplot(1,2,1),plot(x,y),xlabel(‘x‘),ylabel(‘sin(x)‘),legend(‘x‘),title(‘正弦图像‘),grid on;

%左边显示正弦

subplot(1,2,2),plot(x,z),xlabel(‘x‘),ylabel(‘cos(x)‘),legend(‘x‘),title(‘余弦图像‘),grid on;

%右边显示余弦

%xlabel()是显示x轴的标识符,legend是为线加上注解,gird on是加上网格,

%title是加上标题。

当然,matlab的图像方面的功能不仅仅就画个函数图像这么简单。它还能对图像矩阵进行数字化的处理。

2、处理图像文件

要处理一幅图像首先要理解图像的本质,下面是在网上找的一个资料:

http://www.ilovematlab.cn/thread-164340-1-1.html

从理论上讲,图像是一种二维的连续函数,然而在计算机上对图像进行数字处理的时候,首先必须对其在空间和亮度上进行数字化,这就是图像的采样和量化的过程。空间坐标(x,y)的数字化称为图像采样,而幅值数字化称为灰度级量化。
对一幅图像采样时,若每行(横向)采样数为M,每列(纵向)采样数为N,则图像大小为M*N个像素, f(x,y)表示点(x,y) 处的灰度值,则F(x,y)构成一个M*N 实数矩阵
****************************
经验分享:“像素”的英文为“pixel”,它是“picture”和“element”的合成词,表示图像元素的意思。我们可以对“像素”进行如下理解:像素是一个面积概念,是构成数字图像的最小单位。
****************************
把采样后所得的各像素灰度值从模拟量到离散量的转换称为图像灰度的量化。量化是对图像幅度坐标的离散化,它决定了图像的幅度分辨率。
量化的方法包括:分层量化、均匀量化和非均匀量化。分层量化是把每一个离散样本的连续灰度值只分成有限多的层次;均匀量化是把原图像灰度层次从最暗至最亮均匀分为有限个层次,如果采用不均匀分层就称为非均匀量化。
当图像的采样点数一定时,采用不同量化级数的图像质量不一样。量化级数越多,图像质量越好;量化级数越少,图像质量越差。量化级数小的极端情况就是二值图像。
****************************
经验分享:“灰度”可以认为是图像色彩亮度的深浅。图像所能够展现的灰度级越多,也就意味着图像可以表现更强的色彩层次。如果把黑——灰——白连续变化的灰度值量化为256个灰度级,灰度值的范围为0~255,表示亮度从深到浅,对应图像中的颜色为从黑到白。
****************************
因此,对数字图像进行处理,也就是对特定的矩阵进行处理。在C语言中,对M×N数字图像处理的核心代码如下:
for (j=1;j<N+1;j++)
   for(i=1;i<M+1;i++)
   { 对I(i,j)的具体运算
};
在Matlab中,对M×N数字图像处理的核心代码如下:
for i=1:N
    for j=1:M
      对I(i,j)的具体运算
    end
end

一幅数字图像可以用一个矩阵来表示,对数字图像进行处理,实质上就是对特定的图像矩阵进行变换的过程,因此,图像变换是数字图像处理技术的基础。
图像变换的方法林林总总,多种多样。包括空间域变换、频率域变换、时频域变换、基于经典数学理论的变换、基于现代数学理论的变换。

如果想读入一幅图像的话,可以使用imread() 函数,那么怎样去了解这个函数的具体使用呢,再分享一招给大家,可以在命令窗口中输入,help
imread
 这样就会返回对这个函数的具体介绍以及一些使用的例子。

最简单的使用方法是:A = imread(FILENAME,FMT)

返回值的介绍:The return value A is an
array containing the image data. If the file contains a grayscale image, A is
an M-by-N array. If the file contains  a
truecolor image, A is an M-by-N-by-3 array. For TIFF files containing color
images that use the CMYK color space, A is an M-by-N-by-4 array. See TIFF in
the Format-Specific Information section for more    information..
可见,随着图像的性质的不同(是灰度图,还是彩图等),返回的矩阵也不相同。

至于图像的具体处理都是数学矩阵方面的功夫。这里就不多述了。

这一篇应该是这个系列的最后一篇,说实话,matlab这个软件用起来很简单,但是,利用它处理的数学问题大多较为困难。这也是学习的一个方向。

时间: 2024-10-26 15:58:31

matlab自学笔记(3)—图像绘制与图像处理的相关文章

matlab学习笔记,图像分块

clc; clear all; close all; I = imread('E:\matlab\files-images\tomsen512.jpg'); rs = size(I, 1);% 行数cs = size(I, 2); % 列数% ch为列间隔 cw为行间隔 ,控制分块图像的大小,如现在的8*8% numr为间隔块个数 numc为间隔块个数ch = 8;   cw = 8; numr = round(rs/ch); numc = round(cs/cw); % 区域块分割t1 = (

matlab自学笔记(1)

学习matlab实属是机缘巧合,因为要参加一个大学生的数学建模大赛,而这个比赛必备的软件方面的技能就是matlab.通过几天的实践与学习,我发现与C.java语言等语言相比,matlab所使用的代码无疑是简单了许多的.下面,我就将几天的学习体验分享一下. 安装: 首先我使用的版本是matlab2012a版本,主要是考虑到电脑里的软件较多,配置有限.该版本的安装包为4,5G,安装后占用的空间大概是6.2G. 此处选择不使用Internet安装. 此处,可以提供一个 38699-60149-3680

matlab自学笔记(2)

Matlab的控制台界面可以进行简单的计算,例如计算一组数据的平均数,方差等等.系统已经将实现这些功能的函数完成,使用是只需查看help 文档即可. 例如求平均数的操作,在matlab中使用mean函数实现,具体的操作在文档的中都有说明. 自上而下的,是mean函数的功能概述,syntax (语法),即调用的格式.Description,对函数功能的具体描述.Example中,是一些例子. 然而,matlab作为一款强大的数学编程工具,也提供了执行程序文件的功能.在matlab中可执行的程序文件

HTML5 Canvas 学习笔记(canvas绘制线条、矩形、多边形、圆形、圆环、组合图形、文字、自定义图像)

学习资源:http://www.w3school.com.cn/html5/html_5_canvas.asp   http://blog.csdn.net/clh604/article/details/8536059   http://www.jb51.net/html5/70307.html 一.对 canvas 的理解 <canvas>标签是 HTML5 中的新标签,像所有的 dom 对象一样它有自己本身的属性.方法和事件. canvas 是用来在网页上绘制图形的(我们通常称之为画布),

C#数字图像处理算法学习笔记(一)--C#图像处理的3中方法

C#数字图像处理算法学习笔记(一)--C#图像处理的3中方法 Bitmap类:此类封装了GDI+中的一个位图,次位图有图形图像及其属性的像素数据组成.因此此类是用于处理像素数据定义的图形的对象.该类的主要方法和属性如下:  GetPixel与SetPixel方法:获取或设置一个图像的指定像素的颜色. PixelFormat属性:返回图像的像素格式. Height和Width:返回图像的高度和宽度. LockBits与UnLockBits方法:分别锁定和解锁系统内存中的位图像素. LockBits

CSS自学笔记(11):CSS3背景和边框

CSS3 背景 在CSS3中新增了多个关于背景的属性,可以让我们对背景有了更多更好的操作,减少用第三方工具对背景图片进行修改美化. CSS3中主要是通过定义backgrounp中的各个属性来控制背景(高宽,位置,透明度----). 关于背景的部分常用属性有(*为CSS3中新增属性): 值 描述 background-color 规定要使用的背景颜色. background-position 规定背景图像的位置. background-size* 规定背景图片的尺寸. background-rep

CSS自学笔记(5):CSS的样式

CSS中拥有各种各样的样式表,而基本的样式有背景,文本,字体,链接,列表,表格,轮廓. 一.CSS-背景 CSS中允许用纯色背景,也允许用图片来创建复杂的个性背景. p {background-color: #000;} 是用纯色作为背景.这时你可以定义其他属性,生成不同效果的背景. CSS中也可以用图片作为背景,这是就需要使用background-image属性了,如果属性值为一个URL值,并且图片文件存在,那么就可以看到用该图片做为背景的网页了 body {background-image:

图像编程学习笔记5——图像镜像

以下文字内容copy于<<数字图像处理编程入门>>,code为自己实现,是win32控制台程序. 镜象(mirror)分水平镜象和垂直镜象两种.图2.2的水平镜象和垂直镜象分别如图2.13和图2.14所示 图2.13   图2.2的水平镜象 图2.14   图2.2的垂直镜象 镜象的变换矩阵很简单.设原图宽为w,高为h,变换后,图的宽和高不变. 水平镜象的变化矩阵为: (2.10) 垂直镜象的变化矩阵为: (2.11) 镜象变换的源代码如下,因为和平移的那段程序很类似,程序中的注释

图像编程学习笔记8——图像的平滑(去噪)

第一种方法:高斯模版 以下文字内容copy于<<数字图像处理编程入门>>,code为自己实现,是win32控制台程序. 先举个例子说明一下什么是平滑(smoothing),如下面两幅图所示:可以看到,图3.2比图3.1柔和一些(也模糊一些).是不是觉得很神奇?其实实现起来很简单.我们将原图中的每一点的灰度和它周围八个点的灰度相加,然后除以9,作为新图中对应点的灰度,就能实现上面的效果. 这么做并非瞎蒙,而是有其道理的.大概想一想,也很容易明白.举个例子,就象和面一样,先在中间加点水