2013-04-03 19:05:58 liminlu0314 阅读数 17703
  • CSDN Markdown简明教程

    Markdown把作者从繁杂的排版工作中解放出来,实现易读易写的文章写作,已经逐渐成为事实上的行业标准。CSDN博客支持Markdown可以让广大博友更加专注于博客内容,大赞。但是,不少博友可能对Markdown比较生疏,系列文章《Markdown简明教程》扼要介绍CSDN Markdown,本视频为系列教程的配套教程,希望可以对大家有所帮助。

    28435 人正在学习 去看看 王海庆

一.预处理 
1.降噪处理 
由于传感器的因素,一些获取的遥感图像中,会出现周期性的噪声,我们必须对其进行消除或减弱方可使用。 
(1)除周期性噪声和尖锐性噪声 
周期性噪声一般重叠在原图像上,成为周期性的干涉图形,具有不同的幅度、频率、和相位。它形成一系列的尖峰或者亮斑,代表在某些空间频率位置最为突出。一般可以用带通或者槽形滤波的方法来消除。 
消除尖峰噪声,特别是与扫描方向不平行的,一般用傅立叶变换进行滤波处理的方法比较方便。


图1 消除噪声前


图2 消除噪声后

(2)除坏线和条带 
去除遥感图像中的坏线。遥感图像中通常会出现与扫描方向平行的条带,还有一些与辐射信号无关的条带噪声,一般称为坏线。一般采用傅里叶变换和低通滤波进行消除或减弱。


图3 去条纹前


图4 去条纹后


图5 去条带前

图6 去条带后

2.薄云处理 
由于天气原因,对于有些遥感图形中出现的薄云可以进行减弱处理。 
3.阴影处理 
由于太阳高度角的原因,有些图像会出现山体阴影,可以采用比值法对其进行消除。

二.几何纠正
通常我们获取的遥感影像一般都是Level2级产品,为使其定位准确,我们在使用遥感图像前,必须对其进行几何精纠正,在地形起伏较大地区,还必须对其进行正射纠正。特殊情况下还须对遥感图像进行大气纠正,此处不做阐述。 
1.图像配准 
为同一地区的两种数据源能在同一个地理坐标系中进行叠加显示和数学运算,必须先将其中一种数据源的地理坐标配准到另一种数据源的地理坐标上,这个过程叫做配准。 
(1)影像对栅格图像的配准 
将一幅遥感影像配准到相同地区另一幅影像或栅格地图中,使其在空间位置能重合叠加显示。


图7 图像配准前


图8 图像配准后

(2)影像对矢量图形的配准 
将一幅遥感影像配准到相同地区一幅矢量图形中,使其在空间位置上能进行重合叠加显示。 
2.几何粗纠正 
这种校正是针对引起几何畸变的原因进行的,地面接收站在提供给用户资料前,已按常规处理方案与图像同时接收到的有关运行姿态、传感器性能指标、大气状态、太阳高度角对该幅图像几何畸变进行了校正.
3.几何精纠正 
为准确对遥感数据进行地理定位,需要将遥感数据准确定位到特定的地理坐标系的,这个过程称为几何精纠正。 
(1)图像对图像的纠正 
利用已有准确地理坐标和投影信息的遥感影像,对原始遥感影像进行纠正,使其具有准确的地理坐标和投影信息。 
(2)图像对地图(栅格或矢量) 
利用已有准确地理坐标和投影信息的扫描地形图或矢量地形图,对原始遥感影像进行纠正,使其具有准确的地理坐标和投影信息。


图9 参考地形图


图10 待纠正影像



图11 纠正后影像和地形图套和效果

(3)图像对已知坐标点(地面控制点) 
利用已有准确地理坐标和投影信息的已知坐标点或地面控制点,对原始遥感影像进行纠正,使其具有准确的地理坐标和投影信息。 
4.正射纠正 
利用已有地理参考数据(影像、地形图和控制点等)和数字高程模型数据(DEM、GDEM),对原始遥感影像进行纠正,可消除或减弱地形起伏带来的影像变形,使得遥感影像具有准确的地面坐标和投影信息。 


图12 数字正射影像图

三.图像增强
为使遥感图像所包含的地物信息可读性更强,感兴趣目标更突出,需要对遥感图像进行增强处理。 
1.彩色合成 
为了充分利用色彩在遥感图像判读和信息提取中的优势,常常利用彩色合成的方法对多光谱图像进行处理,以得到彩色图像。 
彩色图像可以分为真彩色图像和假彩色图像。


图13真彩色合成( TM321)


图14 假彩色合成(TM432)

2.直方图变换 
统计每幅图像的各亮度的像元数而得到的随机分布图,即为该幅图像的直方图。 
一般来说,包含大量像元的图像,像元的亮度随机分布应是正态分布。直方图为非正态分布,说明图像的亮度分布偏亮、偏暗或亮度过于集中,图像的对比度小,需要调整该直方图到正态分布,以改善图像的质量。


图15 直方图拉伸前(原图偏暗)


