图像就是矩阵在本专栏——《重新学习MATLAB》的前面几课中,我们反复强调: 一切都是矩阵。 图像当然也不例外,在MATLAB中,图像有三种形式的矩阵:
矩阵中元素“非0即1”,一般0代表黑,1代表白。
每个像素由一个数字表示灰度,这个数字是0到255之间的一个整数。
彩色图像的每一个元素不是一个数字了,而是多个数字组成的向量。比如最常用的RGB彩色图像,每个元素是一个1x3向量,分别代表红/绿/蓝,每个数字也是0到255。 科技千里眼把三者总结成如下图: 三种图像的矩阵表达 核心概念——邻域邻域是学习图像处理最先遇到的关键概念,它不是常规上泛泛地理解是邻近的区域,而是有更严格的定义。 邻域分为两种: 4-邻域 和 8-领域。 看下图就能明白什么意义了: 像素 p 的两种邻域的定义 面向邻域有大量的操作,主要原理是建立一个邻域范围内的模板,模板上每个位置设置一个权重系数,再加权相加得到P点的新值。 这种方法其实专业上叫做:卷积,是不是似曾相识啊。 利用相似的原理,对于邻域上操作可以实现太多功能了,比如:
图像工具箱啥叫工具箱?其实就是一大堆函数打了一个包,当你需要什么功能,就直接调用函数了,这就叫做你使用这个工具箱了。 使用MATLAB工具箱就相当于站在巨人的肩膀上 图像工具箱都有啥功能?太多了,你能想到的图像处理功能它基本都能涵盖,所以说,如果想到对图像进行什么处理,第一反应不应该是自己去编写,而是先查找是否有现成的函数可以用的。 最最基本的几个图像处理函数简介图像处理最基本的函数就是图像的读写了:
读取几乎所有格式的图像,并存入一个矩阵中,这是图像处理的开始。
显示一幅图像,还包含了多个参数选项可以设置。 图像处理就是矩阵计算
也是显示图像,不过它更厉害了,提供了浏览和探索工具,比如像素区域工具/图像信息工具/对比度调整工具等。
将矩阵保存为图像。 算术运算算术和逻辑运算是图像处理的重头戏,算数运算长什么样呢? X opn Y = Z其中,opn代表+ - * / 操作符。 就这么简单。 直接上一个加的例子:imadd I = imread('rice.png');J = imadd(I,50);imshow(I)figureimshow(J) 上面的代码,意思是打开一张图片存入I,再将I加了50,使用的是函数imadd,看看效果吧: I 与 J 的结果显示——亮度提高了 所以,使用imadd将一个图像加上一个常数,效果是亮度提高,称为加性图像偏移。 imadd还可以将两幅图像加在一些,即imadd(X,Y)。 有加就有减,减是imsubtract. 加和减都会遇到一个问题,比如我们操作灰度图像,那么数值是0到255之间,那么加减之后,结果有可以上溢出(>255)或者下溢出(<>
简单粗暴,把上溢出的全设为255,把下溢出的全设为0。
溢出后的元素也还是有最大值最小值的,我们作一个线性的处理,让最大值成255,最小值变成0。 其它函数:
计算两幅图像的绝对差。
图像求反。来试一试吧: 图像求反,有点像老胶卷的感觉 逻辑运算逻辑运算是二值图像处理的核心,因为二值图像由0-1组成,所以可以认为二值图像就是一个逻辑矩阵。 那么,逻辑运算符都可以用上了:
认真看看下图,就可以了解逻辑运算了。 一张图理解逻辑运算 从上图我们还可以直观地了解到逻辑运算的用途——提取图像中的某一部分,这种方式称为掩膜法。 形态图像处理紧接上面的逻辑运算,深入发展出了图像的形态学处理,简单地说,就是提取几何和拓扑的信息的方法,本文只介绍二值图像形态处理。 |
|
来自: 龙之吻6iinxl8c > 《视觉检测》