图像处理技术详解

2018-06-12 22:22:43 huqiang_823 阅读数 1028

  学习数字图像处理,首先我们就得对图像以及属性有一个直观的认识。记住这些概念,主要是为了方便跟同行业的人交流,以及阅读相关文献。

常见图像文件格式

  1、 BMP格式
  BMP格式是windows系统下常用图像文件格式,后缀名为.bmp。bmp格式几乎不对图像数据进行压缩处理,也是数字图像处理中最常用的格式。
  2、JPG格式
  全称为JPEG格式,是应用最为广泛的一种静态图像压缩方式。JPEG压缩,是一种有损压缩。
  3、 TIFF格式
  TIFF图像格式是一种比较复杂的、高信息量的格式,常见于地理信息图像、遥感图像。
  4、GIF格式
  gif图像是网络上广泛使用的图像格式,我们经常在网页上看到的动态图就是这种格式。
  5、 PNG格式
  PNG是一种无损压缩格式,最大的特点就是可以为图像提供亮度和透明度的通道。
  对于图像文件格式,我们只要理解一点:不同格式的图像文件,对应着不同的压缩和解析算法。

数字图像

  数字图像的在数学中具体定义我们就不去深究了,我们只需要理解以下几点就好了。
  1、图像是由一个个的像素组成的,每个像素会对应一个或者多个像素值。一般来说,对于可见光的图像而言,像素值不会出现负值。
  2、可以把图像看成是一个二维数组,或者是一个二维矩阵,或者是一个个小格子组成的网格。
  3、通常,在计算机的内存中,图像就是一个地址连续的内存块。

分辨率

  分辨率这个概念在不同情况下有不同含义。
  1、分辨率用来描述图像时,大部分情况是指图像的尺寸,此时,称为空间分辨率。例如一副分辨率为640×480的图像,是指图像的宽度为640个像素、高度为480个像素。与空间分辨率相当的,就是灰度分辨率,是指图像的灰度等级。
  2、当分辨率用来描述像素时,大部分情况是指一个像素所代表的物理尺寸,这是机器视觉中非常重要的一个概念,这里不做介绍。

通道

  通道又称颜色通道,对于图像的通道我们可以简单地理解为,一个像素需要多少个像素值来表示,图像就有多少通道。例如,常见的RGB彩色图像,一个像素需要R、G、B3个像素值来表示,这类图像的通道数就是3。

深度

  图像的深度是指像素值的取值范围,在计算机内存中,就是像素值占的比特数。例如,一副深度为8位的图像,它的像素值的取值范围为0-255,占的位宽为8比特。

坐标系

  通常来说,图像的坐标系的原点在左上角,与显示器的坐标系是一致。

  最后,以一副示意图总结全文。
3通道8位图像属性示意图

2016-02-26 17:48:13 baimafujinji 阅读数 69601

什么是数字图像处理?历史、以及它所研究的内容。

 

说起图像处理,你会想到什么?你是否真的了解这个领域所研究的内容。纵向来说,数字图像处理研究的历史相当悠久;横向来说,数字图像处理研究的话题相当广泛。

数字图像处理的历史可以追溯到近百年以前,大约在1920年的时候,图像首次通过海底电缆从英国伦敦传送到美国纽约。图像处理的首次应用是为了改善伦敦和纽约之间海底电缆发送的图片质量,那时就应用了图像编码,被编码后的图像通过海底电缆传送至目的地,再通过特殊设备进行输出。这是一次历史性的进步,传送一幅图片的时间从原来的一个多星期减少到了3小时。

1950年,美国的麻省理工学院制造出了第一台配有图形显示器的电子计算机——旋风I号(Whirlwind I)。旋风I号的显示器使用一个类似于示波器的阴极射线管(Cathode Ray Tube,CRT)来显示一些简单的图形。1958年美国Calcomp公司研制出了滚筒式绘图仪,GerBer公司把数控机床发展成为平板式绘图仪。在这一时期,电子计算机都主要应用于科学计算,而为这些计算机配置的图形设备也仅仅是作为一种简单的输出设备。