图16 直方图拉伸后


图17 直方图拉伸前(原图对比度不强)


图18 直方图拉伸后(线性拉伸)

3.密度分割 
将灰度图像按照像元的灰度值进行分级,再分级赋以不同的颜色,使原有灰度图像变成伪彩色图像,达到图像增强的目的。


图19 原始图像


图20 密度分割图像

4.灰度颠倒 
灰度颠倒是将图像的灰度范围先拉伸到显示设备的动态范围(如0~255)到饱和状态,然后再进行颠倒,使正像和负像互换。


图21 灰度颠倒前


图22 灰度颠倒后

5.图像间运算 
两幅或多幅单波段图像,空间配准后可进行算术运算,实现图像的增强。常见的有加法运算、减法运算、比值运算和综合运算。例如: 
减法运算:可突现出两波段差值大的地物,如红外-红,可突现植被信息。 
比值运算:常用于计算植被指数、消除地形阴影等。 
植被指数:NDVI=(IR-R)/(IR+R)


图23 原始图像


图24 NDVI植被指数图像

6.邻域增强 
又叫滤波处理,是在被处理像元周围的像元参与下进行的运算处理,邻域的范围取决于滤波器的大小,如3×3或5×5等。 
邻区法处理用于去噪声、图像平滑、锐化和相关运算 。


图25 原始图像


图26 拉普拉斯滤波图像(5×5)

7.主成分分析 
也叫PCA变换,可以用来消除特征向量中各特征之间的相关性,并进行特征选择。 
主成分分析算法还可以用来进行高光谱图像数据的压缩和信息融合。例如:对LandsatTM的6个波段的多光谱图像(热红外波段除外)进行主成分分析,然后把得到的第1,2,3主分量图像进行彩色合成,可以获得信息量非常丰富的彩色图像。


图27 第一主成分


图28 第二主成分


图29 第三主成分


图30 第四主成分


图31第五主成分


图32 第六主成分

8.K-T变换 
即Kauth-Thomas变换,又称为“缨帽变换”。这种变换着眼点在于农作物生长过程而区别于其他植被覆盖,力争抓住地面景物在多光谱空间中的特征。 
目前对这个变换的研究主要集中在MSS与TM两种遥感数据的应用分析方面。


图33 第一主分量(亮度)


图34 第二主分量(绿度)


图35第三主分量

9.图像融合 
遥感图像信息融合是将多源遥感数据在统一的地理坐标系中,采用一定的算法生成一组新的信息或合成图像的过程。 
不同的遥感数据具有不同的空间分辨率、波谱分辨率和时相分辨率,如果能将它们各自的优势综合起来,可以弥补单一图像上信息的不足,这样不仅扩大了各自信息的应用范围,而且大大提高了遥感影像分析的精度。


图36 多光谱影像


图 37高分辨率影像


图38 融合影像(HSV融合)

四.图像裁剪
在日常遥感应用中,常常只对遥感影像中的一个特定的范围内的信息感兴趣,这就需要将遥感影像裁减成研究范围的大小。


图39 原始影像

1.按ROI裁剪 
根据ROI(感兴趣区域)范围大小对被裁减影像进行裁剪。


图40 按ROI(行政区)域裁剪

2.按文件裁剪 
按照指定影像文件的范围大小对被裁减影像进行裁剪。 
3.按地图裁剪 
根据地图的地理坐标或经纬度的范围对被裁减影像进行裁剪。


图41 按地图坐标范围裁剪

五.图像镶嵌和匀色
1.图像镶嵌 
也叫图像拼接,是将两幅或多幅数字影像(它们有可能是在不同的摄影条件下获取的)拼在一起,构成一幅整体图像的技术过程。 
通常是先对每幅图像进行几何校正,将它们规划到统一的坐标系中,然后对它们进行裁剪,去掉重叠的部分,再将裁剪后的多幅影像装配起来形成一幅大幅面的影像。


图42镶嵌左影像


图43 镶嵌右影像


图44 镶嵌结果影像

2.影像匀色 
在实际应用中,我们用来进行图像镶嵌的遥感影像,经常来源于不同传感器、不同时相的遥感数据,在做图象镶嵌时经常会出现色调不一致,这时就需要结合实际情况和整体协调性对参与镶嵌的影像进行匀色。


图45 匀色前影像


图46 匀色后影像

六.遥感信息提取 
遥感图像中目标地物的特征是地物电磁波的辐射差异在遥感影像上的反映。依据遥感图像上的地物特征,识别地物类型、性质、空间位置、形状、大小等属性的过程即为遥感信息提取。 
目前信息提取的方法有:目视判读法和计算机分类法。其中目视判读是最常用的方法。 
1.目视判读 
也叫人工解译,即用人工的方法判读遥感影像,对遥感影像上目标地物的范围进行手工勾绘,达到信息提取的目的。


图47 人工解译水系

