题名:图像编程精髓 : 从开发自己的Photoshop开始
作者:联骏编著
出版年:2006
ISBN: 7-121-02464-0
分类号: TP391.4
中图分类: 模式识别与装置
定价: 45.00
页数: 408 页
出版社: 电子工业出版社
装订: 16开

本书以开发PhotoSprite(一种包含Photoshop核心图像处理功能的软件)为讲解对象,深入剖析图形图像编程技术知识,取材新颖、内容丰富、循序渐进、图文并茂,是一本实用性很强的专业用书。 <br /> 本书不仅介绍入门知识,还详尽介绍复杂的算法技巧。在讲述PhotoSprite图像软件的各项功能操作和实现原理的同时,还提供了典型的应用场合和贴切的效果点评。读者不仅能掌握制作精美图像效果的技巧,并精通实现这些效果的编程技术,还能开拓思路、举一反三,自行创作出更加出类拔萃的设计方案。 <br /> 本书适合各类想深入掌握图形图像编程技术的开发者阅读,尽管本书采用Visual C#来讲解,但是涉及到的核心算法都是相通的。相信平面设计、图像处理、医学成像、分子化学、地理信息、卫星云图、游戏开发和影视广告等领域内的广大工程技术人员和编程爱好者都会喜欢本书的内容。 <br /> 本书源代码下载地址:www.fecit.com.cn“下载专区”或www.photosprite.com。 <br /> <br />前言: <br /> 欢迎进入计算机图形设计和图像处理的精彩世界。当今是一个热衷于用图形和图像表达信息的时代。可视化技术无时无刻不在影响着我们的工作、学习、生活、行动和思想观念。 <br /> 面对街头高挂的广告牌,看到CCTV正在播放的“快乐驿站”,回味《星战》里震撼的特技场景,都给我们留下深刻印象。它们是怎么完成的?核心的技术是什么?我能够实现吗?……我们不得不求助于图形设计与图像处理的最底层的核心技术。 <br /> 古语说:“授人以鱼,三餐之需;授人以渔,终生之用”。指导读者进行平面设计,并提供操作方法,这种“授人以鱼”的做法扫除不少朋友进入平面设计领域的心理阻碍,增加他们的学习信心。但要从根本上解决他们的疑惑,关键还是要“授人以渔”,教给他们“捕鱼”的方法,让他们在图形图像的海洋中搏击,去捕获一条条“大鱼”。本书内容详尽,覆盖面广,既介绍平面设计,又讲解实现原理。可谓不仅送您“鱼”,还教您“捕鱼”。 <br /> 值得一提的是,本书配套软件PhotoSprite是根据Microsoft刚刚发布的Visual Studio 2005进行开发的,完全用C#语言进行编写,同时本书还提供相关网站(http://www.PhotoSprite.com)与读者交流,并为读者答疑。作为Visual Studio 2005的体验性教程,本书便于程序员自学和实践,同样也适合其他非C# 语言程序员阅读,即便没有基础的入门者,阅读本书也不会有太大困难。 <br /> C#作为一种功能强大,且易于使用的面向对象编程语言,在.NET开发平台中占有极其重要的地位,被称为.NET的正统开发语言。热衷于C#语言的人都会喜欢上Visual C# 2005,它是Visual Studio 2005的一个重要成员,带来了大量令人兴奋的新功能,例如泛型、局部类和匿名方法等。其他的新功能同样是对.NET开发宝库的重要补充。与C#的第一个版本相比,增加这些功能和语言将会提高您的整体生产效率,从而使您能够以更快的速度写出更加简洁的代码。 <br /> 由于Visual Studio 2005刚刚发布,并且还在不停地升级和完善中,这方面可供参考的资料十分匮乏,加上作者水平有限,时间紧迫,所以书中难免会有疏漏和错误之处,我们真诚地欢迎读者来信指正。 <br /> 本书不是连载小说,不必一页页读下去才会找到感觉,您甚至不需要按顺序进行阅读,所有的内容都被分门别类,每一个效果都相当独立,不过章节之间会彼此联系,所以在阅读时可先从感兴趣的章节开始,然后遵循实现思想,进一步读下去。 <br /> 一本技术书籍的价值往往并非限于初次阅读带来的愉悦,更重要的是它能否成为日后编程过程中的左右手。本书除了是一本很好的自学读本外,还是一本非常好的参考手册,倒不是因为它面面俱到(那是Adobe或Microsoft的责任),而是因为它讲述了许多别处很难见到,但在实际项目开发中又非常重要的高级技巧。如果您想成为一名图形图像程序设计的高手,请不要错过这本书。 <br /> <br /> <br /> 2006年4月于南京 <br /> <br /> 本书导读 <br /> 1.谁是本书的读者 <br /> 本书适合于一切热衷于图像处理、医学成像、卫星云图、游戏开发和影视广告等领域内的广大专业技术人员和平面设计爱好者。 <br /> 为了阅读本书,您至少应了解Windows编程方面的基本知识,掌握数字图像处理和计算机图形学方面的专业知识。同时,还需要具备数学分析、线性代数、空间解析几何和概率论等数学基础。 <br /> 然而,这几方面的要求都是次要的,关键是您必须要有学习图形图像程序设计的动力和决心,这样您才有能力获得(或已经获得)这些知识和编程经验。 <br /> 本书所有程序都需要您亲自动手去实践,一切从零开始。尽管书中有些算法比较复杂,然而阅读全书将是十分轻松的。第一,对于任何图像处理效果,笔者都是严格按思路进行讲解的;第二,对于图像处理的相关基础知识和算法,本书相应的地方都有必要的介绍。 <br /> 笔者的出发点是:让您在一个轻松的环境下阅读本书,绝不会要求您在阅读时,旁边要放一大堆关于平面设计、数字图像处理、计算机图形学和基础数学等方面的书籍。 <br /> 2.从本书获得什么 <br /> 平面设计和程序开发是当前IT行业两大热点问题,它们相互依赖、共同发展。本书将用全新的观念和您一起探索这两个令人兴奋的主题,并使您有机会掌握图像处理最基本的编程技术和设计思想,有助于您成为一个专业的图形图像程序设计员。 <br /> 通过对本书的学习,您将会获得以下几方面的收获。 <br />l 使用和开发Photoshop其实是一件十分有趣的事情。 <br />l 所有的代码都向您开放,更有在线技术支持为您排忧解难。 <br />l 清楚图像处理程序设计的基本流程,一切从零开始。 <br />l 平面设计和图像编程相互依赖,结合这两种技术将做得更好。 <br />l 开发图形图像程序,将有助于提高挑战和竞争意识。 <br />l 获得解决复杂问题的组织经验,更加重视数学和设计思想。 <br />l 由于知道技术开发的核心原理而比别人更有潜力。 <br /> 3.本书的特点 <br /> 本书采用循序渐进的方法,遵循由概念、算法到编程实践的步骤,介绍了应用Visual Studio 2005开发图形图像软件的技术过程,力求做到既介绍基本知识又提炼编程思想。 <br /> (1)丰富的内容 <br /> 全书以开发PhotoSprite为主线,既涉猎平面设计知识,又深入图像处理技术。通过经典的案例向大家介绍实用图像处理过程中最核心的编程技术。 <br /> 事实上,平面设计和程序开发都在不断地向前发展。平面设计丰富了人们的视觉世界,而程序开发又为图像处理提供了方法和思路。本书将这两种技术完美地结合在一起。 <br /> 全书中所有案例力求做到四点:第一,统一的编程模式;第二,突出设计思想;第三,力求代码简洁;第四,取材新颖、图文并茂。 <br /> (2)有价值的指导 <br /> 写作本书就要体现出它的价值。全书融合最新的图形图像程序设计思想,力求使案例具有趣味性、普遍性、实用性和高效性。 <br /> 本书提供的所有方法函数都是一次性制作而成的。读者朋友可以参考这些代码及实现它的算法,从中获得一些有益的启示。其中类、属性、方法、变量命名及其作用都很讲究,请仔细品味。 <br /> (3)丰富的解说 <br /> 本书通过图文并茂的方式对案例所涉及的概念、算法和编程思想等均作了详细的解释。对于书中所示例的代码,有精确的注释和重要的解说。对于软件源代码,从变量到方法均有详尽的说明。 <br /> (4)轻松地阅读 <br /> 本书将面向对象的编程技术直接应用于数字图像处理中,并按知识和功能进行细化,建立通用的图像处理函数,从而减少阅读的繁琐性,增加代码的可重用性和可移植性,提高开发效率。对于复杂的类,书中用文字的形式示出其功能。 <br /> 程序的所有代码一律采用规范的编码风格。在很多地方,我们都可以对变量名见名知意。本书坚持将“无障碍阅读”放在第一位。 <br /> (5)完美的介绍 <br /> 对于本书的绝大多数案例,都提供实现原理,并严格按设计思路去建立。绝不会在中途遗漏步骤,出现“犹抱琵琶半遮面”的现象,也不会草草收场,以致阻碍阅读和后继开发。 <br /> 按照书中的设计思路将不仅有助于加快阅读进程,而且一定能够建立一个完整的图像处理应用程序。 <br /> (6)开放式的结构 <br /> 所有新建立的多层次类结构都是有助于读者理解、修改和维护的。所有的类都是开放的,可以向其中添加新方法以支持新功能,而不会对原有功能构成任何威胁,这就是面向对象的优势。 <br /> (7)良好的交互性 <br /> 本书的主要内容为图像处理程序设计,所有的类都具有很好的通用性。同时,它们都支持交互程序设计,均提供外部数据传输接口。 <br /> 良好的交互性还体现在PhotoSprite的界面上:第一,PhotoSprite允许您处理自己的图像文件,而不仅仅局限于只能处理本书所提供的示例图像;第二,可以用菜单或对话框等方法选择不同的处理算法。 <br /> 4.本书的结构安排 <br /> 本书共分8章,取材新颖、内容丰富、循序渐进和图文并茂是本书的重要特色。 <br /> 第1章为开篇语,主要对全书作总体介绍。其中包括预览PhotoSprite软件界面,了解Visual Studio 2005的新特性,明白图形图像编程方面的要点知识,以及对全书作一个指导性的说明。 <br /> 第2章主要讲解怎样构筑PhotoSprite的基本框架。其中包括搭建PhotoSprite的工作界面,介绍PhotoSprite的基本操作,概述图像格式的各种优缺点和说明颜色模式的处理原理等基本内容。 <br /> 第3章主要教您如何打造方便灵活的多功能工具箱。其中包括移动、选取、套索、铅笔、画刷、橡皮、直线、矩形、文本、吸管、油漆桶等工具和角度盘、画布控件。 <br /> 第4章为本书核心内容的开端,主要讲解图像色彩和色调调整方面的内容。通过对本章内容的学习,读者朋友们可以方便、直观地对图像的色相、饱和度和灰度等进行调节,增加对图像处理的学习兴趣,促进对图像核心模块开发的认识和应用。 <br /> 第5章为数学基础知识回顾,主要讲解如何运用基本的数学知识使图像处理产生更加迷人的效果。其中包括基本的代数运算、复杂的几何变换和深奥的逻辑运算等内容。 <br /> 第6、7章将全书推向高潮,将为大家揭开Photoshop梦幻滤镜的神秘面纱,教您如何制作出神奇的艺术效果。其中包括模糊、锐化、浮雕、杂点、艺术、扭曲、风格化和其他共8组滤镜效果,对大家学习图像处理中的滤镜效果有很大帮助。 <br /> 第8章为引伸篇,将为大家讲述数字图像处理在科研中的应用,同时指明其研究方向。主要就图像分割、形态学、图像滤波和边缘检测共4个部分来进行讲解。 <br /> 5.特殊约定 <br /> 如果您决定尝试继续阅读本书,那么首先要感谢您的信任。 <br /> 笔者是一个追求风格的人,善于用简练、清晰、流畅的语言文字将复杂的技术以简单的方式表达出来。 <br /> 为了帮助您阅读本书的所有代码,笔者希望您能熟悉一下作品中使用的一些约定。本书程序虽在大多数情况下都遵守C#编码规范,但有时为了突出代码的简洁和美观,在不引起阅读障碍和理解歧义的情况下,使用了如下几个常见的缩略词。 <br /> 用bg代表background单词;用fg代表foreground单词;用src代表source单词;用dst代表destination单词;用tmp代表temporary单词。 <br /> 用b表示bitmap型变量;用bmData表示BitmapData型变量。 <br /> 用BPP表示整型常量4,取Bytes Per Pixel之意,即每像素所含字节数;用BP2P表示整型常量8,取Bytes Per 2 Pixels之意,即每两像素所含字节数。 <br /> 6.开发环境 <br /> 阅读本书至少需要Visual Studio 2005集成开发环境。 <br /> PhotoSprite所有源程序都是采用C# 2.0语言编写的,在Windows 2000 Server SP4 + Visual Studio 2005环境下调试通过。它能正确地运行于Windows XP SP2或Windows Server 2003 SP1等所有安装了.NET 2.0框架的操作系统。 <br /> PhotoSprite不会占用过多的系统资源,所有图像处理中产生的临时图像均保存到磁盘中,通过磁盘与内存进行数据交换来实现图像处理。 <br /> 同时,为了对比学习图像处理技术,建议安装Photoshop 6.0或Fireworks MX及其以上版本的图像处理软件。 <br /> 7.在线资源 <br /> 图形图像是一个复杂而深邃的话题,寥寥数百页不可能解决所有的问题,加上时间紧张,书中难免会存在一些问题,恳请各位读者提出批评和指正,同时也希望和大家一起学习和交流。 <br /> 本书的所有最新消息(包括源代码及更新算法)和技术支持均在PhotoSprite发布网站(http://www.PhotoSprite.com)上给出。网站除了维护与本书有直接关联的内容外,还提供许多您感兴趣的.NET文章、代码、工具和评论。欢迎大家访问,并提出您的独到见解。 <br /> <br />第1章 我的PhotoSprite 1 <br />1.1 PhotoSprite预览 1 <br />1.2 Visual Studio 2005震撼未来 3 <br />1.3 图像处理精髓 5 <br />第2章 构筑PhotoSprite基本框架 9 <br />2.1 设计PS的基本工作界面 9 <br />2.1.1 标题栏 10 <br />2.1.2 菜单栏 10 <br />2.1.3 工具栏 13 <br />2.1.4 工具箱 14 <br />2.1.5 状态栏 14 <br />2.1.6 绘图区 15 <br />2.2 开发PS软件的基本操作 15 <br />2.2.1 新建图像文件 15 <br />2.2.2 打开图像文件 16 <br />2.2.3 保存图像文件 17 <br />2.2.4 预览及打印图像文件 18 <br />2.2.5 退出软件 18 <br />2.2.6 图像导出查看 19 <br />2.2.7 撤销/重做操作 19 <br />2.2.8 剪切/复制/粘贴操作 19 <br />2.2.9 软件基本设置 20 <br />2.3 图像格式概述 20 <br />2.3.1 BMP(*.BMP)格式 21 <br />2.3.2 GIF(*.GIF)格式 21 <br />2.3.3 JPEG(*.JPG, *.JPEG)格式 23 <br />2.3.4 PNG(*.PNG)格式 23 <br />2.3.5 TIFF(*.TIF, *.TIFF)格式 25 <br />2.3.6 PhotoSprite专用格式PSF(*.PSF)格式 26 <br />2.4 颜色模式处理 31 <br />2.4.1 位图颜色模式 31 <br />2.4.2 CMYK颜色模式 32 <br />2.4.3 灰度颜色模式 32 <br />2.4.4 HSL颜色模式 33 <br />2.4.5 索引色颜色模式 33 <br />2.4.6 RGB颜色模式 34 <br />2.4.7 颜色拾取器 34 <br />2.5 本章小结 38 <br />第3章 打造多功能的工具箱 39 <br />3.1 开发PS工具之一:移动工具 39 <br />3.2 开发PS工具之二:选取工具 39 <br />3.3 开发PS工具之三:套索工具 42 <br />3.4 开发PS工具之四:铅笔工具 44 <br />3.5 开发PS工具之五:画刷工具 47 <br />3.6 开发PS工具之六:橡皮工具 47 <br />3.7 开发PS工具之七:直线工具 48 <br />3.8 开发PS工具之八:矩形工具 50 <br />3.9 开发PS工具之九:文本工具 51 <br />3.10 开发PS工具之十:吸管工具 51 <br />3.11 开发PS工具之十一:油漆桶工具 51 <br />3.12 开发PS工具之十二:角度盘 56 <br />3.13 开发PS工具之十三:绘图画布 56 <br />3.14 本章小结 57 <br />第4章 开发PS的核心图像处理模块 59 <br />4.1 “色彩平衡”图像处理模块 59 <br />4.2 “亮度”图像处理模块 62 <br />4.3 “对比度”图像处理模块 65 <br />4.4 “色调/饱和度”图像处理模块 68 <br />4.5 “Gamma矫正”图像处理模块 70 <br />4.6 “灰度”图像处理模块 74 <br />4.7 “阈值”图像处理模块 81 <br />4.8 “负像”图像处理模块 87 <br />4.9 “伪彩色”图像处理模块 89 <br />4.10 “色彩通道”图像处理模块 97 <br />4.11 “亮度映射”图像处理模块 103 <br />4.12 “直方图”图像处理模块 106 <br />4.13 “色彩均衡化”图像处理模块 113 <br />4.14 本章小结 116 <br />第5章 深入图像处理的数学领域 117 <br />5.1 基本的代数运算 117 <br />5.1.1 加法运算 117 <br />5.1.2 减法运算 120 <br />5.1.3 乘法运算 122 <br />5.1.4 除法运算 124 <br />5.1.5 平均运算 126 <br />5.1.6 求异运算 127 <br />5.1.7 Max/Min运算 129 <br />5.2 图像处理中的几何运算 131 <br />5.2.1 图像平移 131 <br />5.2.2 图像缩放 136 <br />5.2.3 图像裁剪 138 <br />5.2.4 图像旋转 140 <br />5.2.5 图像翻转 143 <br />5.2.6 图像转置 146 <br />5.2.7 图像倾斜 148 <br />5.2.8 图像修整 152 <br />5.3 图像处理的逻辑运算 158 <br />5.3.1 逻辑与运算 158 <br />5.3.2 逻辑或运算 160 <br />5.3.3 逻辑非运算 161 <br />5.3.4 逻辑异或运算 162 <br />5.4 本章小结 164 <br />第6章 “殿堂级”PS设计:常用滤镜开发 165 <br />6.1 滤镜模块开发之一:模糊滤镜组 165 <br />6.1.1 模板应用 165 <br />6.1.2 平滑 172 <br />6.1.3 高斯模糊 174 <br />6.1.4 运动模糊 176 <br />6.1.5 径向模糊 180 <br />6.2 滤镜模块开发之二:锐化滤镜组 185 <br />6.2.1 锐化 185 <br />6.2.2 加强锐化 187 <br />6.2.3 自由锐化 189 <br />6.2.4 钝化蒙版 192 <br />6.3 滤镜模块开发之三:浮雕滤镜组 194 <br />6.3.1 调和浮雕 194 <br />6.3.2 八方向浮雕 196 <br />6.3.3 灰度浮雕 201 <br />6.3.4 彩色浮雕 204 <br />6.4 滤镜模块开发之四:杂点滤镜组 206 <br />6.4.1 新增杂点 206 <br />6.4.2 雪花杂点 209 <br />第7章 让我的PS魅力四射:梦幻特效开发 213 <br />7.1 梦幻特效开发之一:艺术滤镜组 213 <br />7.1.1 民间艺术轻松做——剪纸 213 <br />7.1.2 铅笔速写好容易——素描 215 <br />7.1.3 追忆童年小人书——连环画 220 <br />7.1.4 惊悚诡异环境幽——碧绿 223 <br />7.1.5 怀旧相片需珍藏——棕褐 225 <br />7.1.6 色彩渲染显魅力——染色 228 <br />7.1.7 冰雕雪塑晶莹透——冰冻 231 <br />7.1.8 趁热打铁激情高——熔铸 233 <br />7.1.9 如梦如幻情意浓——暗调 235 <br />7.1.10 抛砖引玉秀色彩——对调 237 <br />7.1.11 突发奇想生怪念——怪调 239 <br />7.2 梦幻特效开发之二:扭曲滤镜组 242 <br />7.2.1 苹果瘦身好可爱——挤压 242 <br />7.2.2 蜜蜂发福乐哈哈——球面 246 <br />7.2.3 杯中美酒漩起来——漩涡 248 <br />7.2.4 随波起舞好飘逸——波浪 251 <br />7.2.5 干扰条纹有学问——摩尔纹 254 <br />7.3 梦幻特效开发之三:风格化滤镜组 257 <br />7.3.1 雾气腾腾弥漫开——扩散 257 <br />7.3.2 精彩人生线条化——查找边缘 260 <br />7.3.3 霓虹灯光迷人眼——照亮边缘 263 <br />7.3.4 万众瞩目聚焦点——灯光 266 <br />7.3.5 犹抱琵琶半遮面——马赛克 269 <br />7.3.6 经典作品要收藏——油画 273 <br />7.3.7 光线强弱把握好——曝光 278 <br />7.4 梦幻特效开发之四:其他滤镜组 280 <br />7.4.1 自我设计乐融融——自定义 280 <br />7.4.2 若隐若现朦胧美——图像融合 283 <br />7.4.3 你躲我藏好神奇——魔术图 286 <br />7.4.4 眼睛迷人显魅力——去红眼 289 <br />7.4.5 图像文字巧联系——艺术字符 291 <br />7.5 本章小结 296 <br />第8章 Photoshop的扩展:在科研中的应用 297 <br />8.1 图像分割 297 <br />8.1.1 自适应阈值选取 297 <br />8.1.2 二值图像区域标记 300 <br />8.1.3 面积测量 307 <br />8.1.4 消除小区域 311 <br />8.1.5 轮廓跟踪 314 <br />8.1.6 周长测量 320 <br />8.1.7 边缘提取 323 <br />8.1.8 投影量的计算 325 <br />8.2 图像形态处理学 328 <br />8.2.1 图像腐蚀 329 <br />8.2.2 图像膨胀 337 <br />8.2.3 图像开运算 344 <br />8.2.4 图像闭运算 345 <br />8.2.5 图像细化 346 <br />8.2.6 图像粗化 353 <br />8.3 图像滤波处理 354 <br />8.3.1 N×N均值滤波 355 <br />8.3.2 自适应平滑滤波 361 <br />8.3.3 N×N中值滤波 366 <br />8.3.4 十字型中值滤波 368 <br />8.3.5 N×N最值滤波 371 <br />8.4 边缘检测 373 <br />8.4.1 Roberts算子 373 <br />8.4.2 Sobel算子 376 <br />8.4.3 Prewitt算子 380 <br />8.4.4 Kirsch算子 382 <br />8.4.5 边缘增强 385 <br />8.4.6 边缘均衡化 388 <br />8.4.7 自定义模板检测 392 <br />8.5 本章小结 396 <br />附录A C#编码规范和编程好习惯 397 <br />A.1 命名惯例和规范 397 <br />A.2 缩进和间隔 400 <br />A.3 良好的编程习惯 403 <br />A.4 注释 406 <br />A.5 异常处理 407 <br />后记 409 <br />参考文献 410