随着计算机技术的进步,数字图像处理技术也得到了很大的发展。1962年,当时还在麻省理工学院攻读博士学位的伊凡·苏泽兰(Ivan Sutherland)成功开发了具有划时代意义的“画板”(Sketchpad)程式。而这正是有史以来第一个交互式绘图系统,同时这也是交互式电脑绘图的开端。从此计算机和图形图像被更加紧密地联系到了一起。鉴于伊凡·苏泽兰为计算机图形学创立所做出的杰出贡献,他于1988年被授予计算机领域最高奖——图灵奖。

1964年,美国加利福尼亚的喷气推进实验室用计算机对“旅行者七号”太空船发回的大批月球照片进行处理,以校正航天器上摄影机中各种类型的图像畸变,收到了明显的效果。在后来的宇航空间技术中,数字图像处理技术都发挥了巨大的作用。

到了20世纪60年代末期,数字图像处理已经形成了比较完善的学科体系,这套理论在20世纪70年代发展得十分迅速,并开始应用于医学影像和天文学等领域。1972年,美国物理学家阿伦·马克利奥德·柯麦科(Allan MacLeodCormack)和英国电机工程师戈弗雷·纽博尔德·豪恩斯弗尔德(Godfrey Newbold Housfield)发明了轴向断层术,并将其用于头颅诊断。世界第一台X射线计算机轴向断层摄影装置由EMI公司研制成功,这也就是人们通常所说的CT(Computer Tomograph)。CT可通过一些算法用感知到的数据去重建通过物体的“切片”图像。这些图像组成了物体内部的再现图像,也就是根据人的头部截面的投影,经计算机处理来进行图像重建。鉴于CT对于医学诊断技术的发展所起到的巨大推动作用,柯麦科和豪恩斯弗尔德于1979年获得了诺贝尔生理或医学奖。

随后在2003年,诺贝尔生理或医学奖的殊荣再次授予了两位在医疗影像设备研究方面做出杰出贡献的科学家——美国化学家保罗·劳特伯尔(Paul Lauterbur)和英国物理学家彼得·曼斯菲尔(Peter Mansfield)。两位获奖者在利用磁共振成像(Magnetic Resonance Imaging,MRI)显示不同结构方面分别取得了开创性成就。瑞典卡罗林斯卡医学院称,这两位科学家在MRI领域的开创性工作,代表了医学诊疗和研究的重大突破。而事实上,核磁共振的成功同样也离不开数字图像处理方面的发展。即使在今天,诸如MRI图像降噪等问题依然是数字图像处理领域的热门研究方向。

说到数字图像的发展历程,还有一项至关重要的成果不得不提,那就是电荷耦合元件(Charge-coupled Device,CCD)。CCD最初是由美国贝尔实验室的科学家维拉德·波义耳(Willard Sterling Boyle)和乔治·史密斯(George Elwood Smith)于1969年发明的。CCD的作用就像胶片一样,它能够把光学影像转化为数字信号。今天人们所广泛使用的数码照相机、数码摄影机和扫描仪都是以CCD为基础发展而来的。换句话说,我们现在所研究的数字图像主要也都是通过CCD设备获取的。由于波义耳和史密斯在CCD研发上所做出的巨大贡献,他们两人共同荣获了2009年度的诺贝尔物理学奖。

数字图像处理在今天是非常热门的技术之一,生活中无处不存在着它的影子,可以说它是一种每时每刻都在改变着人类生活的技术。但长久以来,很多人对数字图像处理存在着较大的曲解,人们总是不自觉地将图像处理和Photoshop联系在一起。大名鼎鼎的Photoshop无疑是当前使用最为广泛的图像处理工具。类似的软件还有Corel公司生产的CorelDRAW等软件。

尽管Photoshop是一款非常优秀的图像处理软件,但它的存在并不代表数字图像处理的全部理论与方法。它所具有的功能仅仅是数字图像处理中的一部分。总的来说,数字图像处理研究的内容主要包括如下几个方面:

  • 1)图像获取和输出
  • 2)图像编码和压缩
  • 3)图像增强与复原
  • 4)图像的频域变换
  • 5)图像的信息安全
  • 6)图像的区域分割
  • 7)图像目标的识别
  • 8)图像的几何变换