2.图像分类 
是依据是地物的光谱特征,确定判别函数和相应的判别准则,将图像所有的像元按性质分为若干类别的过程。 
(1)监督分类 
在研究区域选有代表性的训练场地作为样本,通过选择特征参数(如亮度的均值、方差等),建立判别函数,对样本进行分类,依据样本的分类特征来识别样本像元的归属类别的方法。


图48 原图像


图49 监督分类图像

(2)非监督分类 
没有先验的样本类别,根据像元间的相似度大小进行归类,将相似度大的归为一类的方法。 
(3)其他分类方
包括神经网络分类、分形分类、模糊分类等分类方法,以及他数据挖掘方法如模式识别、人工智能等,在这里不做进一步阐述。

2015-12-29 11:21:24 u013088062 阅读数 30190
  • CSDN Markdown简明教程

    Markdown把作者从繁杂的排版工作中解放出来,实现易读易写的文章写作,已经逐渐成为事实上的行业标准。CSDN博客支持Markdown可以让广大博友更加专注于博客内容,大赞。但是,不少博友可能对Markdown比较生疏,系列文章《Markdown简明教程》扼要介绍CSDN Markdown,本视频为系列教程的配套教程,希望可以对大家有所帮助。

    28435 人正在学习 去看看 王海庆

  最近有人问我图像处理怎么研究,怎么入门,怎么应用,我竟一时语塞。仔细想想,自己也搞了两年图像方面的研究,做个两个创新项目,发过两篇论文,也算是有点心得,于是总结总结和大家分享,希望能对大家有所帮助。在写这篇教程之前我本想多弄点插图,让文章看起来花哨一点,后来我觉得没必要这样做,大家花时间沉下心来读读文字没什么不好,况且学术和技术本身也不是多么花哨的东西。

  一、图像处理的应用

  这个其实没什么好说的,一种技术的应用价值不是靠嘴上说,而是要看有多少人去搞,很简单的道理。其实我觉得判断一项技术有没有价值、有多大价值的最简单最有效的方法就是看有多少人在研究它。如果大家都在研究,那必然说明它很火,至少目前很火,以后的几年里依然还会火。因此,如果你不确定图像处理是不是有价值,那就查查全国图像处理工程师的数量就行了。

