数学模型,尽量准确地提取出图案的边界线条,并将其用方程表示出来。
图一 已栅格化图
2.问题二:由对问题一中已经建立的模型进行改进和推广
3.问题三:简单彩色图像的轮廓提取方法
§2 模型的假设
1.本文建立的模型针对形状较为简单的图标(这里我们将简单图形定义为转折点数量较少且颜色分布简单的图形)
2. 我们假设将图形分成四个部分:
(1),(2),(3),(4)
图二 图形切割图
3.假设所获取的图片图像水平清晰度较高,噪点影响程度低,图像本身质量较高。
4.由于题目没有提供彩色图像,这里我们假设以下图(文档形式看不出图像颜色,请看电子版)作为处理对象。
图三 彩色图
5.所有数据来源准确、可信、稳定、科学。
§3 名词解释与符号说明
一、名词解释
1.贝塞尔曲线:贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋。
2.双线性插值:双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。
3.噪点:主要是指图像中的粗糙部分,也指图像中不该出现的外来像素,通常由电子干扰产生。如果将原图像放大,那么就会出现本来没有的颜色(假色),这种假色就是图像噪音。
二、符号说明
§5 模型的建立与求解
一、问题一的分析与求解
1.对问题的分析
将问题拆解成两部分:第一,图形边缘线的提取,第二,对提取的边缘线矢量化。首先,通过matlab对题中已给定的图形进行轮廓特征点提取,得到轮廓特征点的坐标位置之后,对这些特征点的位置进行插值并拟合,其次,考虑到插值之后的图像不够圆滑,为了减小误差,将图像等分切割为四部分,然后利用贝塞尔曲线的思想,对已插值后的轮廓特征点分别进行贝塞尔曲线的曲线矢量化,从而得到四个部分矢量化轮廓曲线图,最后将四部分的曲线图结合起来形成一个整体轮廓图。
2.问题的求解
模型I 基于贝塞尔曲线的图形边界线条提取模型
(1)模型的准备
①去除噪点干扰:由于对于扫描后的图像,其经过栅格化之后图片上存在许多噪点,在矢量化的预处理阶段,必须先将其剔除,以消除对矢量化的干扰。在一定的尺寸范围内,噪声、文字符号和一些较小的图形元素都是孤立图元,在初步提取工作完成后,还须采取一些必要步骤将它们有效地区分开。这里我们利用photoshop对图片进行噪点剔除(见参考文献[1])。
②轮廓特征点坐标值提取(见程序1):用matlab分别提取出四组图形
(1),(2),(3),(4)的轮廓特征点,这些点的坐标见附录表一。
③图像分割:将曲线分割成四个部分理论依据:
第一,如果采取对整个图形的轮廓特征点进行拟合的话,数据过少,误差太大,我们采取将轮廓特征点连成的图像分割成四个部分的办法(见图一);
第二,一条曲线可在任意点切割成两条或任意多条子曲线,每一条子曲线仍是贝塞尔曲线;
第三,一些看似简单的曲线(如圆)无法以贝塞尔曲线精确的描述,我们可以将其分成四个部分,当每个内部控制点对单位圆上的外部控制点水平或垂直的的距离为4(2?1)/3时,分成四段的贝塞尔曲线,可以小于千分之一的最大半径误差近似于圆,同理我们类推到一些不规则的封闭曲线当中,我们将其切分为四个部分。
图四 图形轮廓特征点的散点图
④轮廓特征点坐标插值处理:
由于提取的轮廓特征点可能过于稀少,导致重构的轮廓失真,这里我们采取
插值的办法。处理轮廓特征点的流图:
图五 轮廓特征点插值处理流程图 第一、光滑区域一维插值处理:对于很光滑区域,即没有尖点的情况下我们采取一维插值法。即在已知的点集x上对应数值y,构造一个解析函数,通过这些点能够求出在这些点之间的值。这里我们对切割的四块图片中的第(1)、(2)、
(4)块图(见图一)都使用了一维插值法。
第二、非光滑区域双线性插值处理:双线性插值可以有效地消除锯齿现象,插值质量高。这里我们应用双线性插值的思想对图像(3)(图一)进行类双线性
插值处理。如下:
图六 图像(3)边缘非光滑区域双线性处理流程图 具体步骤如下:假设有Q12?(x1,y2),Q21?(x2,y
1),这两点由于处在非光滑区域,即认定这两点不是共线,那么我们另外补充进两点Q11?(x1,y1),Q22?(x2,y2),使得这四点成为一个矩形Q11Q21Q22Q12。如图:
图七 边缘特征点补充图
接下来进行第一步:X方向的线性插值
:
这样对每两个点都做如上处理,用matlab编程辅助,可以对边缘的非光滑区域做出很好的插值。
④一些看似简单的曲线(如圆)无法以贝塞尔曲线精确的描述,或分段成贝塞尔曲线(虽然当每个内部控制点对单位圆上的外部控制点水平或垂直的的距离为时,分成四段的贝塞尔曲线,可以小于千分之一的最大半径误差近似于圆)。
(2)模型的建立
线性贝塞尔曲线给定点P0,P1,B(t)代表经过t时间的坐标轴位置,线性贝塞尔曲线只是一条两点之间的直线。这条线由下式给出:B(t)?P0?(P1?P0)t?(1?t)P0?tP1,t?[0,1]
二次方贝塞尔曲线二次方贝塞尔曲线的路径由给定点P0,P1,P2的函数B(t)追