但图像处理的研究内容,又不仅限于上述内容!所以说图像处理的研究话题是相当宽泛的。那现在图像处理都应用在哪些领域呢?或许我们可能熟知的例子有(当然,你应该还能举出更多例子):

  • 1)一些专业图像处理软件:Photoshop、CorelDRAW……
  • 2)一些手机APP应用:美图秀秀、玩图……
  • 3)一些医学图像处理应用:MRI、彩超图像处理……
  • 4)一些制造业上的应用:元器件检测、瑕疵检测……
  • 5)一些摄像头、相机上的应用:夜间照片的质量改善……
  • 6)一些电影工业上是应用:换背景、电影特技……

 

什么样的人会去学(或者需要学)图像处理?

 

1)如果你是我上述那些应用领域的从业者,你当然需要掌握图像方面的理论和技术;2)相关专业的研究人员、大专院校的博士生、研究生。

所谓相关专业又是指什么呢?这个答案也可能相当宽泛,例如(但不仅限于此):Computer Science, Software Engineering, Electronic Engineering, Biomedical Engineering, Automation, Control, Applied Mathematics……

 

如何学好图像处理——我的一些箴言

 

1)对于初级入门者

 

一个扎实的基础和对于图像处理理论的完整的、系统的整体认识对于后续的深入研究和实践应用具有非常非常重要的意义。

我经常喜欢拿武侠小说《天龙八部》中的一段情节来向读者说明此中的道理,相信读者对这部曾经被多次搬上银幕的金庸作品已经耳熟能详了。书中讲到有个名叫鸠摩智的番僧一心想练就绝世武学,而且他也算是个相当勤奋的人了。但是,他错就错在太过于急功近利,甚至使用道家的小无相功来催动少林绝技。看上去威力无比,而且可以在短时间内“速成”,但实则后患无穷。最终鸠摩智走火入魔,前功尽废,方才大彻大悟。这个故事其实就告诉我们打牢基础是非常重要的,特别是要取得更长足的发展,就更是要对基本原理刨根问底,力求甚解,从而做到庖丁解牛,游刃有余。

一些看似高深的算法往往是许多基础算法的组合提升。例如,令很多人望而却步的SIFT特征构建过程中,就用到了图像金字塔、直方图、高斯滤波这些非常非常基础的内容。但是,它所涉及的基础技术显然有好几个,如果缺乏对图像处理理论的系统认识,你可能会感觉事倍功半。因为所有的地方好像都是沟沟坎坎。

关于课程——

在这个阶段其实对于数学的要求并不高,你甚至可以从一些感性的角度去形象化的理解图像处理中很多内容(但不包括频域处理方面的内容)。具体到学习的建议,如果有条件(例如你还在高校里读书)你最好能选一门图像处理方面的课程,系统地完整的地去学习一下。这显然是入门的最好办法。如此一来,在建立一个完整的、系统的认知上相当有帮助。如果你没办法在学校里上一门这样的课,网上的一些公开课也可以试试。但现在中文MOOC上还没有这方面的优质课程推荐。英文的课程则有很多,例如美国加州伦斯勒理工学院Rich教授的数字图像处理公开课——https://www.youtube.com/channel/UCaiJlKxXamoODQtlx486qJA?spfreload=10。

关于教材——

显然,只听课其实还不太够,如果能一并读一本书就最好了。其实不用参考很多书,只要一本,你能从头读到尾就很好了。如果你没有条件去上一门课,那读一本来完整的自学一下就更有必要了。这个阶段,去网上到处找博客、看帖子是不行的。因为你特别需要在这个阶段对这门学问建立一个系统的完整的知识体系。东一块、西一块的胡拼乱凑无疑是坑你自己,你的知识体系就像一个气泡,可能看起来很大,但是又脆弱的不堪一击。

