视觉图像和MATLAB的联系
视觉是人获取知识到主要途径,视觉的分析判断能力本身也很高。如果用MATLAB的功能来对视觉功能做一下仿真,还是很有意思的。
图像的采集。眼睛是通过视网膜来得到图像信号的,网膜,可以想象视觉细胞按照矩阵的形式规则分布,那么每个矩阵里面的每个元素都会得到一个光感电压值,通过视神经传导,将2D的信号变成1D传输,然后在大脑中对应当区间又转换为2D,这一点想象网络的传输应该不难想象。可以想象大脑中的记忆细胞有一块矩阵空间通过加电得到了一副完整的图像。大脑使用神经网络功能对其进行识别运算,得到了图像中自己关注的目标体。
到了MATLAB这里,情况是非常类似的,摄像头的CCD本身就是矩形的,得到的图像也是用矩阵来描述的。不过在没有使用白平衡基准对其处理前,得到的矩阵还只是原始的RAW文件,还不能得到所需的图像。还记得黑客帝国里面不断往下掉的O和1吗,可以想象由于计算速度跟不上,原始数据还没有计算成还原图像所需的数据,但是如果你看熟了的话,你还是可以想象到你看到了什么。比如你看到(255,0,0)就会想到红色。对了,在二进制中应该是11111111,0,0。到了MATLAB里面,图像具有图像模式,不同的模式下图像存在的数据矩阵是不同的。比如用RGB模式,用一个3维矩阵就可以描述了,一个矩阵里面是R值,象素的下标位置就是矩阵元素的下标位置,可以看到使用矩阵的优势了吧,不用单独描述X,Y值,下标就可以描述X,Y值了,这样省了多少事情啊。要不然对一个图像象素的描述是X=1,Y=0,R=255;X=1,Y=0,G=0;X=1,Y=0,B=0。很麻烦吧。
在这里可以看到CCD里面得到的是电压值,但是通过标定可以把电压值转换为图像。那么,各种传感器得到的数据自然也可以通过一定的人为标定变成图像了,进一步的,只要是数字就可以变成图像了。这就是MATLAB里面的伪彩色的意义了,从物理意义上来说,某个数据可能没有颜色,比如0.01是什么颜色呢,但是使用标定法,比如所有的数据X100,那么0.01X100=1,如果用灰度图像来描述这个数据的话,它的颜色就是1级灰度了。如果用索引色来描述这个数据的话,在颜色表里面,1对应当颜色可能是红色。如果得到的数据是1.2呢,那么还是将其颜色描述为1级灰度,这里可以看到,颜色是有精度问题的。颜色范围越大精度越高。所以医院里面,X光片的数字化显示遇到了困难,因为使用电脑显示的图像灰度可能只有256级灰度,但是冲洗处来的X胶片的灰度等级可能几百上千,比256级高得多,一些事关人命的细节图像可能就会显示出来供医生识别。当然,人眼对于灰度级别的识别能力有限,如果要想方便识别的话,还是变成彩色容易识别。灰度变成彩色简单的算法就是将灰度等级数变成索引号,这样灰色就变彩色了。
这里看到只要是数据都可以变成视觉图像,而数据又可以以矩阵的形式存在,数据的运算可以变成矩阵的运算,矩阵运算的结果可以用图像表示。MATLAB就是这样一个矩阵数据运算的可视化工具。它的最大特点就是运算结果的可视化。当然,现在的仿真软件一般都有可视化功能,通常可以称为后处理工具,可视化工具包 |