当然这里还是简单提一下。如果你真的只想问“图像处理有什么用?”,相信百度会给出比我更专业的答案。不过作为图像处理的行内人,我还是从几个基本的点来具体说一下。

  1、身份认证

  21世纪是刷脸的时代,这一点无可厚非。首先是银行,据说重庆的银行已经使用了人脸识别的验证系统来进行辅助的认证。其次是门禁系统,以前是指纹,虹膜,现在就是人脸。指纹、虹膜的识别虽然准确,但是有侵犯性,采集的过程中有侵犯性,验证的过程中也有侵犯性,反正让谁天天录指纹(采集指纹信息),用眼睛瞪摄像头(采集虹膜信息),谁都会觉得不舒服的,况且手还会脱皮。相比之下,人脸的识别就方便多了,拍张照片(采集人脸信息)谁都不会介意。最后是监控,一个摄像头所拍的监控能从不同的角度记录成百上千的人(比如车站等密集场所的监控),让警察去辨认将是一个浩大的工程,要是系统能够自动判别人员信息,无疑会给办案带来极大方便。

  2、监控安防

  安防监控可以说是图像处理领域最有潜力的应用领域。如今各个城市都在疯狂的安装监控摄像头,全国时刻都有无数的摄像头在录监控,但是安防监控的后端处理却没跟上。什么是后端处理,简单的说就是监控录像的视频处理。注意这里的视频处理可就不止包含人脸识别了,还有行人检测、异常检测、显著性检测、协同跟踪等。人脸识别之前说了,这里简单说说行人异常检测。图像处理中的行人异常检测在外行人眼中是一个非常有魔力的东西。毕竟让摄像头通过监控视频就能判断出当前画面中谁是好人谁是坏人(当然直接分为好人和坏人还是太武断了),在一般思维中貌似是不可能的。但是请不要忽略这样一个事实,就是目前大部分监控视频的分析处理都是由人工来完成的,警察破案时经常动不动就调出最近几天的监控视频,然后从头看到尾,其工程量之大可想而知。也正是这样才催生了人们对智能监控方面的研究,因为有这方面的实际需求。当然我们的视频分析程序不会直接给出诸如“好人or坏人”这样的武断而片面的判断结果。就当前的技术水平而言,能够统计当下监控画面中的人数(行人检测)、定位他们的人脸(人脸检测)、识别他们的身份(人脸识别)、判别他们的表情(表情识别)、检测他们的动作(异常检测),这就已经够了。这样以后人们就不会再面对长达几十甚至上百个小时的监控视频发呆,而是直接分析计算机给出的数据,当前画面中有多少人、都是谁、谁的动作可疑等。总之,接下来智能监控发展会很迅速,因为需求很迫切。

  3、深度学习(Deep Learning)

  通俗的说一句,“图像处理是深度学习应用的天堂”。深度学习这个概念可能有人不太熟悉,大家可以自行百度,我这里给出一个相对通俗的解释:“如果你不知道什么叫深度学习,就想想《终结者》中的T-800”。当然这句话不是我说的,是出自业界的一位大牛之口。当然这可能有点小片面,不过深度学习确实是公认的新一代人工智能的基础。

  这里举两个例子。一是谷歌的人工大脑项目。谷歌公司可以说是深度学习方面的牵头企业了,其在2012年公布的谷歌大脑项目,动用了1.6万个计算节点,训练数周,得到的人工智能模型能够自主识别猫脸图像,为新一代人工智能开辟了道路,之后微软深度学习研究院、百度深度学习研究院等机构都开始大量投入,各个高校也搞得风声水起,原因很简单,大家都知道它会火。

  第二就是图像识别方面的竞赛。最有权威的就是ImageNet竞赛。大家在一个拥有上千万张,上千类别的图像数据库上训练和测试自己的算法,比拼识别率。近几年来,摘得桂冠的一直都是深度学习模型,确切的说是卷积神经网络。更多有关ImageNet历年的竞赛信息大家可以自行百度。

  说道深度学习在图像处理的应用,不得不提中国的汤晓鸥教授,说他是国内深度学习的领头羊也不为过。他提出的DeepID人脸识别算法(一共分为三代),在一些大规模人脸数据库上的正确率(若LFW库)已经达到了99.75%,单纯从数字上讲的话可以说已经超越了人类的识别率,为此汤教授还开办了公司,开发FaceSDK(虽然还没有公布)。不过拿计算机和人脑相比本身就是不合理的,各有所长嘛。不过可见DeepLearning在图像识别领域的强大威力。至于深度学习与图像处理的关系这里就不用多说了,谷歌大脑识别的是图像,深度学习竞赛用的是图像,DeepID识别的还是图像人脸,虽然深度学习在其他方面诸如语音识别等也有应用,在图像处理依然是其主要的应用领域。

  二、图像处理研究工具

  图像处理的研究分为算法研究和应用两个部分。用到的主要编程语言有Matlab、C/C++、Python等,原因很简单,它们都有很多相应的第三方库,不用我们从零开始编程。

  1、Matlab

  MathWork公司的Matlab软件可以说是算法研究的利器,它的强大之处在于其方便快捷的矩阵运算能力和图形仿真能力,单从简洁性和封装性来说,确实完爆其他语言。但高度封装必然会相应的损失一部分灵活性,况且Matlab严格的讲更像是一个工具,而非一门编程语言。顺便提一句,它在2015年编程语言排行榜中位于第20名,仅次于IOS开发的Objective-C。

  对于算法研究人员(尤其是高校的硕士博士),首选工具自然是matlab,因为它简便快捷,封装性好,更重要的是全世界几乎所有的算法大牛、精英教授都会首先公布对应的Matlab源码,然后在逐步改写成其他语言进行实际应用。所以,如果你想做图像处理方面的研究,Matlab是必须掌握的,而且是熟练掌握。当你有一些想法需要验证时,最好明智的先用matlab编写出来测试。如果你上来就用看似高大上的C++来实验,不仅错误BUG一大堆,到头来可能效果还不佳,就算效果好,时间也会耽搁不少,毕竟算法开发还是要快的,这样才能赶在别人之前发论文。总之,只要是接触图像算法,终究逃不过Matlab,就算你是软件开发的,不研发算法,但总得能看懂别人的Matlab算法吧。

  对于之前没怎么接触过Matlab与图像处理的人,在这里推荐一本相关的书籍《MATLAB图像处理实例详解(附光盘)》。这本书对于Matlab图像处理入门还是很有帮助的。记得我当时刚上研究生时就靠两本书入门的,一是冈萨雷斯的《数字图像处理》,二是这本《MATLAB图像处理实例详解》。不过这里友情提示,在看这类教程(不仅仅是Matlab)时千万不要试图去记忆所有的工具函数,这种做法是十分愚蠢的。正确的做法是根据自己的情况快速翻阅这类工具书,可以找出里面的有实际意义的源码来敲一敲练练手感,至于具体的工具函数,只需要知道Matlab提供了这方面的功能就行了,以后用到了再回来查,或者谷歌百度。我觉得在入门阶段,最重要的不是看了多少书,听了多少课,而是尽快自己敲出一段代码,运行出结果,来建立自信和成就感,这才是支持我们走下去的最实在的动力。记得我当时看了没多久就自己敲了一个蹩脚的车牌检测的Matlab程序,现在看来真是漏洞百出,不过当时我真的很兴奋,很有成就感,觉得自己能干这行,对于初学者来说,这种感受弥足珍贵。

  2、OpenCv

  Opencv是Intel公司开发的C++图像处理工具包,形象的理解为就是C++版的Matlab。当初Intel公司开发这个工具包的初衷也是方便大家共享,希望大家能够在一个共同架构的基础上共同建造摩天大楼,而不是各自在自己的地基上盖平房。与Matlab不同,Opencv是面向开发的,稳定性好,异常处理机制周全,但有一点需要注意,由于Opencv是开源的,那么如果你在项目中直接调用了它的API,那就意味着你的项目也必须开源。因此在真正的产品开发过程中,往往需要从Opencv库里面挖代码,而不是直接调用,幸好Intel公司允许我们看源码,自己编译一把就可以了。

  说道C++和Opencv,有一个问题不得不提,那就是深度学习领域大名鼎鼎的Caffe框架。这是一个典型的基于C++和OpenCv的深度学习框架,由谷歌深度学习团队、“谷歌大脑”负责人之一贾扬清学者编写,并公布了源码。如今各个深度学习机构都在大量使用这个框架进行研究。

  这里同样对推荐两本关于Opencv方面的教程。一本是CSDN博客大牛毛星云写的《OpenCV3编程入门》,这是它根据自己多年的博客整理成的书,很详细,很典型的一本教程,介绍了OpenCv中相对前沿的知识。我翻看过这本教程,中规中矩,里面的代码通俗易懂,尤其适合初学者。当然大家同样要注意不要犯了死读书的毛病,只看它的功能,敲代码练手感即可,不要试图记忆API函数。重要的工具用多了自然会记住,不重要的工具记住了也没用。

  这里推荐的第二本书是《图像识别与项目实践――VC++、MATLAB技术实现》,这本书是一本偏向于工程应用的书,我之所以推荐它是因为它给出了很多有新意、能运行的代码。其中里面有一个项目让我印象很深,是一个车牌检测的实例。简单描述一下:由于车牌中的字符数是固定的,因此它通过判断横向区域笔画的跳变数以及笔画宽度来定位车牌区域。这个想法让人耳目一新,并且它还给出了详细代码,我也亲身试验过,效果还不错。

  这里同样再强调一下,就是一定要尽早入手写程序,建立自信和成就感。我当时学OpenCv正好用它开发了一个人脸性别识别的系统,是一个本科大学生创新计划的需求,效果还可以。

  3、Python

  Python在今年12月份的编程语言排行榜中名列第5,增长迅速。可以说Python已经逐渐成为当下脚本语言的新标准。Python在图像处理算法方面除了其自身简洁的编程优势外,还得益于两个重要的Python类库——Numpy和Theano。

  Numpy是Python的线性代数库,对于矩阵运算能提供很好的支持,并且能够在此基础上进行很多机器学习相关算法的开发仿真,这里推荐一本受到大家广泛认可的书《机器学习实战》,我最近也正在看这本书,里面对好多机器学习领域的经典算法,小到KNN,大到SVM,都给出了详细的介绍以及代码实现(Python版)。Theano是Python的机器学习库,能够方便的实现深度学习(例如卷积神经网络CNN)算法,网上很多对于DeepID算法的复现都是用的这个库。

  人觉得单从图像处理的角度评价的话,Python并没有前面两个工具(Matlab和OpenCv)应用广泛,不过作为通用的脚本语言,我觉得每个程序员都应该去了解了解它,毕竟俗话说没有烂的编程语言,只有烂程序员。我在学Python时第一个自己写的程序就是微信打飞机的小程序,在我的博客中有详细的教程,虽然是参照小甲鱼的《零基础入门学习Python》视频教程写的,但还是蛮有成就感的。

  三、图像处理研究方法

  我觉得,图像处理研究主要可以分为三个部分:基础概念、基本思想、算法研究。

  1、基础概念

  所谓基础概念,就是图像处理里最基本的知识,比如什么是图像?什么是像素?什么是彩色图像等等。没有一个明确的界限来划定什么是基础概念什么是高级知识,因人而异。了解图像处理的基础知识,有一本书是必读的,就是冈萨雷斯编写的、阮秋琦翻译的《数字图像处理》。这本书已经作为图像处理领域的经典教材使用了三十多年,我自己也把这本书看了好几遍,每一遍都会有新的体会。我觉得每一个搞图像的都应该熟读这本书。书中除了有几章内容在讲小波变换、模式识别等相对抽象的内容外,其他内容相对都是很基础的,本科生水平就能看懂。而且我建议要尽早看这本书,如果是研究生尽量在进入课题之前就看一遍,因为这样一本经典的书在进入课题之后可能就没时间看了,以后也顶多是查阅而已。我当初就是在大四的寒假看完了这本书,以后在图像入门的过程中就显得轻松很多。看完这本书,哪怕是只看前几章,明白了什么是图像(二维或者三维矩阵)、什么是像素、彩色图和灰度图、颜色空间、图像滤波、图像噪声、图像频域变换等概念,将来在进行更深一步的研究的话就会方便很多了。

  2、基本思想

  刚开始想把这部分内容命名为“基本算法”,意在介绍图像处理中的一些基本算法,后来仔细想想决定不这么写,因为图像处理是一个非常大的概念,图像处理不等于人脸识别,也不等于模式识别,直接介绍诸如图像处理基本算法之类的内容很容易写成空话,没有什么实际意义。读者有兴趣的话可以直接谷歌百度“图像处理十大经典算法”,上面有我想说的内容。

  万变不离其宗,算法是死的,重在思想。举个例子,我个人是主攻模式识别方向,在这个方向判断一个学生是否入门有一个非常简单的方法,就是“如果你能把图像很自然的想象成高维空间中的一个点”,那就说明在模式识别方面入门了,可以对图像进行分类了。当然标准不是唯一,在其他领域如目标检测也会有其他的判断标准,总之我们要对图像进行处理,那么图像就不再只是图像,它可能会演变成各种不同形式的概念,可能是点,可能是面,还可能是一个坐标空间。在目标跟踪的经典算法粒子滤波中,将一个个的小图像块看做一个个粒子;在子空间理论中,将一系列图像放在一起构建一个成分主空间(例如主成分分析PCA算法等等。,我不会详细介绍这些算法,说多了就显得抽象老套,但我要说的是我们一定要把图像本身理解好,它是一个图像,是一个矩阵,是一个信息的容器,是一种数据的表现形式,图像不一定都必须在视觉上有意义(比如频域的图像)。

  总之图像处理的基本思想还是要立足于图像本身,要深度到图像内部结构中,思维要灵活。我当时做本科毕设时,怎么也不知道图像和高维空间中的点之间有什么对应关系,后来总算有一天,突然就明白了,这也就是所谓的量变产生质变。总之一定要多想,多总结,主动去钻研,才能够真正领悟一些东西。最基本的东西往往蕴藏着深奥的道理,无论你现在多牛多厉害,都不能放掉最本源的东西。多想想图像是什么,有什么本质属性,你可能无法得到准确的答案,但肯定能得到一些有用的感悟(有点像哲学问题了)。

  3、算法研究

  算法研究应该是图像处理的核心工作,尤其是各大高校的博士硕士。这里我并不想谈那些高大上的算法,我更想说的是一些算法研究的一些基础的东西,比如说一些基础课程,比如说矩阵运算。

  研究图像处理的算法,离不开数学。在这里我建议图像处理方面的硕士一定要上两门课:《泛函分析》以及《最优化算法》,有的学校已经将这两门课列为了研究生阶段的必修课程。这两门可可以说是图像处理(至少是模式识别)的基础。我当初没上过最优化算法,但后来也自己补上了,不然真的是寸步难行。至于泛函我当时听课的时候也不是很懂,但是在之后的研究过程中发现很多图像处理的基本知识基本理论都和泛函分析中枯燥的定理如出一辙,没办法,有的东西本身就是枯燥的干货,学着费力,缺它不行。

  其次我想说的是矩阵运算。图像就是矩阵,图像处理就是矩阵运算。大家为什么都喜欢用Matlab,就是因为它的矩阵运算能力实在是太强大,在Matlab的世界中任何变量都是矩阵。同样OpenCv之所以能流行,不仅仅是因为它良好的封装性,也是因为它的矩阵格式,它定义了Mat基础类,允许你对矩阵进行各种操作。Python也不例外,它的Numpy就是一个专门的线性代数库。

  真正在图像编程过程中,那些看着高大上的API函数归根到底都是工具,查查手册就能找到,真正核心还是在算法,算法是由公式编写的,公式的单元是变量,而图像届的变量就是矩阵。所以,熟练去操作矩阵,求秩、求逆、最小二乘,求协方差,都是家常便饭。所以,如果你有幸能上《矩阵分析》这门课,一定要把它看懂,那里面都是干货。

  四、小结

  总之,图像处理就是一个典型的门槛低、厅堂深的领域。不需要太多基础,学过线性代数,会一点编程就够了;但是那些算法却深不可测,是个消耗功夫的活儿。在写这篇教程时我说的很直白,就像和大家对话一样,想到什么说什么。在最后我想说两句题外话,就是不仅仅针对图像处理,对于其他新技术的入门学习也是一样,尽快迈出第一步,尽快去建立自信和成就感,让自己有勇气走下去,然后缺什么补什么就行了。我觉得真正让人望而却步的往往不是技术本身,而是我们对自身的不自信。唯有果断开工,才能战胜心魔。


如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢。


2016-09-09 00:53:31 lpsl1882 阅读数 2530
  • CSDN Markdown简明教程

    Markdown把作者从繁杂的排版工作中解放出来,实现易读易写的文章写作,已经逐渐成为事实上的行业标准。CSDN博客支持Markdown可以让广大博友更加专注于博客内容,大赞。但是,不少博友可能对Markdown比较生疏,系列文章《Markdown简明教程》扼要介绍CSDN Markdown,本视频为系列教程的配套教程,希望可以对大家有所帮助。

    28435 人正在学习 去看看 王海庆

  图像处理分析过程中,检测特定的形状是重要的一步。霍夫变换(Hough)通过转换坐标系,将特定形状的检测映射到参数空间中,从而根据参数空间中的值来确定特定形状的相关信息。
  Hough变换的比较简单的应用例子有检测直线和检测圆。

检测直线

  设空间中有若干点,我们要判断这些点是否能构成一条直线,即为直线检测。平面中直线的通用公式为xcos(θ)+ysin(θ)=ρ。常用的y=wx+b公式,因为不能兼容y=b的情况,所以不能使用。对于某个点,其坐标是(xi,yi),过该点的直线有无数条,这些直线统一表示为xicos(θ)+yisin(θ)=ρ,其中xi,yi是常量。反过来看,代表这些直线的公式,可以看做θ为自变量,ρ为因变量,xi,yi为常量参数的直线公式。这样,在x-y空间过(xi,yi)的无数条直线,可以在θρ空间中用一条线代表。见下图:
  这里写图片描述
  这里写图片描述
  上图是x-y空间,下图是θρ空间。其中红、绿、蓝三条线可以汇聚成一个点,说明这三条线对应的点,其在θρ空间中的直线参数是一样的。反过来就是说,穿过这三个点的无数直线中,有“三”条直线,其θ,ρ值相同,这“三“条直线是一根直线,即这三个点可以共线。
  

检测圆

  设空间有若干点,我们要判断这些点是否能构成一个圆的轮廓,即为圆检测。圆的表达式为(xx)2+(yy)2=R,参数有x,y,R。这说明,圆对应的映射空间是三维的,即xyR空间。x,y都表示空间,因此我们可以暂时将R设为常量,构建xy空间,令x’为自变量,y’为因变量,作图如下:
  这里写图片描述
  这里写图片描述
  上图是x-y空间,下图是x’-y’空间。图中绘制了一个圆和一个矩形,其中圆的轮廓并不是完全规则的。经过Hough变换后,圆上的点的变换曲线基本汇聚在一起,而矩形上的点则不能汇聚,这样就检测到圆。由于我们获取的图像并不一定是规则图形,其在参数空间中不一定能汇聚到一个点,而是在一个区域中汇聚起来,为了容许这类误差,我们可以用窗来检测参数空间中的曲线汇聚区域,而不是找曲线汇聚点,以此来检测不完全规则的特定形状。
  如果我们不知道R的值,那么我们就需要给定R取值的离散区间[R1,R2...Rn],取该区间中的值,重复做n次Hough变换检测。这样的话工作量会非常大,为了提升效率,往往会借助图像中的其他特征。
  另外,我们可以看出,由于不知道圆的尺度,我们不得不重复做多次检测。在实际的形状检测工作中,我们并不知道需要检测的复杂形状,经过了何种平移、缩放、旋转甚至是扭曲,因此需要引入不变性特征,或者针对所有可能的平移、缩放、旋转变换情况,统统做一遍检测。物体检测跟踪需要相当多的计算量。据了解,人脑为了进行视觉模式识别,至少消耗了一半的神经资源,所以人可以闭目养神,却不能捂耳朵、捏住鼻子养神:)