现在很多学校采用冈萨雷斯的《数字图像处理》一书作为教材。这是一本非常非常经典的著作。但是我必须要提醒读者:

1)这是一本专门为Electronic Engineering专业学生所写的书。它需要有信号与系统、数字信号处理这两门课作为基础。如果你没有这两门课的基础,你读这本书要么是看热闹,要么就是看不懂。

下面是冈书中的一张插图。对于EE的学生来说,这当然不是问题。但是如果没有我说的那两门课的基础,其实你很难把握其中的精髓。H和h,一个大小一个小写,冈书中有的地方用H,有的地方用h,这都是有很深刻用意的。原作者并没有特别说明它们二者的区别,因为他已经默认你应该知道二者是不同的。事实上,它们一个表示频域信号,一个表示时域信号,这也导致有时候运算是卷积,有时候运算是乘法(当然这跟卷积定理有关)。所以我并不太建议那些没有这方面基础的学生在自学的时候读这本书。

 

2)冈萨雷斯教授的《数字图像处理》第一版是在1977年出版的,到现在已经快40年了;现在国内广泛使用的第二版是2002年出版的(第三版是2007年但是其实二者差异并不大),到现在也有20年左右的时间了。事实上,冈萨雷斯教授退休也有快30年了。所以这本书的内容已经偏于陈旧。数字图像处理这个领域的发展绝对是日新月异,突飞猛进的。特别在最近二三十年里,很多新思路,新方法不断涌现。如果你看了我前面推荐的Rich教授的公开课(这也是当前美国大学正在教学的内容),你一下子就会发现,原来我们的教育还停留在改革开放之前外国的水平上。这其实特别可怕。所以我觉得冈萨雷斯教授的《数字图像处理》作为学习过程中的一个补充还是不错的,但是如果把它作为主参考,那真的就是:国外都洋枪洋炮了,我们还在大刀长矛。

 

那么现在问题来了,对于图像处理学习者而言到底看什么书好呢?我的意见是你可以选择下面两本书中的任何一本《数字图像处理原理与实践(Matlab版)》,以及《数字图像处理:技术详解与Visual C++实践》,当然选择的标准之一就是到底你更擅长使用MATLAB还是C++。

   

 

 

 

2)对于中级水平者

 

纸上得来终觉浅,绝知此事要躬行。对于一个具有一定基础的,想更进一步的中级水平的人来说,这个阶段最重要的就是增强动手实践的能力。

还是说《天龙八部》里面的一个角色——口述武功、叹为观止的王语嫣。王语嫣的脑袋里都是武功秘籍,但问题是她从来都没练过一招一式。结果是,然并卵。所以光说不练肯定不灵啊。特别是,如果你将来想从事这个行业,结果一点代码都不会写,那几乎是不可想象的。学习阶段,最常被用来进行算法开发的工具是Matlab和OpenCV。你可以把这两个东西都理解为一个相当完善的库。当然,在工业中C++用得更多,所以Matlab的应用还是很有限的。前面我们讲到,图像处理研究内容其实包括:图像的获取和编解码,但使用Matlab和OpenCV就会掩盖这部分内容的细节。你当然永远不会知道,JPEG文件到底是如何被解码的。

如果你的应用永远都不会涉及这些话题,那么你一直用Matlab和OpenCV当然无所谓。例如你的研究领域是SIFT、SURF这种特征匹配,可以不必理会编解码方面的内容。但是如果你的研究话题是降噪或者压缩,可能你就绕不开这些内容。最开始学的时候,如果能把这部分内容也自己写写,可能会加深你的理解。以后做高级应用开发时,再调用那些库。所以具体用什么,要不要自己写,是要视你所处的阶段和自己的实际情况而定的。以我个人的经验,在我自学的时候,我就动手写了Magic House,我觉得这个过程为我奠定了一个非常夯实的基础,对于我后续的深入研究很有帮助。

 

下面这个文中,我给出了一些这方面的资源,代码多多,很值得参考学习:图像处理与机器视觉网络资源收罗

http://blog.csdn.net/baimafujinji/article/details/32332079

 

