1. 像素
众所周知,图像是由像素构成的,像素越多,图片就越清晰,我们能获取到的信息就越多,不然那么多手机大厂疯狂宣传自己的像素有多高有多高干啥呢。
但是我们人对于图像的识别,往往不需要那么多信息特征,比如下面这个MC里面的宝石剑。像素很低吧,但我们就是能认出来这是一个宝石剑,为什么呢?这是因为人们对于图像信息的识别,是建立在对像素局部性分析的基础上的。
所谓局部性,通俗点说,就是眼睛或大脑会将相邻的像素或大片的像素连接起来分析,从而将剑身,剑柄组合起来,从而得出他是一个宝石剑的结论。
但是只看一个剑柄,好像也不能确定他就是一把剑,也有可能是个平底锅呢。
所以,我们也得看整个物体的全貌和轮廓,来进一步确认该物体的身份。
那么总结来说,我们人体看一个物体需要看两个地方,即局部特征与整体轮廓,知道了这两个特征,就能够确认出这个物体是什么东西。
问题来了,那么计算机怎么识别呢?
答案就是卷积核!我们可以通过设定卷积核的大小来达到人体瞳孔放大缩小同样的效果,从而对物体进行识别,具体如何实现现在还没学到,后面应该会更新的…
2. 色彩
上面说过图像是由很多像素组成的,在科技发达的今天,图像早已经五颜六色,这些图像是怎么做到五颜六色的呢?
这里就得提到大名鼎鼎的三原色了,即RGB(red,green,blue),任何颜色都可以通过这三个元素以不同的比例混合构成。人可以轻易的分辨这三种颜色,那计算机呢?
计算机中一切数据都是以二进制存储在一个一个的地址单元中,那么我们最好把一种颜色变成一串二进制,这样计算机就能轻易识别。
对于一张图片来说,最常见的两个参数是长和宽,一般用H(height) 和 W(width) 来表示,那么RGB三个分量,看作是3个通道(channel),一般用 C 来表示。
如此一来,一张长宽分别是224像素*224像素的RGB图像,就可以用 HWC = [224, 224, 3]来表示。两张类似的图片就用 NHWC = [2, 224, 224, 3]表示,其中N代表图片张数。
3. 图片大小
在知道了图片的组成原理后,是不是很好奇一张图片到底占了多少内存呢?
在说起这个话题之前,首先我们得知道在计算机中,一个像素值是一个int 8类型,那么其取值范围就是0-255,这也是为什么我们在PS或者调色板这些软件中,能选择的最大值不会超过255。
现在我们可以计算一个图像的内存占用了。
假如一个RGB图像大小为1920480,那么它占计算机存储大小为
192048031Byte=5.9MB
在实际应用,比如实时检测车辆等场景中,可能一秒钟就要处理成千上万张图片,那么数据量就非常大了,所以需要一种新的方法在对图像处理的时候进行数据量的减少,YUV就是其中一种方法。
YUV(Y 代表亮度,U 代表色彩度,V代表饱和度),这一色彩编码方法,在保留亮度这一人眼最敏感信息的基础上,通过降低其他人眼不太需要的信息,可以来达到降低图片大小的目的。