2018-05-30 17:25:09 fengzhongluoleidehua 阅读数 1405
  • CSDN Markdown简明教程

    Markdown把作者从繁杂的排版工作中解放出来,实现易读易写的文章写作,已经逐渐成为事实上的行业标准。CSDN博客支持Markdown可以让广大博友更加专注于博客内容,大赞。但是,不少博友可能对Markdown比较生疏,系列文章《Markdown简明教程》扼要介绍CSDN Markdown,本视频为系列教程的配套教程,希望可以对大家有所帮助。

    28435 人正在学习 去看看 王海庆

深度学习笔记
深度学习(六十九)darknet 实现实验 Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffma

深度学习(六十八)darknet使用

深度学习(六十七)metal forge深度学习库使用

深度学习(六十六)生成模型、最大化似然、KL散度

深度学习(六十五)移动端网络MobileNets

深度学习(六十四)Faster R-CNN物体检测

深度学习(六十三)空间变换网络

深度学习(六十二)SqueezeNet网络设计思想笔记

深度学习(六十一)NNPACK 移植与实验

深度学习(六十)网络压缩简单总结

深度学习(五十九)mxnet移植至android

深度学习(五十八)caffe移植至mxnet

深度学习(五十七)tensorflow andorid yolo物体检测测试

深度学习(五十六)tensorflow项目构建流程

