图像方向识别与目标分割

更新时间:2024-05-25 11:42:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

题 目 基于质心追踪算法的低分辨率视野运动研究 关 键 词 二值化 膨胀和腐蚀 8邻域搜索 质心追踪 链码标记

摘 要

本文针对低分辨率下视野运动方向识别的问题进行了研究。在合理假设条件下,对图像进行预处理,将图像像素点坐标化,采用膨胀和腐蚀算法、质心追踪算法,建立了物体形态提取、参考形态区域质心追踪等模型,解决了题目中的问题。

首先,利用Matlab读取视频,将其以某一时间间隔进行单帧处理;任意读取相邻时刻的2帧图像,将其灰度化;然后对灰度图像进行增强和二值化处理,得出二值化图像,然后利用8邻域搜索法,去除图像孔洞;再采用膨胀和腐蚀算法,建立物体形态提取模型,提出去图像中所有的物体形态区域,同时标记所有形态区域;接着将像素点坐标化,计算所有形态区域的灰度质心位置、面积和周长;设定阀值,筛选出参考形态区域集合,建立图像形态区域匹配模型,将前后两帧图像特征进行对比,求出最佳参考形态区域;最后计算运动前后形态区域的质心坐标差,进而判断质心运动方向,反推出了视野区的运动方向。

随机拍摄一段短视频验证模型,以0.02s为时间间隔提取图像,在图像序列中随机选取两张图像,代入模型,程序在0.5s内判断出视野运动方向,结果与实际拍摄方向相符,从而验证了模型的准确性、鲁棒性。

为进一步提高运算速度、减少计算量,利用链码标记算法对模型中形态边界搜寻过程进行优化,计算得到更精确的形态边界,再采用Marius区域填充算法计算得到形态区域面积。最后,对模型进行评价与推广。

缺点:该文没有进行算法的复杂度分析

1

一、问题重述

数码摄像技术被广泛应用于多个场合中。有时由于客观条件的限制,拍摄设备只能在较低的分辨率下成像。为了简单起见,我们只考虑单色成像。假设成像的分辨率为32x64,成像方式为整个矩形视野划分为32x64个相同大小的矩形格子,图像中每个像素的取值为对应格子的亮度平均值。每隔一定时间拍摄一帧图像,运动的画面体现为图像的序列。

第一阶段问题提出:现在整个视野区域向某个方向缓慢运动,拍摄到的系列图像实时地传输到计算机中。请你建立合理的数学模型和算法,通过分析实时拍摄的图像,使用尽量少的时间,以判断出运动的方向。

二、基本假设

1、假设视野区内背景物体均是静止的; 2、假设摄影机是拍摄时不抖动; 3、假设只考虑单色成像;

4、假设摄影机的分辨率为32?64;

5、假设运动方向所在的平面为参考平面,简化为二维平面下运动; 6、假设物体边界为单个像素点。

三、符号说明

具体符号文中相应处均有说明。

四、问题分析

摄影机沿着某个方向缓慢运动拍摄物景时,并且背景是静止的。对于视频资料,将其分离成单帧图像,并随机选出两帧时序图像进行单独处理。在低分辨率下识别视野运动方向,选取和识别参考目标是重点,对此,本文选取物体的灰度质心、面积、周长作为判断匹配参考目标的参数。对于参考目标的选取,本文在待选物体中去除掉灰度面积过大和过小的物体,选取一个最靠近图像中心的物体作为参考目标,以避免视野移动造成参考目标信息损失。对于参考目标的识别,本文采用灰度面积、周长作为识别条件,由于摄影时候的干扰,比如抖动、亮度、拍摄角度变化等因素的影响,都可能造成物体提取出的轮廓有轻微变化,所以,本文将灰度面积和周长最相近的物体判定为运动后的参考物体。对于视野运动方向的判断,可以用运动前后参考目标质心位置坐标的变化情况反映视野运动方向。

五、模型建立

鉴于上述分析过程,本文首先在视频中提取前后两个单帧图像,将图像进行灰度化处理,并对其进行二值化,消除孔洞对计算造成的误差,提取出图像中的物体轮廓,并将不同的物体进行分区编号,计算出不同物体的灰度质心位置、面积和周长;同理,对运动后的图像进行如上处理。将前一帧图像提出的灰度面积过大和过小的物体去掉,选取最靠近图像中心位置的物体作为参考目标,将参考目标的灰度面积、周长和后一帧图

