zoukankan      html  css  js  c++  java
  • Matlab图像处理(01)-Matlab基础

    枫竹梦对于Matlab几乎是零基础,只是在上学的时候稍稍接触一点,万万没有想到现在还能用到Matlab。进入正题>>>

    图像的基本概念

    一幅图像可以被定义为一个二维函数f(x,y),x和y表示空间坐标,f在(x,y)处的取值(振幅)为图像在该点的亮度。对于灰度图像来讲,即为灰度。对于RGB彩色系统来讲,即为R、G、B三个分量图像的灰度的合成。


    要将一幅图像转换为数字形式,就要求数字化坐标和振幅。将坐标数字化称为取样,将振幅数字化称为量化。当f和x,y分量的振幅都是有限且离散的量时,称该图像为数字图像。


    一幅有着M行N列的图像,称图像的大小为MxN。在多数的图像处理书箱中图像的原点字义在(x,y)=(0,0)处。所以x的取值为从0到M-1,y的取值为从0到N-1。在Matlab中原点定义在(1,1)处。

    Matlab图像处理基本函数

    首先需要了解的是如何读取图像,显示图像,保存图像。

    读取图像

    读取图像使用imread()如:

    imread('image_filename')
    支持的图像格式有TIFF、JPEG、GIF、BMP、PNG、XWD(X Window转储)。

    注意:文件名需要写明扩展名,不可省略。文件名使用单引号来界定。如果需要让Matlab不输出读取结果,则以分号结尾。

    当文件中不包含路径信息时,默认从当前目录中进行文件的查找,如果使用其他目录中的文件可以使用相对目录或者绝对路径的形式。

    image = imread('test.jpg');
    将读取的数据保存在变量image中。


    size(image)
    给出图像的大小,以数组的形式给出。当前为了得到图像的行数和列数,可以这样:
    [M, N] = size(image);
    M即为图像的行数,N为图像的列数。


    当然也可以使用whos命令进行查看:

    >> whos image
      Name          Size                Bytes  Class    Attributes
    
      image      1029x1248            1284192  uint8  

    上面的>>为Matlab的命令提示符。

    显示图像

    显示图像的函数为
    imshow(f, G)
    f为图像的数组,也就是上面使用imread读取的结果。G是显示该图像的灰度级数,如果省略G,默认灰度级数是256。

    imshow(f, [low, high])
    会将所有小于或等于low的值都显示为黑色。所有大于或等于high的值显示为白色。介于二者之间的按照默认的级数显示为中等亮度值。


    imshow(f, [])
    会将low设置为数组f的最小值,将变量high设置为数组f的最大值。这对于输出动态范围较小或者既有正值又有负值的图像非常有用。


    在Matlab中如果需要显示另一幅图片,直接使用imshow会在已打开的figure窗口中显示图像,若要在新的窗口中显示图像可以使用figure函数,如:

    figure, imshow(image)

    同时显示两幅图片:

    imshow(image1), figure, imshow(image2)


    在Matlab的较早版本中,使用pixval函数可以交互地显示像素的亮度值。在较的新的版本中使用impixelinfo函数替代了pixval。如下图左下角:



    保存图像

    保存图像的函数是imwrite,语法为imwrite(image, 'filename'),filename必须包含合法的图片扩展名,否则需要提供第三个参数如:
    imwrite(image, 'image1', 'tif');
    imwrite(image, 'image2.tif');
    在filename中不 包含路径信息,则将文件写在当前工作目录中。对于JEPG格式的图片,语法为:
    imwrite(image, 'image3.jpg', 'quality', 70)
    最后的数字70,表示JPEG的压缩的质量,为0~100之间,数值越大,质量越好。默认为75。

    使用函数imfinfo可以显示图像的其他信息,如:
    >> imfinfo bubbles5.jpg
    
    ans = 
    
               Filename: 'bubbles5.jpg'
            FileModDate: '24-Apr-2017 23:38:34'
               FileSize: 7904
                 Format: 'jpg'
          FormatVersion: ''
                  Width: 720
                 Height: 688
               BitDepth: 8
              ColorType: 'grayscale'
        FormatSignature: ''
        NumberOfSamples: 1
           CodingMethod: 'Huffman'
          CodingProcess: 'Sequential'
                Comment: {}
    
    可以看到,图像文件的大小为7904字节,宽高信息,8位灰度图像等。

    当然可以将图像的信息保存在变量中,在后续的计算中进行使用。
    k = imfinfo('bubbles5.jpg');
    width = k.Width;




  • 相关阅读:
    The difference between applicationContext.xml in Spring and xxx-servlet.xml in SpringMVC
    01Java代码是怎么运行的
    Qt5.7不能加载MySql驱动问题(需要重新编译驱动)
    大前端工具介绍
    ARTS 第 1 周
    【标题】行动派
    Matlib’s lsqnonlin 和 scipy.optimize’s least_square
    每日背单词
    AngularJS入门篇
    吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-adjust
  • 原文地址:https://www.cnblogs.com/furzoom/p/7710140.html
Copyright © 2011-2022 走看看