深度学习(五十五)tensorflow分布式训练

深度学习(五十四)图片翻译WGAN实验测试

深度学习(五十三)对抗网络

深度学习(五十二)变分贝叶斯自编码器(下)

深度学习(五十一)变分贝叶斯自编码器(上)

深度学习(五十)基于条件对抗网络的图片翻译

深度学习(四十九)Tensorflow提高代码效率笔记

深度学习(四十八)InfoGAN学习笔记

深度学习(四十七)DSD正则化训练方法

深度学习(四十六)Adversarial Autoencoders

深度学习(四十五)条件对抗网络

深度学习(四十四)变分贝叶斯自编码器(上)

深度学习(四十三)条件变分自编码器概述

深度学习(四十二)word2vec词向量学习笔记

深度学习(四十一)cuda8.0+ubuntu16.04+theano、caffe、tensorflow环境搭建

深度学习(四十)caffe使用点滴记录

深度学习(三十九)可视化理解卷积神经网络(2.0)

深度学习(三十八)卷积神经网络入门学习(2.0)

深度学习(三十七)优化求解系列之(1)简单理解梯度下降

深度学习(三十六)异构计算CUDA学习笔记(1)

深度学习(三十五)异构计算GLSL学习笔记(1)

深度学习(三十四)对抗自编码网络-未完待续