2

像中提取出的物体的灰度面积、周长分别进行比较,设置一定的误差阈值,在满足误差阈值之内的物体之中,和参考目标最相近的物体即为运动后的参考物体。 5.1数字图像灰度处理

由于计算机只接受处理后的数字图像,因此需要将摄影机拍摄的慢运动画面进行单帧图像处理,然后对每个单帧图像进行离散化处理,把这一连续的模拟信息转换为离散的数字图像的过程称为图像的数字化[1]。

(1)图像采样

空间上连续的图像变换成离散的点的过程称为采样。实质就是将图像用许多点来描述,采样的结果一般用图像分辨率来衡量质量的高低。每一个像素点为一个小格。

(2)灰度化

任何一幅完整的图像都是由红色、绿色、蓝色三种颜色通道组成。红色、绿色、蓝色通道都是以灰度显示,采用不同的灰度值来表示红、绿、蓝在图像中的比重称为图像的灰度化。把有黑—灰—白的连变化续的灰度值量化为0-255共256级灰度值(图1 灰度值变化示意图),而在RGB模式中,假如R?G?B,则颜色表示为灰度值。灰度化过程就是取图像的RGB分量相等的值,图像由原来的三维特征峰降到灰度化的一维特征必然会丢失部门信息,因此本文选取最合理灰度图像权值对图像进行灰度化[2],公式如下:

Gray?0.299R?0.587G?0.114B, R?G?B?Gray (1)

式中:Gray表示图像的像素灰度值,R表示图像红色分量,G表示绿色分量,B表示蓝色分量。

0 图1 灰度值变化示意图

255 灰度图像是指每一个像素只有一个采样颜色的图像。通过采样将图像像素化,然后对每一个像素进行灰度化处理,得到灰度图像。图2 为处理后的灰度图像

灰度处理

原始图像

处理后图像

图2 原始图像与处理后的灰度图像对比

(3)直方图均衡化处理

.直方图均衡化处理是为了增强灰度图像的信息,使得灰度图像更加清晰。实质上是将一幅已知灰度概率分布的图像,经过某种变换算法,得出一幅灰度概率分布均匀的新图像[3]。下面是直方图均衡化算法 [4]的运算过程:

3

step1:列出原始图像与变换为灰度图像的灰度级n,m?0,1,?,L?1,其中L为灰度级个数;

step2:统计灰度图像各灰度级的像素个数Yk;

step3:计算原始图像直方图:P(j)?YjN,N为原始图像的像素总个数;

mstep4:原始图像的累计直方图:P(m)??P(k);

step5:取整计算m?int?(L?1)Pm?0.5?;

k?0step6:确定映像关系n?m,将原始图像的灰度值修正为计算的灰度值; step7:统计新直方图各个灰度级的像素个数Yi;

Ystep8:计算新的直方图P(m)?i。

N(4)灰度图像二值化处理

二值化是图像分割的一种方法。通过设定阀值,把它变为仅用两个灰度值表示图像的前景和背景颜色的二值图像,即用灰度值为0(黑色)和1(白色)表示。

设(i,j) 为数字图像的空间坐标,G为灰度值的正整数值,t?G的阀值,B??b0,b1?为一对灰度级,b0,b1?G。用灰度级t作为阀值对图放大司法非凡非凡非凡非凡非凡非凡非凡非凡非凡非凡非凡凡非凡非凡非凡非凡非凡非凡非凡 \\

像f?i,j?进行二值化,则产生的图像函数ft:N?N?B为[5]:

?b0ft(i,j)???b15.2形态提取后图像的去孔洞

,f?i,j??t,f(i,j)?t (2)

其中,t可为固定阀值,也可为动态的阀值,根据情况而定。

观察形态提取后的图像,发现区域中并不是所有的像素点均为1,出现了孔洞的情况,这是由于在二值化的过程中,程序将图像中的灰度值较低的像素点标记为0,将这种被灰度值为0包围的高灰度像素点称之为孔洞点,考虑存在孔洞点的两种情况,如下图:

图3 孔洞点存在的情况