3)对于高级进阶者

 

到了这个程度的读者,编程实现之类的基本功应该不在话下。但是要往深,往高去学习、研究和开发图像处理应用,你最需要的内容就变成了数学。这个是拦在很多处于这个阶段的人面前的一大难题。如果你的专业是应用数学,当然你不会感觉有问题。但如果是其他专业背景的人就会越发感觉痛苦。

如果你的图像处理是不涉及机器学习内容的,例如用Poisson方程来做图像融合,那你就要有PDE数值解方面的知识;如果你要研究KAZE特征,你就必须要知道AOS方面的内容。如果你研究TV降噪,你又要知道泛函分析中的BV空间内容……这些词你可能很多都没听过。总的来说,这块需要的内容包括:复变函数、泛函分析、偏微分方程、变分法、数学物理方法……

如果你要涉足机器视觉方法的内容,一些机器学习和数据挖掘方法的内容就不可或缺。而这部分内容同样需要很强大的数学基础,例如最大似然方法、梯度下降法、欧拉-拉格朗日方程、最小二乘估计、凸函数与詹森不等式……

当然,走到这一步,你也已经脱胎换骨,从小白到大神啦!路漫漫其修远兮,吾将上下而求索。

 

(全文完)

 

 

2019-09-02 09:42:26 qq_40834187 阅读数 265

Matlab图象处理-图像的信息读取、读取及保存

  • 文件信息读取:

INFO=imfinfo(‘filename’,fmt)或者INFO=imfinfo(‘filename.fmt’)

读取文件filename.fmt信息,其中INFO是一个结构数组。至少包含九个成员:Filename、FileMoDate(文件最后修改日期)、FileSize、Format、FormatVersion、Width、Heigth、BitDepth(每一像素所占位宽)、ColorType(图像类型)。

grayscale-灰度图像,truecolor-RGB图像,indexed-索引图像。

若输入文件中包含多幅图象,那么最后得到的数组是由多个结构数组组成的。

  • 图像文件的读取

只记录需要注意的:[…]=imread(’Param’,value);

例:[X,map]=imread(‘hdf_file.hdf’,info(3).Reference);该代码执行时先读取HDF文件中的信息,存放在info中,然后调用函数imread(),设置参数为ref为info(3).Reference,这样就将HDF中第三幅图像读取出来并存放在[X,map]中。

图像格式为TIFF时,可读取参数为:’Index’(正整数,指定读取第几个图象);’Info’(结构数组返回imfinfo);’PixelRegion’(单元阵列{行,列}指定的区域边界,行列数必须是两个或三个元素的向量,两个为[START STOP],三个为[START INCREMENT STOP])

图像格式为JPEG时,可读取参数为:‘ReductionLevel’(非负整数,指定图像的分辨率降低。对于减少水平L,表示图像分辨率降低一个因子2^L);’PixelRegion’(单位阵列,imread函数返回rows和cols的边界所指定的子图像,行列必须为[START STOP]这样的向量)

imfinfo函数返回的结构由‘WaveletDecompostitionLevels’字段所指定的分解级别的总数量的减少水平是有限度的。

如果ReductionLevel大于0,则rows和cols是在尺寸减小的图像坐标。

只有PNG图像格式文件在函数imread()中才能设置参数BackgroundColor.

  • 图象文件的保存

imwrite(‘Param’,Val)

例:imwrite(I,’trees.png’,’BitDepth’,8)为将图象I保存在文件trees.png中,并且给参数BitDepth赋值为8.

噪声模型介绍:

高斯噪声:一种源于电子电路噪声和由低照明度或高温带来的传感器噪声,又称正态噪声。其可以通过空域滤波的平滑或图像复原技术消除。其概率密度函数为:
公式1
z表示灰度值,表示该噪声的期望,表示噪声的标准差。

椒盐噪声:指图像出现的噪声中只有两种灰度值,分别为a和b,两种灰度值出现的概率分别为和,又称双极脉冲噪声。其概率密度函数为:

在这里插入图片描述
在这里插入图片描述

