- 熟悉并掌握Matlab工具的使用;
- 实现图像的读取、显示、代数运算和简单变换。
- 读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题,并将结果以文件形式存到磁盘上。
- 对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成6个子窗口来分别显示,注上文字标题。
1.图像分类
(1):只有0、1两个值,0是黑色,1是白色,在matlab中存为logic值
(2):对于8位和16位图像数据可表示的灰度级别不同,通常我们选用的都是uint8的即256级灰度级的图像数据来表示灰度图像。
(3):包括一个数据矩阵X,一个颜色映像矩阵Map。其中Map是一个包含三列、若干行的数据阵列,其中每个元素的值均为[0, 1]之间的双精度浮点型数据。Map矩阵的每一行分别表示红色、绿色和蓝色的颜色值。在MATLAB中,索引图像是从像素值到颜色映射表值的“直接映射”。
(4):有红、绿、蓝三个颜色通道,每个通道取值范围0~255。
2.RGB图像如何转换为灰度图像
RGB图像是有3个通道,也就是一个3维的矩阵,而灰度图只有一个通道,我们要做的就是将一个3通道的事物转为1通道的事物。这其中是有一个转换公式的,简单来说,就是把RGB的3个通道的分量按照一定的比例计算到灰度图像中。即通过在网上查阅资料找到线性转换公式如下:
通过对RGB图像的所有像素点像素值进行公式计算得到新的图像即为灰度图像。
3.RGB图像如何转换为黑白图像
4.代数运算
代数运算是指对两幅或两幅以上输入图像进行点对点的加、减、乘、除运算而得到目标图像的运算。图像处理代数运算的 4 种基本形式分别如下。
①
②
③
④
式中,和为输入图像表达式;为输出图像表达式;a、b为系数。
为对图像数据进行操作,首先将像素值转换为0-1之间的double类型数据再进行线性运算。
5.实验中直接使用的函数
(1)imread(path)函数
从图像所在路径读取图像的数据信息存为矩阵。
(2)imshow(image)函数
将读取到的图像显示到figure中。
(3)imwrite(image,path)函数
将图像以某种格式存储到磁盘的某路径下。
(4)subplot(m,n,p)函数
subplot函数是将多个图画到一个平面上的工具。其中m、n表示一个m行n列的大画框,可显示 mn个图 ,p表示图所在位置。
(5)构造函数
function[输出形参]=函数名([输入形参])
函数体
(6)size()函数
[m,n] = size(X)
返回矩阵X的尺寸信息, 并存储在m、n中。其中m中存储的是行数,n中存储的是列数。
(7)zeros(m,n)函数
产生mn的double类型零矩阵。
(8)double(x)
增加数据的精度,使计算更加准确。
(9)im2double(A)
将图像转换为 double 类型、且范围在0-1之间。
(10)graythresh(image)
使用最大类间方差法找到图片的一个合适的阈值。利用这个阈值通常比人为设定的阈值能更好地把一张灰度图像转换为二值图像。
【主函数:sy1.m】
【myrgb2gray.m】
【myim2bw.m】

图一为对RGB图像进行的类型转换,在实验过程中通过与原系统函数的输出效果对比发现,自编写的函数效果很好。

图二为对两幅图像进行代数运算的结果,在实验过程中通过修改两幅图像前的系数a、b可以得到不同的输出结果,最终选择了代码中的计算公式得到了图二的结果,可发现加、减、乘、除都可以将两幅图像很好的结合,可根据需要的效果来选择。
- 通过自编写Matlab的系统函数了解了函数内部的具体实现,对图像类型转换、代数原运算的原理加深理解;
- 后通过查阅资料发现代数运算还能够达到去除背景、降噪,图像增强等效果,不过在实验过程中没有去实现。所以实验原理虽然不是很复杂,但如果从其他角度来思考,简单的运算可以实现的功能可以有很多,还需要在之后的实验中加强思考能力。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/7675.html