深度学习(三十三)CRF as RNN语义分割-未完待续

深度学习(三十二)半监督阶梯网络学习笔记

深度学习(三十一)基于深度矩阵分解的属性表征学习

深度学习(三十)贪婪深度字典学习

深度学习(二十九)Batch Normalization 学习笔记

深度学习(二十八)基于多尺度深度网络的单幅图像深度估计

深度学习(二十七)可视化理解卷积神经网络

深度学习(二十六)Network In Network学习笔记

深度学习(二十五)基于Mutil-Scale CNN的图片语义分割、法向量估计

深度学习(二十四)矩阵分解之基于k-means的特征表达学习

深度学习(二十三)Maxout网络学习

深度学习(二十二)Dropout浅层理解与实现

深度学习(二十一)基于FCN的图像语义分割

深度学习(二十)基于Overfeat的图片分类、定位、检测

深度学习(十九)基于空间金字塔池化的卷积神经网络物体检测

深度学习(十八)基于R-CNN的物体检测

深度学习(十七)基于改进Coarse-to-fine CNN网络的人脸特征点定位

深度学习(十六)基于2-channel network的图片相似度判别

深度学习(十五)基于级联卷积神经网络的人脸特征点定位

深度学习(十四)基于CNN的性别、年龄识别

深度学习(十三)caffe之训练数据格式

