黄 亮,左小清,冯 冲,聂俊堂
基于Canny算法的面向对象影像分割
黄 亮,左小清,冯 冲,聂俊堂
(昆明理工大学国土资源工程学院,昆明 650093)
面向对象的影像分析方法是当前信息提取的研究热点,而影像分割是面向对象方法的核心技术,分割效果的好坏直接影响影像对象的提取。将Canny算法在边缘检测上的优势同面向对象信息提取软件eCognition 8.0提供的二次开发平台结合在一起,提出一种基于Canny算法的面向对象的影像分割新方法。试验结果表明,该方法不仅准确可靠,且分割结果连续,很好地解决了“淹没”和“破碎”现象;而且结合了面向对象方法的优势,很好地解决了“椒盐”问题,最大限度地减小噪声对分类的影响,从而达到准确提取感兴趣地物对象的目的。
影像分割;Canny算法;面向对象;易康(eCognition);边缘检测
随着高分辨率图像的出现和发展,利用遥感图像提取影像目标(道路、建筑物及水系等)成为构建及更新地理空间数据的重要手段之一。面向对象的影像分析方法能更好地获得分类结果且结果更易于解释,因而成为信息提取的研究热点。影像分割作为面向对象的影像分析方法的核心技术,其效果的好坏直接影响影像中目标的提取。现今有很多不同的影像分割方法,但在实际应用中大多不能达到令人满意的效果,其主要原因有两个:①将一景影像分割为一定数量的区域是一个不定解问题;②人们感兴趣的区域是非均质的,必要的识别信息无法直接获得,因此产生了模棱两可[1]。
针对影像分割中存在的上述问题,很多遥感工作者进行了大量的研究。蒋圣等[2]提出一种基于模糊形态学梯度的高分辨率遥感影像分割方法,该方法可有效去除影像噪声、量化影像颜色从而达到有效地分割影像的目的,但在一定程度上仍有错分和计算没有普适性等缺点;高丽等[3]提出一种基于标记的分水岭影像分割新算法,该方法解决了分水岭的过分割问题,但对纹理细节丰富的影像处理结果不理想;Baatz 等[4]和谭衢霖等[5]提出一种面向对象的遥感影像多尺度分割方法,该方法是目前较为常用的一种分割算法,但分割速度慢,且会出现一定程度的分割“破碎”和过分割现象;莫登奎等[6]提出一种基于均值漂移的高分辨率影像多尺度分割方法,该方法在一定程度上优化了分割速度,但分割的准确度却没有明显提高,而影像分割不理想将导致提取结果的后期处理工作量较大。
Canny算法在边缘检测中具有错误率低、检测位置精度高以及每个边缘点的响应唯一等优势,而面向对象软件eCognition 8.0提供的二次开发功能恰好为其实现提供了平台。因此,本文以eCognition 8.0提供的Engine API开发组件为平台,将Canny算法和面向对象的影像分析方法的优势结合起来,提出一种基于Canny算法的面向对象的影像分割新方法。
Canny[7]分析了经典的边缘检测算子及边缘检测的应用效果,提出好的边缘检测算法应该具有的3个准则:①好的检测。好的边缘检测算子应该具有低的将边缘点误判为非边缘点或将非边缘点误判为边缘点的概率;②好的定位。判断的边缘点的位置尽可能地靠近真实边缘的中心位置;③单一边缘响应。每个边缘点有且只有一个响应,以最大限度抑制伪边缘的出现。
为了更直观地反映上述3个准则,有必要建立可求解的数学模型。首先处理信噪比和定位问题。假设滤波器的脉冲响应函数为f(x),边缘函数为G(x),边缘中心在x=0处,经过f(x)滤波后,边缘点处的响应为
假设滤波器的有限脉冲响应的区域为[-W,W],噪声响应的平方根为
式中,n0为噪声的均方根。
从而得到第一个准则的数学模型,即“好的信噪比”为
检测到的边缘应当尽可能地接近实际边缘的中心,因而Canny给出了第二个准则的数学模型——定位性能公式,即“好的定位”为
第三个准则——单边响应准则,即单个边缘产生的多个响应的概率要低,并且虚假边缘的响应应得到最大抑制。这要求在f(x)对噪声的响应中,两个相邻最大值间的距离为xmax(f);f'(x)的零交叉点平均距离为xzc(f)。两者间的关系为
Engine API(应用程序接口)是eCognition 8.0软件二次开发包中的一个组件,它通过插件来扩大Definiens Analysis Engine Software的容量。一个Engine API组件是由一个或多个插件组成的,一个插件或组件可以实现一个算法或功能。
eCognition 8.0的应用程序通过使用几个服务器同时读写文件和数据库,并对这些数据进行运算。这些程序在启动时自动加载并以DLL’S的形式运行,可大致分为两类:驱动器和插件。程序运行时首先加载驱动器,然后加载插件。加载插件是按照规则集配置的顺序来进行的,它通过更改规则集进行载入,整个载入过程都是在eCognition 8.0平台上进行的。将DLL文件放在eCognition 8.0安装目录的binplugins下,eCognition 8.0将直接加载,通过Process Tree直接调用算法或功能。
Canny算子是边缘检测的算法,其目标是找到一个最优的边缘检测算法。它具有好的检测,好的定位以及最小响应等优势,但受噪声影响较大,直接用于提取建筑物难度较大。
面向对象的方法是基于同质性区域的,此分类方法能够获得较好的分类结果(不产生椒盐效应且不需任何滤波运算),且分类结果更易于解释[8]。但作为面向对象方法的关键技术之一的影像分割尚无理想的分割算法,由于分割不理想将导致提取结果的后期处理工作量较大。本文针对二者的优势提出基于Canny算法的面向对象影像分割方法。
2.2.1 Canny 算法实现
Canny算法的实现主要包括影像滤波、影像梯度计算、梯度非最大点抑制、边界起点搜索和边界跟踪等5个部分[9]。Canny算法主要嵌套在 Engine API的第4步执行算法部分中执行,其具体实现步骤如下:
(1)为了抑制噪声,对原始影像进行高斯(低通)平滑滤波。二维高斯分布函数为
(2)计算方向导数及梯度。影像G(x,y)在像素点(x,y)处的梯度定义为
空间域的高斯低通滤波器为
其对应的梯度矢量为
(3)抑制局部像元非最大梯度点。Canny算子认为梯度图中只有某些点才能成为边界点或者是边界的起点。对于像元点(x,y),其非最大值抑制(NMS)过程的数字表示为
式中,N(x,y)为进行非极大值抑制后的影像;M(x,y)为梯度值影像阵列;ξ(x,y)=Sector(θ(x,y)),ξ(x,y)=0,1,2,3;θ(x,y)为梯度方向角。
(4)根据梯度计算结果对经过非最大值抑制后的结果设定阈值。由于阈值的设定直接涉及哪些像元点可能为边界点,所以它是Canny算子的重要部分。统计经非最大值抑制处理后的数据中可能为边界点的那些像元,然后利用直方图、根据高阈值占影像像元总数的比例设置高阈值,最后利用低阈值与高阈值之间的比例和高阈值来设置低阈值。
(5)寻找边界起点及跟踪边界。
2.2.2 算法实现过程
基于Canny的面向对象影像分割可通过eCognition 8.0软件提供的二次开发组件Engine API结合Canny算法实现。本文算法的实现过程包括:
(1)对影像数据进行高斯平滑处理;
(2)进行Canny算法的设计并搭建算法与面向对象软件eCognition 8.0的组件接口;
(3)用Canny算法提取影像的边缘;
(4)将提取的边缘进行区域闭合处理。
为了实现一个基本算法组件的功能,本文划分出以下4个步骤:①组件建立和资源管理;②组建用户接口安装;③业务配置;④执行算法。该算法的步骤如图1所示。
图1 技术流程Fig.1 Technical flow chart
具体的算法步骤包括:①建立结构体、析构函数以及移除功能;②告诉用户安装什么样的参数可以用于该算法,它们如何显示给用户,向用户解释,以及其他的一些界面设置(主要函数功能包括参数设置,界面设置及功能说明等);③设置和得到参数、进程数(规则集视图)所用的进程名并让软件了解该算法支持的场景;④算法的初始化和执行。
本试验采用某地的具有RGB 3个波段、分辨率为0.32 m的航摄影像,选取2 001像元×2 001像元的区域为研究区(图2)。
图2 原始航空摄影影像Fig.2 Original aerial photographic image
目前eCognition 8.0主要有3种面向对象的分割算法:棋盘分割(chessbord segmentation)、四叉树分割(quadtree-basd segmentation)和多尺度分割(multi-threshold segmentation)。其中,棋盘分割常用于细分影像;四叉树分割用于优化小的影像对象,提取具有同质性且规则的对象;多尺度分割则用于提取描述相关特征(具有光谱信息特征和同质性的形状特征)[10]。由于棋盘分割和四叉树分割用于细化影像对象,故本文采用多尺度的面向对象的分割算法对原始影像进行分割。多尺度分割是目前主流使用的面向对象分割,但它将建筑物、道路及水系等信息分割得过于“破碎”,并存在“淹没”现象。将图2用多尺度分割法进行分割处理,结果如图3所示。从图3中可以看出,分割效果不够理想。
图3 多尺度分割Fig.3 Multi- threshold segmentation
针对上述问题,本文将边缘检测与面向对象的方法相结合,对影像进行分割。首先进行边缘检测算法设计,然后利用函数进行组件用户接口的设置,最后将算法嵌套在Engine API接口下。在Process Tree下加载基于Canny算法的面向对象分割算法,设置参数后运行算法对影像进行分割,分割效果较好(图4)。
图4 基于Canny算法的面向对象分割Fig.4 Object- oriented segmentation based on Canny algorithm
对比多尺度分割(图3)和基于Canny算法的面向对象分割(图4)的结果可以看出,在水系方面,多尺度分割将一个湖区分割成若干大小不等的影像对象,而基于Canny算法的面向对象的分割将一个湖区分割成完整的一个影像对象;在道路方面,多尺度分割将道路分割成若干段,而基于Canny算法的面向对象的分割则将一条道路完整地分割出来;在建筑物方面,基于Canny算法的面向对象的分割将建筑物完整地分割出来,但同时也将屋脊线识别出来,而多尺度分割在识别出屋脊线的情况下还将建筑物分割成若干对象。通过比较可以看出,基于Canny算法的面向对象分割有效地解决了“破碎”和“淹没”现象。
传统的基于Canny算法的分割方法虽然可以有效地对影像进行分割,但不能有效地提取出遥感影像中感兴趣的地物。而基于Canny算法的面向对象的分割方法因与面向对象的分类方法结合在一起,综合了面向对象分类方法的优势,很好地解决了“椒盐”问题,最大限度地减小了噪声对分类的影响,从而达到提取出感兴趣地物对象的目的。
以提取建筑物为例,本文在实验中对遥感影像进行分割后,接着构建了提取建筑物的知识库,然后采用eCognition提供的assign class算法进行了建筑物提取,提取结果如图5所示。
图5 建筑物提取图Fig.5 The image of buildings extracted
从图5可以看出,基于Canny算法的面向对象的分割方法能很好地应用于遥感影像的地物信息提取。
(1)通过eCognition 8.0软件提供的二次开发组件Engine API与Canny算法的结合,实现了基于Canny算法的面向对象的影像分割。试验结果表明,采用该方法能很好地将影像分割,且能很好地提取出影像中的感兴趣地物对象。
(2)对本文方法分割的对象目标的分析表明,分割效果整体较好(特别是建筑物及道路),但在植被分割方面尚有待改进。下一步的研究重点是对基于Canny算法的面向对象的分割算法进行改进,使其能更好地解决边缘点多而杂的感兴趣地物对象的提取问题。
[1] 关元秀,程晓阳.高分辨率卫星影像处理指南[M].北京:科学出版社,2008:141-221.
[2] 蒋 圣,汪 闽,张星月.基于模糊形态学梯度的高分辨率遥感影像分割方法[J].计算机应用研究,2009,26(8):3140-3142.
[3] 高 丽,杨树元,李海强.一种基于标记的分水岭图像分割新算法[J].中国图象图形学报,2007,12(6):1025 -1032.
[4] Baatz M,Sehape A.Multiresolution Segmentation:An Optimization Approach for High Quality Multi-scale Image Segmentation[C]//Strobl J,Blaschke T,Griesebener G,eds.Angewandte Geographische Informations Verarbeitung XII Beiträge zum AGIT -Symposium Salzburg 1999.Karlsruhe Herbert:Wichmann Verlag,2000.
[5] 谭衢霖,刘正军,沈 伟.一种面向对象的遥感影像多尺度分割方法[J].北京交通大学学报:自然科学版,2007,31(4):111 -119.
[6] Mo D K,Lin H,Li J P,et al.VHR Imagery Multi- Resolution Segmentation Based on Mean Shift[J].Journal of Guangxi Normal University:Natural Science Edition,2006,24(4):247 -250.
[7] Canny J.A Computational Approach to Edge Detection[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1986,8(6):679-698.
[8] Baatz M,Schape A.Object- oriented and Multi- scale Image Analysis in Semantic Networks[C]//Proc of the 2nd International Symposium on Operationalization of Remote Sensing.Enschede:ITC,August 16th~20th,1999.
[9] 张宏林.精通Visual C++数字图像处理典型算法及实现[M].2 版.北京:人民邮电出版社,2008:414-429.
[10]黄 亮,左小清,张晓晓,等.面向对象的道路信息识别提取分析[J].昆明理工大学学报:理工版,2010,35(6):6 -10.
Object-oriented Image Segmentation Based on Canny Algorithm
HUANG Liang,ZUO Xiao-qing,FENG Chong,NIE Jun-tang
(Faculty of Land Resource Engineering,Kunming University of Science and Technology,Kunming 650093,China)
Object- oriented image analysis is the current research focus in information extraction,and the image segmentation method is the core technology of the object-oriented method.The effect of the segmentation directly affects the extraction of image objects.In this paper,the authors propose an object- oriented method for image segmentation which combines the advantages of edge detection using Canny operator with the secondary developing functions provided by eCognition Developer 8.0.Tests show that the segmentation method is accurate and reliable,the segmentation result is continuous and can well solve the“flood”and“broken”phenomenon.At the same time,this method that combines the advantages of the object-oriented method can satisfactorily solve the problem of“salt and pepper”and minimizes the impact of noise on the classification so as to extract the interesting object surface features.
Image segmentation;Canny algorithm;Object-oriented;eCognition;Edge detection
TP 751.1;P 237
A
1001-070X(2011)04-0026-05
2011-03-11;
2011-04-07
国家自然科学基金项目(编号:41061043)和云南省教育厅科学研究基金项目(编号:2011J075)共同资助。
黄 亮(1985-),男,硕士研究生,主要研究方向为遥感信息处理与应用技术。
(责任编辑:刘心季)