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;




原文地址:https://www.cnblogs.com/furzoom/p/7710140.html