深度学习(十二)从自编码到栈式自编码

深度学习(十一)RNN入门学习

深度学习(十)keras学习笔记

深度学习(九)caffe预测、特征可视化python接口调用

深度学习(八)RBM受限波尔兹曼机学习-未完待续

深度学习(七)caffe源码c++学习笔记

深度学习(六)caffe入门学习

深度学习(五)caffe环境搭建

深度学习(四)卷积神经网络入门学习

深度学习(三)theano入门学习

深度学习(二)theano环境搭建

深度学习(一)深度学习学习资料

图像处理
图像处理2

图像处理(二十三)基于调色板的图像Recoloring

图像处理(二十二)贝叶斯抠图

图像处理(二十一)基于数据驱动的人脸卡通动画生成

图像处理(十九)基于移动最小二乘的图像变形

图像处理(十四)图像分割(4)grab cut的图割实现

图像处理(十三)保刚性图像变形算法

图像处理(十二)图像融合(1)Seamless cloning泊松克隆

图像处理(十一)图像分割(3)泛函能量LevelSet、snake分割

图像处理(九)人物肖像风格转换

图像处理(十)基于特征线的图像变形-

图像处理(七)导向滤波磨皮

图像处理(六)递归双边滤波磨皮

图像处理(四)图像分割(2)测地距离Geodesic图割

图像处理(三)图像分割(1)Random Walks分割

https://blog.csdn.net/hjimce/article/details/50573444

主要阐述了一系列rcnn用到的算法以及目前发展流程,做一个综合的整理 rcnn->spp-net->fast-rcnn->faster-rcnn->yolo->ssd->R-FCN 小小搬运工,希望对大家有帮助 :)

https://blog.csdn.net/column/details/ym-alanyannick.html

2015-10-06 18:37:10 jaych 阅读数 2290
  • CSDN Markdown简明教程

    Markdown把作者从繁杂的排版工作中解放出来,实现易读易写的文章写作,已经逐渐成为事实上的行业标准。CSDN博客支持Markdown可以让广大博友更加专注于博客内容,大赞。但是,不少博友可能对Markdown比较生疏,系列文章《Markdown简明教程》扼要介绍CSDN Markdown,本视频为系列教程的配套教程,希望可以对大家有所帮助。

    28435 人正在学习 去看看 王海庆

最近刚接触图像算法开发,而且也是手机端的图像算法开发,一上来导师就给说说图像算法开发的过程。

图像算法开发跟普通程序的软件算法开发又不一样,图像算法主要是关注如何对图像进行处理,也就是关注的优化的对象不一样。

图像算法开发过程,一般是:
1)在PC端进行算法验证,达到所要实现的功能。因为在PC端能够更好的进行算法调试,确保功能实现。
2)PC端的优化,将算法优化到最佳状态。
3)算法移植到手机平台上,实现算法功能。
4)移动端算法优化,进行C/C++代码优化,NEON优化等等。后续将对如何进行代码优化进行总结。

在整个过程中,对算法的理解十分重要,而如何进行代码优化,NEON优化是算法实现的难点。

后续通过各种算法的实践、联系、总结,不断的加深理解。

图像配准小结

阅读数 577

没有更多推荐了,返回首页