万般皆是脸
注:在接下来的内容里,我会着重在"图片"下的人脸辨识 (包含摄影机图片串流处理),3D影像或其他非图片类型的本人还未着墨,因此不会在这个系列内容中说明。
注2:本篇文章着重在接下来系列文的基础知识,如果这些对你来说太简单了,可以斟酌跳过 :)
以下面年轻时的卓别林照片来说:
reference: 维基百科 - 查理·卓别林
F12
打开开发者工具检查)若用numpy array
的方式表示会长这样 (numpy是Python中很常用的矩阵与数值函式库,这里可以先不管):
[[ 67 69 65 ... 60 58 60]
[ 63 62 67 ... 60 58 59]
[ 64 59 68 ... 54 54 55]
...
[210 211 209 ... 23 20 21]
[204 210 216 ... 19 15 16]
[209 203 213 ... 24 18 17]]
到目前为止我们知道:
因此,如果是一个彩色图片:
为了要表示色彩空间,我们用大家所熟悉的三原色(RGB)来表示这张图片的话:
图片上半部依序由左至右为图片仅红色部分、图片仅绿色部分、图片仅蓝色部分
那下半部的三张图片呢?
还记得前面提到灰阶图片表示,数值范围是从 [0, 255] 吧?
因此下半部三张图可以想成把三原色(RGB)分别以灰阶数值来表示
头晕了吗?
举例说明:
以上的范例说明希望能让你对"颜色以数值表示"有一些感觉。
当然,没有很理解也不会影响接下来的主题就是。
最後,图片的原始大小为510 x 706,而图片是彩色的就表示要用三个510 x 706的矩阵来表示:
510 x 706 x 3
用numpy
来查看图片的"大小"的话:
numpy.shape(image)
> (706, 510, 3)
依序由左至右是:高为706、宽为510、通道(颜色)为3的图片
在上面的彩色图片中,如果在做人脸侦测(Face Detection)或是其他物件辨识时,通常会有类似下图的过程:
其中:
ROI (Region of Interest)
,指的是在准备做某个影像分析处理时 (这里范例就是人脸辨识),後续会特别针对进行处理的区域,通常这个区域是矩形。
而因为目前图片中ROI
只有一个,後续在进行人脸辨识分析,最终结果还是同样的一个矩形范围。这个最终人脸辨识结果通常会用Bounding Box(边界框)
表示人脸辨识的范围。
通常边界框会有两种表示方式:
左上X座标、左上Y座标、右下X座标、右下Y座标
左上X座标、左上Y座标、边界框的宽、边界框的高
再多说一点,由於边界框一定会在原始图片内某一个区块,在做电脑视觉分析(甚至是其他机器学习)时,通常会为了方便进行分析而将边界框的数值结果都用[0, 1]这个范围表示。
那要如何做呢?
假设我们现在看上面范例图片的x0位置,可以发现它大概就在整张图片约左右正中心的位置;这时我们就可以把x0的数值标示成0.5
计算方式聪明的你应该也想到了:x0 / 图片宽(image_width)
,然後再取整数 (座标通常都会用整数表示)
其他数值也是用类似的方式计算。
到目前为止这一些基础知识应该足够了,明天见!
天亮了 昨晚是平安夜 关於迷雾森林故事 金色山脉 海马的自爆攻击 让整座迷雾森林火势开始蔓延开来 就...
由於组件可以在不同的context中使用,有几种方法可以解决这个问题,官方连结。 1.一次性情况的特...
完善的资料库能够有效地存储数据,提供最新、最精确的资讯,满足使用者的应用需求,因此正确的资料库结构设...
惯例在最後一天做个总结啦,不过回头看第一天条列的内容清单,发现还漏掉一个建构周期任务的介绍没写到,没...
上一篇我们学到怎麽使用Vim,还有修改commit message,这次要做的事情呢,就是要来合并跟...