2011-03-22 09:30:00 broadview2006 阅读数 3307

 

封面

 

数字图像处理原理与实践:基于Visual C++开发
左飞  万晋森  刘航  著
ISBN 978-7-121- 12776-2
2011年4月出版
定价:89.00元(含光盘1张)
16开
652 页
宣传语
《Visual C++数字图像处理开发入门与编程实践》原书最新升级版
步步为营  循序渐进  全新升级 
深入与浅出并重,理论同实践共举
内 容 简 介
本书全面系统地讲述了在Visual C++环境下进行数字图像处理编程的技术和方法。全书共分成14章,针对数字图像处理领域中的核心话题,如色彩空间、图像文件格式、图像的点运算、图像的几何变换、图像的增强处理、边缘检测和轮廓跟踪、图像形态学、图像分割、图像加密等,进行了详细的介绍。另外,针对Visual C++ 2005下的数字图像处理开发,本书还对设备无关位图、图形设备接口、OpenCV及ImageMagick等在实际开发中常用的具体技术进行了讲解,并辅以大量实例代码,具有很强的参考价值。
本书兼有源于实践、贴近应用、深入浅出、通俗易懂的优点,又紧跟时代脉搏,牢牢把握最新技术方向,从案例出发强调新环境下的新方法。本书内容实用、体例新颖,既可以作为希望进行数字图像处理学习和研究的初学者的自学教材,也可作为大专院校计算机及相关专业师生或工程技术人员的参考书。
谈治学——代序
自世界上第一台电子计算机问世以来,现代计算机科学已经走过了极为不平凡的六十余年辉煌历程。有时想想,自己不禁感叹,相对于已经发展了几十年甚至上百年的任意一门学科,我们的学习过程实在太短暂了。要充分理解一个领域,时间显然是不够的,更何况现在学科门类越分越细,学科交叉现象越来越多,因此我们往往要同时面对多个领域。如果你是一名研究生或者博士生,有时也许可能会感到自己已经对某个领域“观其大略、略有小成”。其实自己是否真的已经达到这种状态并不重要,因为几年之后,当我们再回想起来,或许自然就会感到当时的稚气而不失活泼的劲头。如果现在,你的这种感觉愈发强烈,那么说明你在自己研究的这个方向上已经有了不小的长进。
有人说自己“学得越多就会感到懂得越少,知道得越多就会感到理解得越少”,其实说的就是自己在不停地进步。在现行学习的各种情境下,大家都变得匆忙起来,匆忙的人容易被欺骗,于是我们会听信一些自己或别人有限理解下的狭隘看法,甚至我们会将这些看法作为一种基点,甚至会看成是一种准则。就像现在每天网络上都会有海量信息向我们涌来,尽管没有人会对网上的言论负责,但我们确实很容易在不经意之间将浏览网页时看到的一条难辨真伪的消息迅速地、不假思索地照单全收、信以为真。于是现在漫天飞舞的那些关于某位明星突然病故的谣言才会如此神速地传播开来。八卦谣言如此,学术研究更是如此。这其实也没什么,重要的是我们不能让这种看法伤害到自己及自己努力的脚步。
大家都会写论文、看论文。看论文讲求看高质量的,这是当然。我们也无非是想在前人的基础上做出一点点创新工作。前人的理论结果在这短暂的过程与浩瀚的领域下似乎只是偏离及错误的程度不同,因为论文是在搞研究,是一些还未出现的假想的规则,或是一些假想的解决方案。它们基于的都是另一些研究的成果,“踩在别人的肩膀上,肩膀在哪并不重要,是不是巨人的也不重要,只要以后有人踩踩自己的肩膀就行了”,在这种情况下对与错、是与非、准确与偏离的界限也越来越朦胧。
有时会觉得别人的做法、方式、结果其实并不好。有时甚至会认为其实对与错并不那么重要,它只是在很多条件、环境、约束下的一种看法。人们所做的事情—只是让周围最值得注意的一类人群尽可能满意就已经很好了。现在的媒体、老师,甚至一些同学我觉得都已经具备了一种令人惊叹而又平凡的能力,那就是“可以把白的说成黑的,紧接着在情况不对时,又可以再把黑的说成白的”这种能力。有人对肖氏反射弧提出质疑,发明人就会不惜触犯法律的威严拿起铁棒还对方以颜色。一方面是把白的说成了黑的,而另一方面大部分人选择了默认,欣然接受了指鹿为马的事实。而对于我们每个人,说到底最重要的还是要抓紧时间“多走一点路”,用不断前进的脚步走出各种环境,使自己不用沦落到非得用“把白说成黑”这种三流手段去骗取点什么的地步,更重要的是使别人在把白说成黑的时候,我们依然能够保持一份清醒。
感慨了这么多,写在我新书的最前面,真诚地希望本书的读者能够把如何治学这个问题想个清楚明白。若能如此,我想正在看本书的你定能在自己所从事的领域中有所收获、有所成绩。
前    言
大约两年多前,我同万晋森、刘航合作编写了《Visual C++数字图像处理开发入门与编程实践》(电子工业出版社出版)一书。作为一本在Visual C++环境下讲解数字图像处理开发的方法与技术的书籍,该书赢得了颇佳的口碑。许多读者纷纷来信,无论是对书品的褒奖,还是与我们探讨技术问题,都令我们为之鼓舞。
有鉴于《Visual C++数字图像处理开发入门与编程实践》所取得的不错成绩,电子工业出版社的有关编辑建议我们紧跟时代步伐与技术发展趋势,适时对原书进行修订以期再版。经过一番思度与商讨,我们决定结合第一版书的读者反馈并联系技术发展的最新动向,以原书为基础重新著书立说,于是便有了这本《数字图像处理原理与实践:基于Visual C++开发》。
脱胎于原书的改版本,一方面保持了前作通俗易懂、理论联系实际的风格,另一方面,我们也进行了大胆的调整,删减了一些比较基础性的导引篇幅和相对比较陈旧的内容,同时增补了一些更新颖的话题及更丰富的实例。
近年来,随着研究的不断深入,数字图像处理应用也日益广泛,这使得数字图像处理的广度和难度不断加强,但同时对于初学者的学习带来了相当的困难。观察现有的众多数字图像处理书籍,大部分教材注重图像处理理论的阐述,而在一定程度上忽略了这些理论的应用和实现。另外,对于一些实例教程,虽然重视了代码的实现,却在算法的描述和扩展上略有欠缺。这使得读者很难通过一本书比较全面地了解和掌握数字图像处理的基础内容。
为此,尽可能通俗地为读者描述图像处理算法的原理和实现手段,并为读者提供翔实可靠的实现代码,确保每一个读者都能理解和掌握,始终都是我们在创作过程中最大的考量。本书系统地介绍了应用Visual C++进行数字图像处理编程的基本思路和方法,采用案例为主的叙述方式,将大量的技术理论融入具体的案例剖析中。涉及数字图像处理领域中十余个重要主题,提供了近百个具体算法的实现源码,代码总量有数万行之多。
总的来说,本书依然本色地保持了前作中体现出来的几个有别于其他同类书籍的优点。
首先,与集成开发环境深度结合。在深入剖析MFC机制的同时将丰富的图像处理与编程实现融为一体。
其次,叙述过程中始终不脱离实践这个主题,每章都设置相应的实例带动读者进行学习。穿插于书中的实例为本书的一大特色。这些实例大都为时下流行的图像处理软件的某个具体模块或部分的实现,实例原型十分常见。这些巧妙新颖的实例将使枯燥乏味的理论变得妙趣横生。全书实例都在Visual Studio 2005下调试通过,读者可以在随书光盘中获得有关源码。
最后,笔者自主编写了一个扩展性良好的数字图像处理算法试验平台Magic House。Magic House不仅完整实现了一款普通数字图像处理软件应具备的基本功能,而且它框架清晰、容易理解,非常适合读者学习。我们也看到,前作出版后其他作者跟风出版的一些数字图像处理作品中有严重抄袭和剽窃Magic House的现象发生,但作为Magic House的原创者,没有哪本书能够比我们更透彻地向读者介绍这个软件的架构与实现。
除了传承前作的优点之外,本版又有哪些变化呢?
首先,本版增加了对部分复杂算法的更为细致的讲解与描述,同时也丰富了前作的实例代码资源。
其次,本书增加了一些包括图像加密(特别是图像的混沌加密)等在内的前沿话题,为有志在此发展的读者提供了独一无二的资源。
最后,除了前作中介绍到的DIB、GDI+和OpenCV,本版中还增加了对ImageMagick的介绍。作为近年来发展和流行起来的数字图像处理库,ImageMagick已经受到广大开发者的青睐,但目前国内尚无对它的相关资料出版,这也是本版中的一个亮点。
我们都知道,数字图像处理是一门飞速发展的技术。国内大部分数字图像处理教材都长期不更新,而且同类书籍千篇一律,很多读者迫于无奈,只能在许许多多陈旧不堪的内容上翻来覆去。因此,我们也希望能够为这个领域的后来者抛砖引玉,为同类书籍注入一丝清新的空气。
本书前一版本承蒙多位专家指导与帮助,其中西北工业大学计算机学院博士生导师王庆教授审阅了本书前版并提出了宝贵的意见和建议,西北工业大学计算机学院冯萍教授对本书前版的写作给予了诚恳的支持,中国科学院高级工程师、技术作家白乔博士在我的创作过程中始终鼎力相助。这里,再次向他们表示最诚挚的感谢。另外,我的两位合作者—网易游戏的万晋森与腾讯科技的刘航—在技术方面一直都非常令我钦佩,他们在百忙之中与我一道编写此书,令我深感振奋。正是由于有了他们的加盟,本书才得以付梓,也感谢他们为本书作付出的一切!最后,我也要感谢本书第一版的读者朋友们,他们诚恳的意见与建议使得新版更加精进、更加完美,给予我们的鼓励也一直驱使着我们前行。
由于时间仓促,纰漏和欠缺之处在所难免,言语之中有失偏颇之处,还望读者不吝赐教和批评。联系信箱:fzuo@yahoo.cn