从上图可以看出,孔洞点存在的两种情况为:在3?3区域小块中心处的像素点的灰度值为0,在四个顶点里有且仅有一个顶点的像素值为0,则记该中心点为孔洞点;在3?3的区域小块中心处的像素点灰度值为0,同时在小块的其他8个像素点的灰度值均为1,则将该中心点处的像素点记为孔洞点。

本文中只考虑上述两种情况下的孔洞,得到去除孔洞后的图像,如图4:

4

图4 去孔洞后图像对比

将去除孔洞前后的二值化灰度图进行放大后观察,发现在原图中出现的孔洞经过处理后得到了填补,证明对孔洞的处理是合+理的。

5.3对二值化图像中待选目标形态提取

数学形态是用一定形态的结构元素来度量和提取图像中对应的形状,以达到对图像分析和识别的目的。

设f(i,j)为输入图像,b(i,j)是结构元素,则b对f进行灰度膨胀定义[6]:

(f?b)(s,t)?max?f(s?x,t?j)?b(i,j)|(s?i,t?j)?Df,(i,j)?Db? (3)

b对f进行灰度腐蚀定义[6]:

(f$b)(s,t)?max?f(s?x,t?j)?b(i,j)|(s?i,t?j)?Df,(i,j)?Db? (4)

对灰度图像的膨胀(或腐蚀)操作效果:如果结构元素的值均为正,则输出图像比输入图像更亮(或更暗)。

定义:灰度图像膨胀后,图像像素为1;灰度图像腐蚀后,图像像素为0。 5.4待选形态区域形态标记

从图像中提出目标物体形态后,可得到其连通域的边界,使得计算机能够快速识别目标物体形态。通过目标物体形态的识别,随机给目标物体形态区域赋予不同的颜色,从而得到不同颜色的区域,以便后续能够快速跟踪识别形态区域。

图5 像素赋值示意图

通过上图看,标记过后的形态区域,使得形态区域更加清晰。 5.5形态区域的质心计算

根据对图像的边界提取与跟踪,得到每个目标的边界和边界上每个像素点坐标值,即ln和G(i,j),且相应的灰度值为1。设定图像的左下角为坐标原点(0,0),向右为x轴,向上为y轴,其像素点值1为单位长度。示意图见图6:

5

y 32个 像素方格 1 64个像素点方格 x 图6 图像坐标示意图

质心的计算是统计平均的过程,是形态区域中各像素点灰度加权平均的位置。当形态区域移动时,其质心该区域内的位置是固定的;同一坐标系中,不同的图像相同形态区域的质心坐标不同,因而以形态区域的质心作为跟踪点,得到的跟踪效果具有误差小、抗干扰强、精确度高等特点。二维图像中,设定其图像大小为M?N,灰度质心的坐标位置M(xi,yi)由下面数学表达式[]计算得到

??jf(j,k)iMNxi???f(j,k)ij?1k?1j?1Mk?1N

(5)

yi?kfi(j,k)??jk?1?1MN (6)

(j,k)其中,fi(j,k)为第i个区域的在点的像素值。提示,如果形态区域与摄影机发生

相对运动时,可重复公式(1),每一帧图像均进行质心移动记录,从而实现目标质心的搜索与跟踪。

?1?1fi(j,k)??jkMN5.6形态区域的面积计算

在5.3节中,只是对形态区域进行不同颜色标记,而其真实的灰度值未变,因此在

计算形态区域面积时,可以将第i个形态区域内每个像素点像素值之和作为其面积值,公式如下:

Si???fi(j,k)j?1k?1MN

(7)

5.7形态区域的周长计算

形态区域均是由若干个小像素点构成,因此形态区域的周长统一规定为所有边界像素点之和,即:

Li? (8)

其中,hi(j,k)为第i个区域边界二值化灰度矩阵(即区域边界上灰度值为1,其他地方灰

?1?1hi(j,k)??jk6

MN

度值为0)。

5.8图像的目标选取和识别模型

对于参考目标的选取,本文在待选目标区域中去除掉灰度面积过大和过小的区域,选取一个最靠近图像中心的区域作为参考目标,以避免视野移动造成参考目标的信息损失。

查阅资料发现,通过对参考目标的识别采用区域灰度面积、区域灰度周长两个参数同时进行判断,可以大大缩短计算时间,同时能够提高比对精确度。考虑到图像在成像过程中参考目标有可能轻微失真,在进行边缘提取后,待识别图像中形态区域和原图像中形态区域可能有轻微差距,故本文选取和参考形态区域灰度面积、周长误差小于5%的区域,作为待识别图像中的形态区域。

