当前位置:   article > 正文

MATLAB图像处理的基础操作

matlab图像处理

 这里我们学习matlab数字图像处理的基本要求:

首先,在matlab中,根据图像的特征可以分为以下几种:

二值图像:整张图中只有0、1两种结果,比如在光学仿真专栏中,我们绘制的只有黑白两色的图形(下图左图):

 灰度图像:从0(黑)-255(白)区分不同的灰度,并绘制成图像,也叫做灰阶图像(上图右图);

彩色图像:常见的有两种,RGB或者CMYK,分别有三、四种原色,按照不同的搭配形成彩色。

假彩色图像:常见颜色的波长是有固定的范围的,超出人眼可见光范围的光不可见。但是一些情况下,我们需要展示如红外光强度这样的不可见光的对比,需要使用不同的颜色。

接下来,我们对图像进行基础操作:

1、图像的读取:

  1. %A = imread(filename)
  2. 当然,imread()函数有很多的变形,具有不同的含义。比如
  3. % A = imread(filename,fmt)
  4. % A = imread(___,idx)
  5. % A = imread(___,Name,Value)
  6. % [A,map] = imread(___)
  7. % [A,map,transparency] = imread(___)

2、图像的显示:

  1. % imshow()
  2. % image()
  3. % imagesc()

这三个函数的具体区别我们通过一段代码来展示:

  1. clear;
  2. img = imread('1.jpg');
  3. I = rgb2gray(img);
  4. figure(1)
  5. subplot(1,3,1)
  6. imshow(img)
  7. colorbar
  8. title('by imshow()')
  9. xlabel('(a)')
  10. subplot(1,3,2)
  11. image(img)
  12. colorbar
  13. title('by image()')
  14. xlabel('(b)')
  15. subplot(1,3,3)
  16. imagesc(img)
  17. colorbar
  18. title('by imagesc()')
  19. xlabel('(c)')
  20. figure(2)
  21. subplot(1,3,1)
  22. imshow(I)
  23. colorbar
  24. title('gray by imshow()')
  25. xlabel('(a)')
  26. subplot(1,3,2)
  27. image(I)
  28. colorbar
  29. title('gray by image()')
  30. xlabel('(b)')
  31. subplot(1,3,3)
  32. imagesc(I)
  33. colorbar
  34. title('gray by imagesc()')
  35. xlabel('(c)')

结果1:

 可以看出:

在显示RGB图像时,三种函数都是对RGB进行分析,得到彩色图像。

但是imshow输出的图像是原图形的样子,包括大小和纵横比例。

后两者会对图像进行一定程度的拉伸(放大或缩小)。

结果2:

在显示灰度图像时,只有imshow显示出了正常的灰度图像,后两者的输出是“假彩色”图像。

原因如下:

在绘制图形时,如果显示的是RGB图像,那就是正常显示,因为图形的矩阵中已经包含了颜色信息(存在第三个维度分别表征R、G、B)

如果是灰度图这种默认是索引图像的矩阵,矩阵中不是自带颜色信息的,需要和colormap一一对应。

简单来说,索引数组是(m*n)一个二维的矩阵,相当于棋盘格上的每一个点只有一个数字,这不能表示颜色,但是可以对应一个序号。

如果该图像矩阵对应的colormap是彩色的,就是一个k*3的矩阵,3表示每一行的三列分别代表R\G\B

这样,通过读取图像矩阵这样一个二维矩阵每个点的数值,就能对应到colormap矩阵的某一行上,这一行对应的三个数字就是该点对应的颜色值。

灰度图同理。

在我们用三种函数绘制图形的时候,imshow()、imagesc()、image()中,只有imshow()默认的灰度图和我们用rgb2gray()函数转换得到的灰度图用的是同一个colormap。

所以,后两者直接显示转换后的图像矩阵,得不到想要的结果。

当然,我们可以通过修改对应的colormap矩阵得到和imshow()一样的图像。

3、图像的输出

%imwrite(A,filename)

此 MATLAB 函数 将图像数据 A 写入 filename 指定的文件,并从扩展名推断出文件格式。imwrite 在当前文件夹中创建新文件。

输出图像的位深取决于 A 的数据类型和文件格式。

参考:

《高等光学仿真——光波导、激光》

MATLAB帮助文档

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/375378
推荐阅读
相关标签
  

闽ICP备14008679号