左 飞   
2010年12月
于珠水之滨

2019-06-17 22:56:17 weixin_40647819 阅读数 1568

主要把图像处理的一部分经典基础算法梳理并实现了一遍,主要是用VS2013+OpenCV3.1.0做的。

主要目的:一是为了把基础巩固一下,以便更高效地看论文;二是为了工作基础。

因为以前在学习和研究的过程中发现自己基础不牢,缺乏对图像处理理论的系统认识。比如看论文时,遇到很多基础的小点都得去查,发现很多地方好像都是沟沟坎坎;因为知识缺乏系统性,所以思维很局限,没办法展开和联想,被作者牵着走,感觉事倍功半。然后就是比如做实际的小项目,发现自己脑袋里面很混沌,没办法根据场景去应用或改进算法,因为根本就不了解有哪些算法以及它们的实际适用场合。

所以我索性花一些时间把一些基本的算法再系统地深入理解并实现一下,并且写了详细的博客作为记录。博客中主要包含各个算法的基本原理、它们的优缺点、应用场合、效率、代码、实现效果及参考链接等。

然后整理了一个目录 ,先把一部分整理出来的放在这里,日后学习整理了其他的再更新在这里。

然后还有Git地址:https://github.com/2209520576/Image-Processing-Algorithm

 

插值算法

 

几何灰度变换及图像增强

 

图像滤波

 

图像分割

 

边缘检测及特征提取

 

彩色空间转换

 

 

最后感谢一下大佬:just_sort,是做项目认识的,他让我学习到了很多,比如使用Git、效率优化、图像增强、c++等等,也经常帮我解决一些问题,总之开阔了一些眼界。

这是他的Github地址:https://github.com/BBuf/Image-processing-algorithm   

里面有一个自己用C++搭的神经网络框架:ZW_CNN;也有一个图像处理经典算法复现的项目,我是受他启发的。