规定:在待识别形态区域集合内(有p个参考形态区域),取同时满足面积和周长误差值最小的形态区域视为与参考形态区域相同,即满足下列公式:

?|??|L?Lp?),L??min(Lp?5%???p?LQ0?min?? (9)

?|S?S|p?S??min(S?),??10%)pp??S???,Lp?分别为运动后图像中第p个待识别其中,Q0为识别后的满足条件的形态区域;SpS,L分别为参考形态区域的面积和周形态区域中满足条件的形态区域灰度面积与周长;

长;Sp,Lp表示参考形态区域集合中第p个参考形态区域灰度面积与周长。

寻找到满足公式(9)的形态区域后,用5.4节算法得出其运动后的质心坐标Z?(x?,y?)。 5.9基于坐标相对变化的形态区域质心追踪模型

通过前面的解析,得到形态区域位置可由其质心的位置表示,所以判断视野区的运动方向,可直接通过对两相邻单帧图像中参考形态区域的质心运动方向来做判定。在二维图中,物体运动方向的判断最简单的方法是:确定一个固定参考点,在同一坐标系中,计算运动前后参考点的坐标相对变化情况,从而确定运动后的参考点相对于运动前参考点的运动方向。在这里,将参考形态区域的质心看作参考点,在同一标准坐标系下,计算得到其与运动后图像参考形态区域的质心坐标相对位置变化,从而判断出视野的运动方向。

根据坐标相对变化与运动方向规律,当得到两质心的坐标差?Z?(x??x,y??y)横纵坐标满足如下9种情况时,可做运动方向判断:

(1)当运动后形态区域的质心横坐标x?比参考形态区域的质心横坐标x大时,对质心运动方向有如下判断:

?y??y?0,判断为向右上方运动;?x??x?0,?y??y?0,判断为向右方运动;

?y??y?0,判断为向右下方运动。?(2)当运动后形态区域的质心横坐标x?比参考形态区域的质心横坐标x相等时,

对质心运动方向有如下判断:

7

?y??y?0,判断为向正上方运动;? x??x?0,?y??y?0,判断为静止;?y??y?0,判断为向正下方运动。?(3)当运动后形态区域的质心横坐标x?比参考形态区域的质心横坐标x小时,对

质心运动方向有如下判断:

?y??y?0,判断为向左下方运动;?x??x?0,?y??y?0,判断为向左方运动;

?y??y?0,判断为向左上方运动。?根据相对运动知识,视野区域运动方向与质心的运动方向相反。所以最终视野区域

的运动情况为:

(1)若质心向右上方运动,则视野区向左下方运动; (2)若质心向正右方运动,则视野区向正左方运动; (3)若质心向右下方运动,则视野区向左上方运动; (4)若质心向正上方运动,则视野区向正下方运动; (5)若质心向正下方运动,则视野区向正上方运动; (6)若质心向左上方运动,则视野区向右下方运动; (7)若质心向正左方运动,则视野区向正右方运动; (8)若质心向左下方运动,则视野区向右上方运动; (9)若质心静止,则视野区静止。

六、模型求解与结果分析

任意选取一段现场拍摄短视频,对其用Matlab软件进行读取,并以0.02s为时间分度,单帧为150张图像。任意选取其中相邻两张单帧图像(像素为32?64),通过Matlab软件编程实现模型中的算法,具体步骤见如下算法流程图:

前一帧图像读取图像后一帧图像转化为灰度图像转化为灰度图像二值化图像二值化图像边缘提取边缘提取求解每个区域面积、周长、质心位置求解每个区域面积、周长、质心位置去掉面积最大、最小的区域找出和参考目标面积、周长最相近的区域找出质心位置靠近中心的区域为参考目标输出视野移动方向判断质心位置的变化情况 图7 算法流程图

8

将前后2张单帧图像在Matlab中将其转化为灰度图,其原始图与灰度图像对比如下:

(1)前一张单帧原图 (2)前一张单帧灰度图

原图

灰度图灰度图

(3)后一张单帧原图 (4)后一张单帧灰度图 二值化二值化去孔洞去孔洞

图8 原始图与灰度图的对比

