结合VC++乱扯下图像处理入门(一)
时间:2010-11-26 来源:一心一怿
写这一系列文章的目的就是让上面的第二类愿意无聊搜点关键字看看怎么回事的和第三类的想找到通向程序员美好快乐生活的传送门的同学能够有个参考,我想过了毕竟实验课的时间有限,我又不能在上面一行一行的敲代码教他们做完实验,这样肯定有人又要质疑,你这个教法和职业培训学院的有什么区别,一阵一阵的评论扑面而来,其实有时候我想说,写程序是个技术,不是门科学,不手把手的教那只能让你自学,自学大部分人又不干,学打铁的不拿锤子,学游泳不下水,毛个学的会啊。
希望他们能搜到这几篇文章,当然我不可能在课上特意介绍要到这个URL里来,这里有我上课没讲完的,那样可能要被人骂,人能躲还是躲着点好,就算他们搜不到或者不搜还有其他人看到,算是种交流。
人难免会有点错误,如果我在这系列文章里面有错误的,大家看到了,忍得住就忍吧,忍不住就在下面和我交流,这是种学习嘛。
好了,废话不说了,我写这几篇文章的初衷是用最通俗最原始的说法并且结合例子(VC++)介绍各种关于图像和图像处理的入门级知识,要通俗的原因是因为写出来的目的就是要让人看懂,结合例子的目的就是让人有直观的认识,我觉得很多大学很多理论的书很难看懂就是因为例子少,这也不能怪别人作者,大学很多课程都很综合,要举个例子可能要用整本书的知识,估计又要写半本书。
我的另一个原则是能不用数学公式的地方我就不用,实在必须用的如果能举例子解释我就举例子解释,我觉得数学之于技术人员就两个作用,一是用来做研究,二是用来装B,所以对于入门来讲,第一种暂时用不上,第二种最好永远也不要用。
下面开始第一章,简单的介绍下什么是位图。
首先我觉得有必要下载下UltraEdit,这个软件就像可透视相机一样,可以让你透过系统华丽的图形界面,让你看到各种文件,程序等的内在本质,对于学习图像格式的构成和分析绝对有好处。
先通俗的说下位图的概念,所谓位图,因为就是bitmap,这是两个词组合的,分开就是bit和map,顾名思义,人家英语的造词者也和我们的老祖宗一样,懂得把两个简单的词组成一个新的名词,我们分开来解释bit和map。所谓bit就是位,计算机存储的基本单位,再通俗点就是0和1,要是再不懂,可以把计算机内部想象成无数的开关,开关开了就代表一个状态,关了代表另一个状态,人们分别把这两种状态记为0和1,当然这是不准确也是不对的。从bit中你就可以领略到位图是由位构成的,也就是由很多的位按照一定的规则储存在计算机的存储设备上构成的。所谓map,不是翻译成地图,是翻译成映射,当然地图就是映射的一种模式,你将一个地点映射到地图上的一个坐标处,得到各种信息,扯远了,所以bit和map合起来的词通俗的解释就是位映射,映射是个简单的数学概念,函数就是一种映射,这里叫位映射的原因是指我们将现实中的模拟图像转换为计算机能够储存和识别的数字图像,这里面貌似概念有点乱七八糟,猛一看这句话很有一种装的味道,下面我来解释下这句话是怎样普通的一个道理。
模拟图像就是我们现实生活中看到的自然界的图像,模拟你也可以把它理解为连续的,它们的形状和形态表现由图像各位置的颜色所决定,所以说我们现实生活是丰富多彩的。
换到计算机上,计算机就算再智能本质上还只是个机器,它不能和我们的大脑一样能够那么快速的处理海量的模拟数据,汇总,分析,目前它只能处理离散的数据信息,所以如果你要把我们这个美丽的世界放在计算机上的话,你只能将这些美丽的图像转换成离散的数据集,所谓的离散就是不连续的,真是句废话,说白了就是一些挨不上遍的点。这个把模拟图像数据转化成数字数据的过程就是种映射,数学上映射都是由函数表示的,所以这个过程中自然也有函数的转换,这里面涉及的数学函数比较多,在这里就不先介绍,后面还会用到的,再慢慢介绍,所以位图就是这么来的。
马上要上课了,来不及写了,第一章随便写点,而且基本都是废话,这样可以不至于一开始就很难,下面一章我会详细介绍位图的构成,包括调色板是个什么玩意,貌似很多人会被这个搞混,还会介绍什么位图文件头,位图信息头都是些什么东西,我会结合C++语言来说明的,而我知道很多人对于指针的概念的掌握和对图像处理的掌握呈正比关系,所以我会穿插着写一些有关于指针的概念。