MATLAB图像处理的基础操作

文章介绍了MATLAB中数字图像处理的基础知识,包括二值图像、灰度图像和彩色图像的概念。讲解了imread函数的不同用法来读取图像,以及imshow、image和imagesc的区别在图像显示上的体现,特别是在处理灰度图像时的差异。最后提到了imwrite函数用于图像输出的功能。
摘要由CSDN通过智能技术生成

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

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

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

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

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

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

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

1、图像的读取:

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

2、图像的显示:

% imshow()
% image()
% imagesc()

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

clear;
img = imread('1.jpg');
I = rgb2gray(img);
figure(1)
subplot(1,3,1)
imshow(img)
colorbar
title('by imshow()')
xlabel('(a)')
subplot(1,3,2)
image(img)
colorbar
title('by image()')
xlabel('(b)')
subplot(1,3,3)
imagesc(img)
colorbar
title('by imagesc()')
xlabel('(c)')

figure(2)
subplot(1,3,1)
imshow(I)
colorbar
title('gray by imshow()')
xlabel('(a)')
subplot(1,3,2)
image(I)
colorbar
title('gray by image()')
xlabel('(b)')
subplot(1,3,3)
imagesc(I)
colorbar
title('gray by imagesc()')
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帮助文档

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab练习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值