图像灰度化后,形成了单色图像,这与题目中只考虑单色成像相符合。接着,对灰

度图进行二值化处理,使图像效果增强;然后,二值化后的灰度图进行去孔洞操作,其目的是消除孔洞对参考形态区域的选择与识别造成的干扰。其结果如下图9、图10(以前一张单帧图为例):

图9 二值化后图像 图10 去孔洞后的图像

从图9、图10中可以看出,去孔后的图像中形态区域更明确,减少了杂点对形态的干扰。将二值化后的图像进行边缘提取,提取出物体的轮廓,并对图像中不同的物体形态区域进行标记,如图11、图12所示:

图11前一张图像的边缘提取 图12后一张图像的边缘提取

标记后的图像中物体形态区域更容易辨别,可直观数出其个数:前一张单帧图像有9个形态区域,后一张有6个形态区域。

在对图形中的物体形态区域标记后,将图像统一标准坐标化,然后根据模型中公式(5)、(6)求解得出前一帧和后一帧图像中不同物体形态的灰度质心位置、面积和周长(具体结果见表1 )。再根据目标匹配模型中的算法,去掉前一帧图像中灰度面积过大和过小的形态区域,选取最靠近中心位置的物体作为参考目标,由于整个视野区域运动

9

是缓慢的,所以图像中心位置的物体形态区域不会在下一单帧图像中产生信息损失。

表1 运动前后各形态区域的灰度面积、周长与坐标 前一单帧图像 Number 1 2 3 4 5 6 7 8 9 Area 253 92 73 12 2 2 1 1 1 Centroid [55.39,22.18] [30.98,10.41] [52.47,5.14] [31.17,1.42] [39.50,13] [42.50,14] [35,15] [39,17] [46,23] Number 1 2 3 4 5 6 后一单帧图像 Area 279 99 82 7 3 3 Centroid [54.62,21.59] [29.10,9.69] [51.23,4.33] [28,1] [43,14] [40,13] 由Matlab计算出前一帧图像目标形态区域质心坐标为(30.98,10.41)。在后一帧图像中,各形态区域的灰度面积、周长与参考目标进行比较,满足公式(9)时,取得最佳形态区域,同时得到最佳形态区域的质心坐标(29.10,9.69)。

求得后一单帧图片中最佳形态区域的质心位置坐标值后,将其与参考目标(前一张单子图像的参考形态区域)质心坐标值作差,其结果如下:

y??y?29.10-30.98?-1.88 x??x?9.69-10.41?-0.72

求得坐标差值与坐标相对变化的形态区域质心追踪模型中的判断规律,得出图像中的参考形态区域质心运动方向为左上方,反之视野区域运动方向为右下方。

整个模型运算过程中,经过多次反复使用Matlab软件的运算,发现其最短运行时间为0.5s,平均运行时间为0.7s,同时发现在图像处理板块软件所消耗的时间最多(附件)。

七、模型优化

7.1基于链码搜索算法的物体形态边界优化模型

链码方法最先由Freeman于1961年提出,用于表示由顺次连接的具有指定长度和方向的直线段组成的边界线;常用的链码方法有4向链码和8向链码两种,分别如图1(a)和图(b)所示。链码的方向编号可用一个数字集表示:方向编号i表?i|i?0,1,2,?,n?1? ,

示与X轴正方向成??i 度角;其中,n和?的值与具体采用的-+5+链码有关。如:4向链码,则n=4,??90?;8向链码,则n=8,??45?。

链码寻找目标轮廓的过程为:

1、将在检测过程中遇到的第一个点作为链码的起点; 2、顺序扫描该点周围的 8 个点,判断是否有边缘点;

3、每遇到一个边缘点,链码的长度加 1,同时为了避免被重复检测需要将该点设置为非边缘点;

4、继续扫描该点周围的8 个点,如此循环,形成链码,直到某个点周围没有边缘点为止。

4向链码的方向编号只能表示一个象素与其4邻域象素的连线,所以在编号过程中,要表示一个对角线移动时,4向链码需要两个码;即必须先沿水平(或垂直)方向移动,

10

然后再往垂直(或水平)方向移动。 因此4向链码表示的图象边界与实际边界可能存在差异,差异程度视图象边界形状不同而变化。而一个象素最多只有8个邻近象素,因此8向链码能准确地表示图象边界。

