图像基本概念,Python 图像算法取经之旅 365 天的第 2 天
![图像基本概念,Python 图像算法取经之旅 365 天的第 2 天](https://static001.geekbang.org/infoq/4c/4ccd453b4553c55e72dccdf5aa63bd4b.jpeg)
在上篇博客中,橡皮擦意识到学习 OpenCV 前,需要先补充一些图的基本概念,例如像素,坐标,位深,这些内容,别问为啥知道的,问就是剧情需要。
图像的基本概念
图像放大之后可以看到像素,例如下图眼睛放大之后的区域,图中的一个一个的小方块就是像素。如果你玩过我的世界,对像素可能感知会更加深刻。
![](https://static001.geekbang.org/infoq/a8/a81d21f2813c07461193a37b3385b095.png)
像素是带颜色的,一个像素就是一个很小的图像单元,单元里面包含很多信息,最重要的就是颜色相关数据。图像颜色的取值叫做 RGB,顺手百度下 RGB 的含义。
![](https://static001.geekbang.org/infoq/e0/e07d3e2d8fc46b1890c4a0075f93a032.png)
这里有个逆向的知识点,RGB 取值范围是 0~255,数值的变化代表颜色深浅的变化,由于橡皮擦对这部分之前已经有些理解了,这部分过得比较快。
RGB 对应的值越大,颜色越浅色,0 表示黑色,255 白色,这么理解就行。
在看一下图像的构成,对于计算机来说,图像就是一个数组,数组中的每一项都装着一个像素单元,在学习的过程中我碰到了一个二维灰度图像的概念,但是能力有限,并没有太理解,橡皮擦学习技巧大放送,不理解就先按照自己能理解的尝试去解释,后面逐步补充完整。
二维灰度图像对应的是二维数组,那我依据此画出一个二维坐标系,里面都是像素,每个像素都是一个 0~255 的值。
![](https://static001.geekbang.org/infoq/14/1470046c32d3a4ccc0f48fc1eddbcd84.png)
不知道理解的是否到位,后面可能随着学习就破案了。
后来检索到三维图像包含 RBG 的 3 个值,也就是是用 3 个二维数据表示,瞬间好像明白了一些 RGB 到底是啥。
百度找到一个帮助理解的内容,咱们一起看看。
![](https://static001.geekbang.org/infoq/2e/2ed7af09765f6cf56c23b9097d618b8c.png)
那接下来验证一下二维灰度图如何生成。两个核心的概念:1. 二维,2. 0~255。
说干就干,Python 咱写的贼 6 吖。
使用 Numpy 库生成一个数组对象不就好了。
貌似在文件根目录确实生成了一个图片,打开图片,出现了,橡皮擦第一个人造图。下面这么一个小东西。
![](https://static001.geekbang.org/infoq/91/91f51e08c5daee4c2010e3f2b81893a6.png)
而且是 4x4 像素的,恰好和我弄的那个数组一致。
![](https://static001.geekbang.org/infoq/86/866bd842a79ac64b2243765c9f82d502.png)
接下来搞大这个图,把数组生成的规则修改一下即可,由于取值范围只能是 0~255,所以代码只能这样修改了。
代码生成一个 1x255 像素的图像,而且是个从黑到白的渐变。
![](https://static001.geekbang.org/infoq/d0/d0d69448b4fe1868ae7aab6b4829de31.png)
计算机图像表示原理
以下内容觉得写得不错,直接转载了过来,原文地址为 : https://blog.csdn.net/weixin_42415138/article/details/108214369 ,如果作者看到并且不希望橡皮擦引用,请直接联系我即可。
上述内容中,我学到的点主要是位图相关的知识,一个像素的最大值是 255,二进制表示 255 需要占用 8bit 空间,所以如果保存灰度图用 8 位即可。
彩色图像需要三个二维数组表示,3x8=24,莫名的对应上了 24 位彩色图像。
计算机图像的分类
查询了一下,得到如下知识。
灰度图像,如果图片有 $2^8=256$ 种灰度的图像,则称为 8 比特图像;
二值图像.就是只有 0、1 黑白两种;
RGB 彩色图像,ARGB,其中 A 代表 alpha 透明度;
颜色模型 RGB,HIS,YIQ。
橡皮擦脑洞改图
把一个图片读取完毕,然后把每个像素都修改成 0 ,是不是就得到一张同样大小的纯黑图了?貌似没啥应用场景,不过试试吧。
唉,果然得到一个黑图,哈哈哈哈。而且意外知道了,彩色图像每个像素都是一个 RGB 的数组,同时 get 两个知识点。
![](https://static001.geekbang.org/infoq/50/50a182860d033912c4587f7777920c47.png)
今天的 OpenCV 尾声
记住,一起打卡 365 天哦,由于不成体系,只为学到知识,所以如果出现方向错误,大家可以及时的指出来的。
如果你想跟博主建立亲密关系,可以关注同名公众号 <font color="red">梦想橡皮擦</font>,近距离接触一个逗趣的互联网高级网虫。
博主 ID:梦想橡皮擦,希望大家<font color="red">点赞</font>、<font color="red">评论</font>、<font color="red">收藏</font>。
版权声明: 本文为 InfoQ 作者【梦想橡皮擦】的原创文章。
原文链接:【http://xie.infoq.cn/article/3ca0b845b154bf5aac87210bb】。文章转载请联系作者。
评论