1、目 录1引言12开发平台22.1Visual Studio 201022.1.1MFC简介32.2OpenCV简介42.2.1OpenCV的模块42.2.2OpenCV的特征42.2.3OpenCV的功能43基本概念53.1图像分割53.1.1图像分割的定义53.1.2图像分割的意义63.2Parzen窗方法73.3图像梯度的计算83.3.1梯度的定义83.3.2图像梯度的定义93.4测地线93.4.1测地线的定义93.4.2短程线103.4.3测地线的性质104基于测地线的图像分割114.1用Parzen窗方法求PDF114.2梯度的计算134.3测地线距离的计算154.3.1前景测地线距离
2、计算154.3.2背景测地线距离计算165实验结果与分析176总结19参考文献19致谢20附录A20*大学本科毕业论文基于测地线的图像分割实现*(信息与电气工程学院,计算机科学与技术专业,2008级*班,*)摘 要:图像分割是指把图像分解成各具特性的区域并提取出目标的技术和过程,是图像处理的重要内容之一,分割结果的好坏将直接影响到基于图像分割的高级应用。在计算机视觉中,图像分割得到广泛的应用。本文实现了一种基于测地线距离的图像分割方法,提供了对图像进行软分割和目标提取的一个交互框架,通过用户对图像中的前景和背景标注,训练出前景种子点和背景种子点的概率密度函数,对图像中的其他像素进行类别判断。最
3、后将前景提取出来。关键词:图像分割; Parzen窗方法;梯度;测地线;PDFGeodesics Based on Image Segmentation Realized*(School of Information &Electrical Engineering , Computer Science & Technology, Class *Grade2008,*)Abstract:Image Segmentation is the technique and the process to segment an image into different parts with diverse
4、characters and to extract the interested region, which is also one of the important contents in image processing, and the quality of image segmentation directly affects the performance of advanced applications based on it. As an important and basic procedure in the field of computer vision, image se
5、gmentation has been widely used in our daily life. In this paper, one interactive framework for soft segmentation and matting of natural images and videos is presented. The proposed technique is based on the optimal, linear time, computation of weighted geodesic distances to the user-provided scribb
6、les, from which the whole data is automatically segmented. The weights are based on spatial or temporal gradients, without explicit optical flow or any advanced and often computationally expensive feature detectors.Key words:image segmentation; Parzen; gradient; geodesic; PDF1引言计算机科学技术的飞速发展使得图像处理和分析
7、逐渐形成了自己的科学体系。尽管其发展历史不长,但新的处理方法层出不穷,引起了各方面人士的广泛关注。视觉是人类最重要的感知手段之一,视觉信息是人类从自然界获得信息的主要来源,“眼见为实”,视觉信息所提供的直观作用是文字和声音无法比拟的。图像是指对客观存在的物体的一中相似性的、生动的写真和描述,是日常生活中广泛接触的一种媒体,如:照片、医学图像、天文观测图像、卫星遥感图像等。图像的特点是:(1)直观形象,可以将客观事物的原形真实的展现在面前,供不同能力、不同目的、不同水平的人去观察、理解;(2)易懂,只要将图像呈现在人的眼前,其视觉系统就会立即得到这幅图像所描述的信息;(3)“一图胜千言”,图像本
8、身所携带的信息远比文字、声音信息丰富。因此,数字图像成为心理学、生理学、计算机科学等诸多领域内的学者们研究视觉感知的有效工具。其次,图像处理在军事、遥感、气象等大型应用中有不断增长的需求。其中,图像分割在计算机视觉中的应用越来越广泛,如:航空照片、卫星照片、视频片段等的解释、医学辅助诊断等。图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。图像分割能够按照某一特征把图像分成若干具有一定意义的、互不交叠的区域,是由图像处理到图像分析的关键一步。图像分割是图像处理重要的研究内容,通过图像分割、目标分离、特征提取、参数估计等技术可以将原始图像转化为更抽象更紧凑的形式
9、,使得更高层的图像分析和理解成为可能。它是图像理解的重要组成部分,是图像处理到图像分析的关键步骤,图像分割结果的好坏直接影响到对于图像后续处理,同时也是图像处理中最重要和最困难的问题之一。图像分割的结果是图像特征提取和识别等图像理解的基础,对它的研究一直是图像技术研究中的热点和焦点。本文提出了对图像进行软分割和抠图的一个交互框架,该技术是基于对用户提供的标注中的数据进行最优的,线性的,加权的测地线距离的计算,标注中的数据是自动分割的。对标注中的数据进行运算求得最小距离短程线,来对图像处理,进行分割得到目标。2开发平台针对不同的应用平台我们要选择合适的设计工具,采用更为有效实用的技术。对基于测地
10、线的图像分割实现采用的是Microsoft Visual Studio 2010,并在VS2010中配置OpenCV2.1版本。2.1Visual Studio 2010Visual Studio是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境。Visual Studio 2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。Visual Studio 2010同时带来了 NET Framework 4.0、Microsoft Visual Studio 2010 CTP (Community Technology
11、PreviewCTP),并且支持开发面向Windows 7的应用程序。除了Microsoft SQL Server,它还支持 IBM DB2和Oracle数据库。根据微软发布的一份官方文档宣称,Visual Studio 2010将在下面五个方面有所创新: (1)民主化的应用程序生命周期管理Visual Studio Team System 2010将坚持打造一个功能平等、共同分担的平台以用于组织内的应用程序生命周期管理过程。通过Visual Studio 2010,微软将为开发者提供合适的工具和框架,以支持软件开发中最新的架构、开发和部署。 (2)让开发商惊喜从Visual Studio的第
12、一个版本开始,微软就将提高开发人员的工作效率和灵活性作为自己的目标。Visual Studio 2010将继续关注并且显著地改进开发者最核心的开发体验。 (3)下一代平台浪潮的弄潮儿微软将继续投资于市场领先的操作系统、工具软件和服务器平台,为客户创造更高的价值。使用Visual Studio 2010,将可以在新一代的应用平台上,为你的客户创造令人惊奇的解决方案。 (4)跨部门的应用客户将在不同规模的组织内创建应用,跨度从单个部门到整个企业。Visual Studio 2010将确保在这么宽泛的范围内的应用开发都得到支持。 (5)高效的开发环境Microsoft Visual Studio 2
13、010 采用拖曳式便能完成软件的开发,简简单单的操作便可以实现一个界面的生成。但拖曳的界面,也应当有相应的代码来实现功能。Microsoft Visual Studio 2010支持C#、C+ 、VB。Microsoft Visual Studio 2010的新特性: C# 4.0中的动态类型和动态编程; 多显示器支持; 使用Visual Studio 2010的特性支持TDD; 支持Office ; Quick Search特性; C+ 0x新特性; IDE增强; 使用Visual C+ 2010创建Ribbon界面; 新增基于.NET平台的语言 F#。2.1.1MFC简介MFC是微软把Wi
14、ndows API进行封装的类库,该类库以层次结构组织起来,其中封装了大部分Windows API函数和Windows控件。并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。MFC不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建、销毁),而是一些在WinOS(用MFC编写的程序绝大部分都在WinOS中运行)中实现内部处理的类,如数据库的管理类等。应用MFC编
15、程的好处:使Windows程序员能够利用C+面向对象的思想进行编程。2.2OpenCV简介OpenCV是一个基于C/C+语言的开源计算机视觉函数库。OpenCV由一系列C函数和C+类构成,功能涵盖图像处理、结构分析、运动检测、摄像机定标、三维重建以及机器学习等方面,并有较高的运行效率。2.2.1OpenCV的模块OpenCV包括以下几个模块,其具体功能是: CV 主要的OpenCV函数; CVAUX 辅助的OpenCV函数; CXCORE 数据结构与线性代数支持; HIGHGUI 图像界面函数; ML 机器学习,包括模式分类和回归分析等; CVCAM 负责读取摄像头数据的模块。2.2.2Ope
16、nCV的特征OpenCV具有以下特征:其代码都经过优化,可用于实时处理图像;具有良好的可移植性;可以进行图像、视频载入、保存和采集的常规动作;具有低级和高级的应用程序接口(API);提供了面向Intel IPP高效多媒体函数库的接口,可针对所使用的Intel CPU代码进行优化,提高程序性能; 具有底层和高层的应用开发包; 开源计算机视觉库采用C/C+编写; 独立于操作系统、硬件和图形管理器。2.2.3OpenCV的功能应用OpenCV可以实现以下功能:对图像数据的操作,包括分配、释放、复制、设置和数据转换;对图像和视频的输入输出,指文件和摄像头作为输入,图像和视频文件作为输出;具有对矩阵和向
17、量的操作以及线性代数的算法程序,包括矩阵积、解方程、特征 值以及奇异值等;可向各种动态数据结构,如列表、队列、集合、树和图等进行操作;具有基本的数字图像处理能力,如可进行滤波、边缘检测、角点检测、采样与差值、色彩转换、形态操作、直方图和图像金字塔等操作;可对各种结构进行分析,包括连接部件分析、轮廓处理、距离变换、各种距的计算、模板匹配、Hough变换、多边形逼近、直线拟合、椭圆拟合和Delaunay三角划分等;对摄像头的定标,包括发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计和立体对应;对运动的分析,如对光流、运动分割和跟踪的分析;对目标的识别,可采用特征法和隐马尔可夫模型法;具有基本的
18、GUI功能,包括图像与视频显示、键盘和鼠标事件处理及滚动条等。3基本概念在对图像进行分割时需要理解以下概念:图像分割、Parzen窗方法估计概率密度、梯度的计算、测地线距离的计算。 3.1图像分割3.1.1图像分割的定义图像分割是指将图像中具有特殊含义的不同区域划分开来,这些区域是互相不交叉的,每个区域都满足特定区域的一致性。从集合的角度出发,图像分割定义如下: 设R代表整个图像区域,对R的分割可看作将R分成若干个满足以下5个条件的非空子集,如图3.1所示。 图3.1(1)即分割成的所有子区域的并应能构成原来的区域 R;该条件指出分割所得到的全部子区域的总和(并集)应能包括图像中所有像素。 (
19、2)对所有的和及,有;该条件指出各个子区域是互不重叠的 (3)对于,有;该条件指出在分割后得到的属于不同区域中的像素应该具有某些相同特性; (4)对于,有;该条件指出在分割后得到的属于不同区域中的像素应该具有一些不同的特性;(5)对于,是联通区域;该条件要求同一子区域内的像素应当是连通的。 3.1.2图像分割的意义图像分割是数字处理图像中的一项关键技术,它使得后续的图像分析,识别等处理阶段所要处理的数据量大大减少,同时又保留有关图像结构特征的信息。由于分割中出现的误差会传播至高层次处理阶段,因此分割的精确程度非常重要,多年来一直受到研究人员的高度重视,被认为是计算机视觉中的一个瓶颈。图像分割是
20、图像识别和图像理解的基本前提步骤,如图3.2。图3.2图像分割是一种重要的图像技术,在不同领域中有时也用其它名称:如目标轮廓技术阈值化技术,图像区分或求差技术,目标检测技术,目标识别技术,目标跟踪技术等,这些技术本身或其核心实际上也就是图像分割技术。图像分割是图像处理、分析的一项基本内容。如图3.3,在各种图像应用中只需对目标进行提取,图像分割的准确性将直接影响后续工作的有效性,因此图像分割具有十分重要的意义。图3.33.2Parzen窗方法Parzen窗方法是一种能够利用已知样本对总体分布密度函数进行估计的有效的非参数估计方法。其基本思想是利用一定范围内的各点密度的平均值对总体密度函数进行估
21、计。我们将此技术用来估计图像灰度的空间概率密度分布。具体方法如下:假设区间是一个d维的超立方体。如果令表示超立方体的一条边的长度,那么体积就是,通过定义如下的窗函数,我们能够解析的得到落在窗中的样本个数的表达式: (3.1)表示一个中心在原点的单位超立方体。这样,如果Xi 落在超立方体中那么,否则便为0。因此,超立方体的样本个数就是: (3.2)表示对的第n次估计: (3.3) 表示落在区域内的概率密度函数。如果要求能够收敛到,必须满足下面三个条件:;。 把(3.2)式代入(3.3)式得: (3.4)假设是一幅的灰度图像,N=是像素的总个数,即样本总数,是窗口宽度上述公式对应到图像中可得到图像
22、的空间概率密度函数: (3.5)其中表示二维向量坐标,是窗口宽度,我们用正态函数作为窗口函数,即: (3.6) 令,其中是任选的一个参数。就是各个以样本点为中心的正态概率密度函数的叠加: (3.7)3.3图像梯度的计算在用于图像分割的方法中,梯度空间的处理方法非常流行。梯度是一个数学概念,引入到图像分割中是为了求出图像灰度值显著变化的地方。3.3.1梯度的定义函数在平面区域D内有一阶连续偏导数,则对于每一点,都可以求出一个向量,该向量称为函数在点的梯度,记为: (3.8)在向量微积分中,标量场的梯度是一个向量场。标量场中某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。梯度
23、本意是一个向量(矢量),当某一函数在某点处沿着该方向的方向导数取得该点处的最大值,即函数在该点处沿方向变化最快,变化率最大(为该梯度的模)。3.3.2图像梯度的定义图像函数在点的梯度是一个既有大小又有方向的矢量。假设分别表示沿x方向和y方向的梯度,则这个梯度矢量可以表示为: (3.9) 这个矢量的幅度为: (3.10)方向角为: 对于数字图像,导数可以用差分来近似,比较简单的梯度近似表达式为: (3.11) 通常为了降低复杂度,我们将公式(3.10)记为: 梯度的方向是函数变化最快的方向,当图像中存在边缘时,一定有较大的梯度值。而图像中比较平滑的部分,灰度值变化较小,一般具有较小的梯度。图像处
24、理中把梯度的模简称为梯度。3.4测地线曲面上的一条曲线,如果它的每一点处的测地曲率为0,则称为测地线。如果两曲面沿一曲线相切,并且此曲线是其中一个曲面的测地线,则它也是另一个曲面的测地线。3.4.1测地线的定义测地线又称为短程线,可以定义为空间中两点的局域最短或最长路径。是指物体在某种时空结构中从一点运动到另一点所走过的最短路程。在大地线上,各点的主曲率方向均与该点上曲面法线相合。它在圆球面上为大圆弧,在平面上就是直线。在大地测量中,通常用大地线来代替法截线,作为研究和计算椭球面上各种问题。测地线是在一个曲面上,每一点处测地曲率均为零的曲线。在图中,。如果从到存在通路,则称长度最短的通路为从到
25、的短程线,从到的短程线的长度称为从到的距离,记为,它满足下列性质:;。 如果不存在从到的通路,则通常记为。3.4.2短程线如果两曲面沿一曲线相切,并且此曲线是其中一个曲面的测地线,那么它也是另一个曲面 的测地线。过曲面上任一点,给定一个曲面的切方向,则存在唯一一条测地线切于此方向。在适当的小范围内联结任意两点的测地线是最短线,所以测地线又称为短程线。如图3.4。图3.43.4.3测地线的性质测地线具有以下性质:测地线在没一点P的测地曲率的绝对值都不大于它在P点相切的任何曲线在P点的测地曲率的绝对值,因此测地线意味着类似于平面的直线。如果把曲面曲线的可展面(即沿曲线所作曲面的的切平面族的包络)变
26、形成平面时,只有测地线所对应的曲线是直线。曲面上非直线的曲线是测地线的充分必要条件是除了曲率为零的点以外,曲线的主法线重合于曲面的法线。过曲面上任一点,给定一个曲面的切方向,则存在唯一一条测地线相切于此方向。测地线短程性。若给出曲面上充分小邻域内的两点P和Q,则过P,Q两点在小邻域内的测地线段是连接两点P,Q的曲面上的曲线中弧长最短的曲线。即在适当的小范围内连接任意两点的测地线是最短线,亦称短程线。测地线不仅应用于数学内部,而且也在物理学、工程技术学和大地测量学等方面也有着广泛的应用。如:圆柱面上的测地线、球面上的测地线、物理学中的测地线、测地线在工程技术中的应用。测地线在大地测量学中的应用可
27、以解决大地测量学中的有关问题。在大地测量工程中,如:根据测地线,定义了“球面三角形”,从而得出结论:球面三角形的三内角之和大于。4基于测地线的图像分割4.1用Parzen窗方法求PDF 基于区域的分割,将图像分为前景和背景分别进行标注。在算法中设置用红色标注前景,绿色标注背景。 在设计算法时,用表示图像的高度,定义为256。用表示图像的宽度,定义为256。设置两个数组,和分别用来存储属于前景和背景的像素点。在进行标注前,将两个数组的元素都初始化为0。图像中含有的像素点的个数为。在运行程序时,用了6幅图像。对6幅图像分别标注前景和背景,前景就是我们需要提取出的目标。如图4.1所示。 图4.1(a
28、) 图4.1(b) 图4.1(c) 图4.1(d) 图4.1(e) 图4.1(f) 将前景和背景标注完以后,要分别计算像素点属于背景和前景的概率密度。以背景为例:对所有的像素点计算它们属于背景的概率密度。彩色图片的颜色由R,G,B组成。用一个数组来存储载入图像的各个像素的数据。访问图像第k通道、第i 行、第j列的像素值(注意k,i,j的取值范围分别是,)的表达式为:,表示R值,表示G值,表示B值。求第i 行第j列的元素的R,G,B的值: 注:指的是每行图像数据所占字节大小,算法里定义的为256,即每一行有256个元素。指的是色彩通道数,彩色图像的通道为3。每个像素点到背景的距离的表达式为: (
29、4.1)由Parzen窗口法估计概率密度可以得到每一个像素点属于背景的概率密度。第i行第j列的元素的概率密度表达式为: (4.2)为了表述方便,把(4.2)记为A。注:这里的h是一个随机数,在算法中定义h为5。用同样的方法可以计算出每一个像素点属于前景的概率密度:每个像素点到前景的距离的表达式为:第i行第j列的像素点属于前景的概率密度的表达式为: (4.3)把记为B。因此可以得到第i行第j列的像素点的: 把记为C: (4.4)注:原则上,但是在实际操作中可能出现下面这种情况,因此采用(4.4)式,可以减小误差,使得结果更精确。4.2梯度的计算定义两个二维数组用来存放每个像素点的距离。和 分别用
30、来存放前景和背景的像素点。先将两个二维数组初始化。假设每个像素点之间都不能到达,将它们的值赋为无穷大。在算法中我们定义一个变量INFINITY 1000000.0。在3.3节中介绍了图像梯度的定义及运算。对于数字图像处理,微分将用差分代替,沿x方向和y方向的一阶差分可分别表示为: 沿x方向和y方向的一阶差分的示意图如图4.2所示。 图4.2 数字图像的差分运算可取: (4.5)或者 (4.6) 除此之外,梯度也可以采用交叉的差分来表示,这种交叉梯度称为罗伯茨梯度,如图4.3所示。 图4.3其表达式如下: (4.7)或者 (4.8)所有梯度值都和相邻像素之间的灰度差分成比例。这说明我们可以利用它
31、来增强图像中景物的边界。因为这些边界点的灰度变化比较大,因而具有较大的梯度值。而在灰度变化比较平缓的区域,相应的梯度值也较小。在算法中,用罗伯茨梯度的方法来求每个像素的梯度。第i行第j列像素的梯度的表达式为: (4.9)4.3测地线距离的计算4.3.1前景测地线距离计算对属于前景的像素点,依次比较它们的测地线距离,两者之间小的将大的替换。用流程图表示如下图4.4所示。图4.4 图4.4 (a)判断1 图4.4 (b)判断2 图4.4 (c)判断3 图4.4 (d)判断4图4.44.3.2背景测地线距离计算用流程图表示,如图4.5所示。图4.5 图4.5 (a)判断1 图4.5 (b)判断2 图
32、4.5 (c)判断3 图4.5 (d)判断45实验结果与分析为了验证算法的性能,选取不同的目标图像进行分割实验。运行程序时用到t(T)、b(B)、s(S)等按键。按下t(T)表示取前景,在我们想要得到的目标上做标记,按下b(B)时是对背景做标记,按下s(S)时,是开始执行分割的步骤,最终得到目标。在实验时分别对6幅图像做了分割,得到的结果如图5.1所示。从得到的结果可以看出,算法可以较好的将目标从图像中提取出来。 5.1(a) 5.1(b) 5.1(c) 5.1(d) 图5.1(e) 图5.1(f)6总结图像分割是图像处理中经典而又重要的问题之一,在相关领域已经有很多成功的分割方法。对图像分割
33、算法的研究已有几十年的历史,借助各种理论至今已提出了上千种各种类型的分割算法。尽管人们在图像分割方面做了许多研究工作。但由于尚无通用分割理论,因此现已提出的分割算法大都是针对具体问题的,并没有一种适合于所有图像的通用的分割算法。但是可以看出,图像分割方法正朝着更快速、更精确的方向发展,通过各种新理论和新技术结合将不断取得突破和进展。基于测地线的分割方法在图像分割方面取得了极好的效果。但是上述分割方法仍有不足之处,计算量大以及在执行程序时运行速度偏慢,因此如何进一步改进其方法是今后研究的一个课题。参考文献1 刘瑞祯,于仕琪. Opencv教程M. 北京: 北京航空航天大学出版社, 2009.2
34、阮秋琦. 数字图像处理M. 北京: 电子工业出版社, 2007.3Richard O.Duda,Peter E.Hart,David G.Stork . Pattern ClassificationM. 北京:机械工业出版社、中信出版社, 2003.4 Rafael C.Gonzalez,Richard E.Woods. Digital Image Processing Second EditionM. 北京: 电子工业出版社, 2007.5Xue Bai,Guillermo Sapiro. A GEODESIC FRAMEWORK FOR FAST INTERACTIVE IMAGE AND
35、 VIDEO SEGMENTATION AND MATTING D. Minnesota: UNIVERSITY OF MINNESOTA, 2007.6 张立新. 测地线及其应用D. 鞍山:鞍山师范学院数学系,2005.7 王红喜. 基于改进的测地线活动轮廓模型的图像分割D. 陕西:西北大学计算数学,2008.8熊福松,王士同. 一种基于Parzen窗方法和Renyi熵的图像分割阈值选取新方法D. 江苏:江南大学信息工程学院,2006.9 赵祥坤. 图像梯度域的计算及应用D. 北京:北京林业大学理学院,2011.10 何会珍. 图形图像处理的梯度场算法D. 浙江:浙江大学应用数学,2009.
36、11 胡学龙,许开宇. 数字图像处理M. 北京: 电子工业出版社, 2006.12 姚敏. 数字图像处理M. 北京: 机械工业出版社, 2006.致谢本文的工作是在尊敬的*老师的指导下完成的。首先,衷心的感谢*老师的无私帮助。正是由于他在百忙之中多次审阅全文,对细节进行修改,本文才得以成形。同时也要感谢*大学信息与电气工程学院为我们提供的良好的学习环境,感谢院里各位老师的辛勤工作才使我能够顺利地完成学业。另外,我必须感谢我的父母。正是因为他们的日夜辛劳我才有机会完成大学学业,进而取得进一步发展的机会。最后我必须感谢我的朋友,正是因为你们无私的帮助,我才能顺利的完成该论文。附录Astruct c
37、olornodeint colorR,colorG,colorB;int number;bool operator =(const colornode& other) const/=重载 return(colorR=other.colorR)&(colorG=other.colorG)&(colorB=other.colorB);struct gradnodeint x;/heightint y;/widthint parx,pary;double gradient;bool operator other.gradient;vector background;vector target;voi
38、d on_mouse(int event,int x,int y,int flags,void * param) int i,j,k;unsigned int top,down,left,right;colornode a;int exists;CvPoint prev_pt=-1,-1;if( event = CV_EVENT_LBUTTONUP | !(flags & CV_EVENT_FLAG_LBUTTON)prev_pt = cvPoint(-1,-1);else if( event = CV_EVENT_LBUTTONDOWN )prev_pt = cvPoint(x,y);els
39、e if(event=CV_EVENT_MOUSEMOVE&(flags&CV_EVENT_FLAG_LBUTTON)CvPoint pt = cvPoint(x,y);if( prev_pt.x 0 )prev_pt = pt;if (flag=1)/targettop=y-penwidth+1;down=y+penwidth;left=x-penwidth+1;right=x+penwidth;if(topheight-1) down=height-1;if(leftwidth-1) right=width-1;for(i=top;i=down;i+)for(j=left;j=right;j+)nodeflagij=1;/target nodea.colorR=datai*step+j*channels;a.colorG=datai*step+j*channels+1;a.colorB=datai*step+j*channels+2;a.number=1;exists=0;for(k=0;ktarget.size();k+)if(targetk=a)exists=1; break;if(exists=0)target.push_back(a);elsetargetk.number+; cv