毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

vc++数字图像运动检测处理系统 第10页

更新时间:2010-3-11:  来源:毕业论文
vc++数字图像运动检测处理系统 第10页
GlobalUnlock(hDIBBK);
  GlobalUnlock(hDIBCurrent);
  return true;
}
运动物体提取出来后的效果,如图18所示。
图18 运动物体提取图                              
(10)图像二值化
图像的二值化就是图像显示的时候只能看到两种颜色(经常是黑白两色),二值图像也就是只具有两个灰度级的图像,它是数字图像的一个重要子集。一个二值化图像(例如一个剪影或一个轮廓图)通常是由一个图像分割操作产生的。也就是图像的二值化,一般都是在实现了图像的灰度操作之后进行的。二值化的具体方法有很多,比较常用的是阀值判定法。给定一个数值,当灰度图像中像素点的亮度值小于这个数值时,把像素点设置成为黑色(可以是其他颜色),而当图像中像素点的亮度值大于这个数值时,把像素点设置成为白色(可以是其他颜色)。阀值的选择有自动阀值选取法和手动阀值选取法。自动阀值选取法,是先对灰度图像进行扫描,根据得到图像中点的亮度情况,自动地设定一个阀值。比如说,想使图像中70%的点的颜色是黑色的,那么这个阀值就应该取整个图像中所有像素亮度值排序中的70%位置上的亮度值。手动阀值设定比较简单,就是人为的设定一个阀值,一般来说,它要求在设定之前对整个图像的亮度有大致地了解。
图像二值化的函数WhiteBlack(参见源程序)。图19二值化后得图像
图19 二值化效果图
(11) 图像的膨胀
图像的膨胀就是根据条件,把图像中当前点的颜色给周围点,或者把周围点的颜色赋给当前点,最终使得我们关心的物体显得更加平整,更加明显。具体的说,膨胀就是将与某物体接触的所有背景点合并该物体中的过程。过程的结果是使物体的面积增大了相应数量的点。如果物体是圆的,它的直径在每次膨胀后增大两个像素,这样的操作其作用是在填补分割后物体中的空洞时很有用。图像的膨胀属于图形学内容,具体实现的时候,要根据需要来设定膨胀条件,系统中使用的是四方向判断算法,即当前点的上下左右有一个点的颜色是白色时,就把当前点的颜色填充成白色(图像已经处理为二值图像所以只有物体为白色,其他背景为黑色)。这样做的结果是使得运动物体的像素点变得更多,方便进行下面的边界提取的操作。
在其他实际应用中,要根据情况更改判定所用的模板。比如说可以只进行左右像素膨胀,或者只考虑上下、对角膨胀等。比较图19以及图20所示内容,可以很明显的看到图20所示的白色区域增加了很多,原来的图像变得更加平整,一些和白色区域相邻的黑色区域被去掉了。一般来说,经过膨胀操作,图像会变大,此时可以根据需要执行腐蚀操作。腐蚀操作就是消除物体所有边界点的一种过程,其结果使剩下的物体沿其周边比原来物体小一个像素的面积,如果物体是圆的,在每次腐蚀后将减少两个像素,这样的操作对从一幅分割图像中去除小且无意义的物体是很有用的。把膨胀和腐蚀结合起来的操作,图形学上叫做闭运算,它具有填充物体内细小空洞、连接邻近物体,在不明显改变物体面积的情况下平滑其边界的作用。先腐蚀后膨胀的过程称为开运算。它具有消除细小物体、在纤细点处分离物体、和平滑较大物体的边界时不明显改变其面积的作用。物体在本系统的实现中,因为物体的四方向均匀膨胀,不会改变对物体中心点位置的判定,所以无需进行腐蚀运算。图像膨胀的源代码函数OnMenuPengzhang(参见源程序)。运动物体膨胀后的效果如图20所示。                        
图20 运动物体膨胀图
(12)图像边缘求取
在膨胀操作之后,接下来要进行图片边缘的提取。边缘提取一般都是根据图像点的梯度值来求取。本系统实现的时候就是用sobel算子来求梯度的。代码和前面梯度求取是一样的。运动物体边缘提取后的效果如图21所示。
图21 运动物体边缘提取图
(13)图像细化
图像的细化是使粗的物体变细,同时保留了原来物体的轮廓特征。细化将一个曲线物体细化成为一条单像素宽的线,从而图形化地显示出其拓扑性质。图像的细化属于图形学的内容,它是骨架提取的一种方法,经常用在轮廓里面。抽骨架也称为中轴变换或焚烧草地技术。中轴是所有与物体在两个或更多非邻域边界点处相切的圆心的轨迹。但抽骨架很少通过在物体内拟合圆来实现。图像细化的算法也很多,根据不同的情况,可以选择不同的细化方法。在本系统中,使用的是查表的细化算法,即
8-邻域细化中有代表性的希尔迪奇方法。具体来说就事先设定一个二值化的表格,里面的数值表示该点能不能被细化掉,然后进行像素点周围的八方向扫描,查看八个方向上点的颜色情况,最后根据八个点的情况计算,得到一个索引值,利用这个索引值查看表格中的数值,最后确定当前像素是否应该被细化掉。原来图像的轮廓变细了,细化后的图像效果如图22所示。
图22 细化效果图
(14)图像的去离散点的操作
得到的运动物体的轮廓图像会有许多离散的白点。这些白点的产生可能是图像拍摄过程中的噪声,也可能是物体内部的一些区域有像素变化较大的点。如果不把这些点去掉,就会影响物体中心点的判定。去离散点的操作和膨胀的过程似乎相反,但又不同。系统对当前要处理的点进行这样的判定:分析是否有足够多的点和当前点相连,相连可以是直接的,也可以是间接的。足够多的前应该根据实际情况来确定。本系统中采用的点数上三点。要实现这样的去离散的操作,编程需要用到递归来处理。因为递归是效率比较低的,所以尽量不要把连续点的点数设得很高。系统在判定连续性的时候,采用八方向递归的方式,在有些系统的实现中,也可能采用四方向递归的方式。如图23所示,原图中的一些离散点消失了。
1)去离散点的函数IsScaterPoint
2)去掉离散点的函数OnMenuYdpdDeletescater(参见源程序)。
去掉离散点后的效果如图23所示。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

vc++数字图像运动检测处理系统 第10页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。