故本文采取8向链码对边界进行标记。

1(90°)2(90°)3(135°)1(45°)2(180°)0(0°)4(180°)0(0°)5(225°)3(270°)7(315°)6(270°) 图13 4向链码方向编号 图14 8向链码方向编号

比较发现8向链码表示的边界与原图象边界一致,而4向链码表示的边界只是原图

象边界的大致反映。另外,由于4向链码存在额外取象素的可能,所以4向链码的链码长度一般比8向链码长。基于上述原因,本文可以采用8向链码对图像中边界提取进行优化,通过查阅文献可知,该算法能够节省存储空间,,有效缩短链码从而减少运行时间,

【】

使得软件对能够进一步快速判断视野区运动方向。 7.2基于Marius区域填充算法的物体形态区域面积计算模型

Marius区域填充算法的关键是进行区域边界的搜索,通过新边界点与前一边界点的位置关系来确定新边界点的状态。边界上的点如果用T、B、L、R进行标记,则一共有15种不同的状态。例如,用0=0000:表示非边界点或未标记点,用T=2=00102,B=8=10002,L=4=01002,R=1=0001:分别表示上下左右边界点。如图所示:

图15 像素边界标记

整个区域边界搜索从左上方开始,设定初始点位W0,搜寻方向定义为Dir?7,并满足如下公式:

当Dir为奇数时,新的搜索方向为(Dir+6); 当 Dir为偶数时,新的搜索方向为(Dir+7)。

在搜寻边界标定时,假定图像第i行左边界像素(标记)的横坐标为xli;图像第i行右边界像素(标记R)的横坐标为xRi,则xRi-xLi?1表示第i行出在区域内部的像素格式,按行累加可得到区域内像素个数,可得到面积计算公式:

S?(xRi?i?0n?1?xLi?1)

这样计算区域面积方式可不用编码,从而使得具有速度快、计算量小、结果准确度高等

优点。

八、模型评价与推广

11

8.1模型优点

本文所建立的模型和算法的优点在于,通过对区域内像素点检索,消除了孔洞对模型产生的影响,大大提高了物体轮廓提取的精确性。在对运动方向的判断过程中,用尽可能简便的方法,对参考目标特征进行提取,提高了目标识别的精度。

在对图像进行二值化处理时,缓慢移动的视野区域,图像中心像素变化不大,因此采取区域划分方法,比较不同时刻相同区域的质心坐标变化,能够简单迅速的推断出视野移动方向。为避免质心追踪过程丢失帧的问题,用链码对轮廓进行提取并对其进行标记,再求取出质心位置坐标,很好的解决了这一问题。

整个算法过程中运行时间少,最快为0.5s。 8.2模型缺点

在将灰度图进行二值化处理时,由于选取的阙值不同,二值化后的图像会有很大差别,本文所建立的模型没有对阙值进行优化,只是选取了标准阙值,因此针对灰度变化比较大的像素时,对二值图进行区域划分是可能会造成很大误差。 8.3模型推广

本文中的图像处理算法可应用于指纹识别、人脸识别、目标追踪、视频图像分析等方向应用,还可以应用于资源探测中的图像形貌提取。

12

参考文献

[1]刘晓乐,王素华. 灰度图像基本处理及实现[J]. 吉林化工学院学报. 22(2):50-51 .2005.04

[2]白瑞,姜明新.基于Opencv的运动目标的检测和跟踪[J].2012.20(12).126-128 [3]林寿光. 基于图像增强的直方图均衡化处理[J]. 科技广场.2010.10.

[4]徐辉. 基于matlab的图像增强技术的分析与研究[J]. 湖北第二师范学院学

报.25(8):77-78.2008.08.

[5]张明志. 基于微特征的指纹识别算法研究[D]. 厦门大学硕士论文. 2009.

[6]P.Soille著. 形体学图像分析原理与应用[M]. 北京:清华大学出版社. 48-52 .

2008.06

[7]白晓方.复杂背景下目标检测与跟踪技术研究[D].中北大学.2014.51-54.

[8]陆宗骐,童韬. 链码和在边界形状分析中的应用[J]. 中国图像图形学

报.2002.12(7). 1321-1328.

[9]唐振华,张显全.图形边界的链码表示研究[J].微计算机信息.2005.23.

[10]葛伟华,陈优广.基于边界跟踪的区域面积计算.[J].2008. 26(6).239-240.

[11]孙殿臣.基于MATLAB的低分辨率图像增强处理[J]. 中国刑警学院学报.2012.3.

42-46.

[12]岗萨雷斯, 伍兹.数字图像处理[M].北京:电子工业出版社.2011.252-318.

13

附 录

附件1 Matlab2014a fileName = '视频.mp4'; obj = VideoReader(fileName); numFrames = obj.NumberOfFrames;% 帧的总数 for k = 1 : numFrames% 读取数据 frame = read(obj,k); imshow(frame);%显示帧 imwrite(frame,strcat(num2str(k),'.jpg'),'jpg');% 保存帧 end 附件2 tic; i1=imread('tp.jpg'); i2=rgb2gray(i1);%i2灰度图像 [n,m]=size(i2); for i=1:1:n for j=i:1:m if i2(i,j)>80 i3(i,j)=0; else i3(i,j)=1; end end end u=i3; [m,n]=size(u); %去除孔洞和毛刺 i11=imread('tp2.jpg'); i22=rgb2gray(i11);%i2灰度图像 [n,m]=size(i22); for i=1:1:n for j=i:1:m if i22(i,j)>80 i33(i,j)=0; else i33(i,j)=1; end end end [m,n]=size(u); for x=2:m-1 for y=2:n-1 14

Matlab2014a if u(x,y)==1 if u(x,y-1)+u(x-1,y)+u(x,y+1)+u(x+1,y)+u(x-1,y-1)+u(x+1,y+1)+u(x+1,y-1)+u(x-1,y+1)==0 u(x,y)=0; end end end end figure;title('去孔洞');imshow(u); %寻找不包括孔连通域的边缘,并且把每个连通域的边界描出来 [B,L]=bwboundaries(u,4); figure;imshow(label2rgb(L, @jet, [.5 .5 .5])) hold on for k = 1:length(B) boundary = B{k}; plot(boundary(:,2),boundary(:,1),'w','LineWidth',2); end % 找到每个连通域的质心 stats=regionprops(L,'Area','Centroid','Perimeter'); S=[stats.Area];C=[stats.Perimeter]; S=sort(S); S(1,1:3)=0; S(1,length(S):length(S)-2)=0; Z=[stats.Centroid]; for i=1:2:length([stats.Centroid]) x1(1,ceil(i/2))=Z(1,i); y1(1,ceil(i/2))=Z(1,i+1); end for i=1:length(x1) if (x1(1,i)<45)&(x1(1,i)>15) n1=i; end end u=i33; [m,n]=size(u); %去除孔洞和毛刺 for x=2:m-1 for y=2:n-1 if u(x,y)==1 if u(x,y-1)+u(x-1,y)+u(x,y+1)+u(x+1,y)+u(x-1,y-1)+u(x+1,y+1)+u(x+1,y-1)+u(x-1,y+1)==0 u(x,y)=0; end end end 15

end figure;title('去孔洞');imshow(u); %寻找不包括孔连通域的边缘,并且把每个连通域的边界描出来 [B,L]=bwboundaries(u,4); figure;imshow(label2rgb(L, @jet, [.5 .5 .5])) hold on for k = 1:length(B) boundary = B{k}; plot(boundary(:,2),boundary(:,1),'w','LineWidth',2) end % 找到每个连通域的质心 stats2=regionprops(L,'Area','Centroid','Perimeter'); S2=[stats2.Area];C2=[stats2.Perimeter]; s=abs(S(n1)-S2);c=abs(C(n1)-C2); [g1,g2]=min(s);[w1,w2]=min(c); Z2=[stats2.Centroid]; for i=1:2:length([stats2.Centroid]) x2(1,ceil(i/2))=Z2(1,i); y2(1,ceil(i/2))=Z2(1,i+1); end if (x1(n1)-x2(g2))>0 disp('右移') else disp('左移') end if (x1(3)-x2(g2))>0 disp('右移') else disp('左移') end if (x1(3)-x2(g2))==0 disp('不移动') end if (y1(3)-y2(g2))>0 disp('下移') else disp('上移') end if (y1(3)-y2(g2))==0 disp('不移动') end 、

16

附件三

17

本文来源:https://www.bwwdw.com/article/9la7.html

Top