论文整理——用于跟踪散养猪的实时计算机视觉系统的开发

论文简介

论文中文翻译:《用于跟踪散养猪的实时计算机视觉系统的开发》
论文名称:《Development of a real-time computer vision system for tracking loose-housed
pigs》
录用日期:2011年1月21日

期刊情况

期刊:Computers and Electronics in Agriculture
期刊情况

  • 中科院二区
  • 影响因子3.858
  • Q1/Q2分区
  • 初审4-6周
    在这里插入图片描述

摘要

  • 在不久的将来,家畜法规的变化将要求建立松散的猪饲养系统。这些新系统将增加农民的工作量,因为定位和识别动物将比以前需要更多的时间。本文提出了一种用于散养猪舍中猪的实时计算机视觉跟踪系统。该系统将减轻农民在识别和定位单个动物方面的工作量。该系统由一台摄像机和一台PC机组成。电脑运行一个跟踪算法,估计猪的位置和身份。跟踪算法分为两个步骤。第一步是建立支持地图,指向每个视频帧中的初始猪片段。第二步,利用支持图分段建立猪的5d -高斯模型(即位置和形状)。该系统有软件校正来自相机镜头的鱼眼畸变。鱼眼镜头可以让摄像机监控马厩里更大的区域。算法用MatLab开发,用C语言实现,并实时运行。实验和稳态实验证明了该系统的鲁棒性。该系统可以在更长时间内(超过8分钟)追踪至少3头猪,而不会在现实实验中丢失单个猪的轨迹和身份。

一、介绍

  • 在未来,有关动物饲养的法律法规将迫使农民使用宽松的住房体系。猪是群居动物,通过使用宽松的住房系统,猪的福利得到了提高。假设每头猪的压力会降低,肉的质量会提高(Damm, 2008)。农民的工作量也将增加,因为预计农民将花费更多的时间来寻找猪进行检查或治疗。在松散的饲养系统中,猪的数量通常大于50头。因此,能够帮助农民识别和观察动物的可靠设备在未来将是必要的。最好是在移动设备上使用易于使用的图形界面,并确保来自不同国家的员工可以轻松地使用这些系统。通过输入猪的ID,猪的位置可以显示在移动单元的图形显示器上,猪可以被光源照亮,所以很容易找到。
  • 过去研究过几种不同的方法来解决这种跟踪问题。例如,针对奶牛的GPS定位、蓝牙或wifi网络和基于 RFID的方法(Huhtala, 2007)。然而,实践表明,这是一个更大的问题,把电子设备绑在猪身上而不是牛身上。例如,奶牛可以携带更大的重量,他们之间的身体接触较少。在这些技术中,RFID是对猪比较有前途的一种。被动射频识别设备可以安装在每头猪的耳朵上,多个射频识别阅读器可以放置在马厩的许多不同地方(Tan et al., 2008)。然而,这导致大量的RFID阅读器/天线,这是一个昂贵的解决方案。主动射频识别可以安装在每头猪的耳朵上,而不是被动射频识别,射频识别阅读器应该只放置在马厩的几个位置(Ni et al., 2004)。这可以提高定位精度,但不幸的是,有源射频识别消耗大量的电力,因此将有必要经常更换电池或充电。主动射频识别对猪来说也很容易太重。此外,猪通常会破坏设备或从对方移走设备。因此,这种解决方案并不会减轻农民的工作量。
  • 我们的方法是开发一种基于摄像机的计算机视觉系统来跟踪散养的猪。计算机视觉解决方案的优点是,它不需要像上面描述的那样在猪身上安装昂贵的、消耗电池的RFID,而且它是非接触式解决方案。
  • 在猪圈这样恶劣的环境中,摄像解决方案当然也会出现问题。干扰包括灰尘和污垢,在某种程度上可以通过相机软件的自动校准来缓解,但也有氨蒸汽,这需要一个密封的相机封闭,以保护电子设备。
  • 多年来,计算机视觉方法已经在许多领域使用,如家禽跟踪(Sergeant等人,1998;Leroy等人,2006年)和追踪啮齿动物和昆虫以监测行为和活动(Noldus等人,2002年;Noldus等,2001)。在Cangar等人(2008)中,实时图像分析用于监测和跟踪产犊奶牛。在1 Hz的帧率下实现了位置、区域和身体方向的详细跟踪。猪在之前的许多尝试中也被追踪过。在Tillett等人(1997)的研究中,重点是追踪每头猪,并发现它们的特定动作,如弯腰和点头。Shao和Xin(2008)利用实时视频的模式识别方法来评估群舍猪的热状况。Perner(2001)通过对灰度视频进行分析,通过减去参考背景图像、阈值分割和用线重合方法分割来确定猪在稳定区域的位置和运动。在Lind等人(2005)中,图像减影算法也是跟踪猪行为的基础。在这里,该系统在不同水平的药物诱发活性的猪身上进行了彻底的测试。McFarlane和Schofield(1995)开发了一种先进的猪跟踪算法,特别强调了初始分割和背景估计。这种方法有点类似于我们的方法,尽管我们使用全RGB空间,另一种方法的位置更新以及鱼眼镜头的修正。
  • 与之前的尝试相比,我们的系统是为了在现实世界中稳固地跟踪松散圈养的猪,其中的主要挑战是猪躺在一起,不受控制的背景光和摄像机从小高度捕捉大地板。在普通PC技术上的实时实现和测试表明,该方法可用于农场管理和自动化系统,也可用于大型散养马厩的行为研究。

二、猪跟踪算法

  • 该算法是任何计算机视觉系统的重要组成部分,在本研究中主要致力于算法的开发。该算法以一组时间序列的彩色图像(即彩色视频)作为输入,经过初始化过程后,在每一帧新帧中估计每头猪的空间位置。
  • 开发新算法总是建立在现有方法的基础上。我们的算法最明显的灵感来自于Wren(1996)和Wren等人(1997),但是为了跟踪猪的特定目的,我们做了一些改进。
2.1 基本的跟踪环路
  • 该算法的基本思想是不断更新所谓的支持图和每头猪的模型。特定猪的支持映射仅仅是估计为猪的一部分的帧中像素的坐标。因此,支持映射可以在图像空间中以一种xy坐标表示。每只猪的模型在5D空间中选择一个高斯分布,该分布由图像坐标和RGB颜色坐标组成。因此,从支持图中相应的像素对每头猪的5D均值和协方差矩阵进行估计。
  • 当接收到新的帧时,算法首先更新之前的猪模型的支持图,然后使用新的支持图估计更新猪模型。
2.1.1 更新支持映射
  • 每头猪的支持图如下图中猪的黑色区域所示。根据5D高斯模型,分步骤计算这些区域。图1
    说明算法的基本流程。首先,获取新的帧(帧n),更新原有高斯模型的支持图;每只猪都有自己的支持图,显示为猪的黑色区域。接下来,根据支持图更新高斯模型。每头猪都有自己的高斯模型。均值用红点表示,高斯分布的等高线用红色椭圆表示。然后,当新帧到达(帧n+ 1)时,重复这个过程
  • 首先,使用(新)图像中每个像素到不同猪模型的马氏距离计算距离地图。5D模型的优点之一是,使用RGB和xy坐标的距离和马氏距离,因此两者都加强了空间连通性(猪没有任何洞)和颜色相似性(大多数猪有相当统一的颜色)。5D模型中的协方差矩阵表明对猪的光强变化具有鲁棒性。下图显示了空间、颜色和组合5D马氏距离地图在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    马哈拉诺比斯距离映射的插图一个特定的猪模型(均值和协方差矩阵)和所有像素位置在图像。这些颜色的比例从蓝色(最短距离)到红色(最大距离)。上图显示了空间(xy坐标)距离图,清晰地看到了高斯形状。中间的图显示了颜色(rgb坐标)距离地图,从中可以看到一些猪具有与当前猪(猪模型)相同的颜色。然而,在图像的左边,猪有其他的颜色,背景更接近当前的猪。这是由于图像右侧窗口的光线以及由此产生的阴影。它说明了一些可能发生的问题,以及结合位置和颜色的5D模型的必要性。下图说明了组合的5D模型距离图。
  • 下一步是找到最接近猪模型的像素(马氏距离)。每个支持映射都选择特定数量的像素,因为猪的区域随着时间的推移基本没有变化。
  • 此时,每个猪模型都有一个相关的支持图,但它通常只包含猪的轮廓外的像素,因为这些像素接近猪模型的xy坐标平均值。一种去除支持图中这些错误区域的方法是估计猪的轮廓并使用这些信息。然而,如图1所示,猪在它们的周长周围有一个“自然的”像素边界,其颜色与猪的中心点不同。这是因为猪的形状几乎是球形的,因此,从上面来的光不会在猪的周围反射回相机。因此,支持映射被分割成几个不连接的区域,最后一步是将这些不连接的区域从支持映射中移除。我们的方法只是保持最大的连接区域(blob)。
  • 在计算给定猪模型的支持图时,算法应该同时考虑多个距离图。例如,当两个猪肩并肩站在一起,上一个模型的xy坐标的平均值正好位于两头猪之间,因此无法确定支持图应该放在一头猪身上还是另一头猪身上(如果假定相似的颜色)。一种一次性使用所有距离地图的方法是,将猪模型之间的决策边界作为给定像素位置的所有距离地图的最小值。这种方法以及该方法的各种变体都经过了测试,但实验表明,每次只考虑一个距离图可以获得更好的结果。
2.1.2 Updating the pig models
  • 有了新的支持地图,pig模型必须更新。对于每个支持图,可以假设xy坐标和rgb空间不相关,则5D模型的更新参数为在这里插入图片描述
    猪通常会在一段时间内沿直线运动,然而,所做的实验并没有显示出这种方法的任何优势。相反,当猪改变方向时,支持地图通常会“偏离”猪。该实验使用了15hz的帧率,并且该方法可能在更高的帧率下更有用,因为这将减少猪移动的突然变化。
  • 现在,猪模型已经更新,当下一个图像帧到达时,算法返回更新支持地图。
4.2 背景/前景评估
  • 为了提高算法的性能,可以对背景进行估计,以避免背景与猪的颜色相似的问题。此外,除了光强度的变化(例如由于屋顶窗户),背景是相当恒定的。该方法是从当前图像中减去背景估计,并执行(固定)阈值估计前景(猪)作为一个掩模。这个遮罩用于支持地图的更新,以这样的方式,只有前景估计中的像素被允许成为任何支持地图的一部分。
  • 通过查找过去几帧中每个像素位置的平均值(在15Hz的帧率情况下是10帧),背景被低估了。用中位数和指数衰减运行均值进行实验,效果近似。该方法适用于受环形图像缓冲区帧数限制的短时间尺度(几秒量级)光强的许多变化。尽管如此,该方法仍然能够从背景中去除猪的突然运动,因为这些运动是在一个更短的时间尺度上。不幸的是,猪会在一个位置停留更长的时间,因此会成为背景估计的一部分。我们解决这个问题的方法是使用猪的支持映射。首先,在支撑地图上进行扩张手术,以包括猪的全部边界,并将所有支撑地图合并到一个支撑地图掩码中。然后,在当前图像上使用联合支持地图掩码,掩码区域被先前估计的背景代替了猪。然后,图像(没有猪)被添加到圆形图像缓冲区,用于估计最后10帧的平均值。
2.3 初始化
  • 在主跟踪循环(如2.1节所述)开始之前,需要有一个初始支持图。我们的方法是在猪的图像中心使用一个种子点,然后在种子周围使用一个矩形的点作为初始支持地图。然后,在同一幅图像上迭代更新猪模型和支持图,以找到更好的初始支持图的估计。
  • 多种分割方法可以用来估计初始支持图或简单地找到种子点。然而,该算法是一个更大的自动化系统的一部分,该系统将包括自动食物分配器等子系统,每头猪将单独进入。在这里,猪可以被确定地识别(例如,在耳朵上使用RFID标签),并且在相同的过程中,初始种子点可以被定位到猪身上。在实验中,系统的用户在初始化阶段简单地使用PC鼠标在每头猪上标记种子点。

三、矫正鱼眼镜头畸变

  • 在一些实验中使用了鱼眼镜头,但是鱼眼镜头严重扭曲了图像(如图3所示)。

为了避免这种扭曲,我们使用了Altera(2008)中描述的校正算法。基本的想法是从鱼眼投影(在这种情况下,一个等固角投影)映射点到针孔相机投影(直线投影)。这个量复制原始鱼眼图像中的RGB值的像素位置(xf,yf)到直线(修正)图像中的像素位置(xp, yp)。(xf, yf)与(xp, yp)的关系由
在这里插入图片描述
在这里插入图片描述
FOVhorz视场,W是图像的像素宽度。(xf, yf)和(xp, yp)之间的关系只需计算一次,用作查表。这是一种计算上不昂贵的校正鱼眼透镜畸变的方法。校正算法的效果如下图所示。在这里插入图片描述
当一个鱼眼镜头被用在实验室的3只玩具猪时,从相机的视角的插图。上图说明了没有鱼眼镜头补偿的相机视图。放在最远距离的猪看起来很小,大多数时候都是从侧面看。下图说明了使用鱼眼镜头补偿时的相机视图。这3头猪的大小几乎相同,但是放在最远距离的猪的锐度很弱。


四、材料和方法

  • 在实验室和稳定测试中,在天花板下安装了一架摄像机,以便能够覆盖地板和地板上的物体。摄像机是一个Elphel NC353L,通过一根以太网电缆连接到PC。该PC是使用英特尔酷睿2 DUO CPU和3.25 Gb RAM的a Dell Optiplex760。操作系统是Windows XP, sp3 .标准镜头是 Computar4 - 8mm, 1:14 .4,鱼眼镜头是富力农1.4mm, 1:14 .4。利用MatLab对跟踪软件进行建模,并将MatLab代码转换为c代码进行最终实现,以实现实时性。
  • 一般情况下,每次跟踪实验的时间设置为8min。这个持续时间是从最初的实验中选择的,这些实验表明(通常)追踪可以成功地保持至少8分钟,尽管这显然与动物的行为有关。
4.1 实验室试验
  • 试验用了三只粉红色的玩具猪。每头猪都被安装在一辆小型可编程机器人车上。机器人车辆配备了一个光传感器,程序设定它以恒定的速度(0.16m/s)跟随地面上的一条黑线。地板由四个30W的荧光灯管照明。地板上的线条布置如下图所示。每头猪都沿着其独特的路线行进,这条路线是一个带有圆角的矩形,每头猪都朝着与相邻路线的猪相反的方向行进。路线之间的距离是有尺寸的,所以猪彼此经过非常紧密,以强调摄像机视觉算法。
    在这里插入图片描述
    更准确地描述,测试执行如下:
  1. 测试的第一步是让摄像机跟踪一只在矩形内匀速移动的玩具猪。
  2. 在这之后,摄像机的视觉系统将跟踪两头在矩形内和中间的猪,以恒定的速度向对方移动。
  3. 最后,第三只猪被放置在外部的圆角矩形中,以恒定的速度向中间矩形中的猪移动。
  • 测试应强调摄像机视觉算法,并验证是否有可能跟踪1、2和3头猪8min
  • 测试完成了3个不同的相机镜头设置:
    A 覆盖小地板的标准镜头。
    B 覆盖更大地板的鱼眼镜头。没有使用鱼眼镜头补偿软件。离鱼眼镜头最远的猪在图像上非常小。
    C 覆盖更大地板的鱼眼镜头。这次使用了鱼眼镜头补偿软件。
  • 上述3个镜头设置(A、B和C)重复了1、2和3只玩具猪的场景,结果在实验室总共进行了9次测试。
4.2 稳定测试
  • 在稳定测试中,一个摄像机被安装在天花板下,这样它就可以覆盖地板,包括猪。地板由两个30W的荧光灯管照明。3头真实的10周龄猪用于试验。所有的猪都很健康,非常清醒和好奇。对真猪的测试与实验室中的测试是相似的。摄像机视觉系统可以同时跟踪3只猪。该测试应该验证是否有可能在8分钟内追踪所有的猪。
  • 摄像机视觉应激场景中,3只真正的猪移动8min,在3种不同的镜头设置(A, B和C)中重复。因此,在马厩中测试的总次数为3次(下图)。在这里插入图片描述
    当鱼眼镜头被用在马厩里的3头真正的猪时,从相机的视角的插图。上图说明了没有鱼眼镜头补偿的相机视图。最远距离的猪看起来很小,大多数从侧面看。下图说明了使用鱼眼镜头补偿时的相机视图。这3头猪的大小几乎相同,但是放在最远距离的猪的锐度很弱。

五、结果与讨论

实验室试验和稳定试验结果如下

5.1 实验室结果
  • 实验室跟踪质量检测结果如下:
    A 一个标准镜头覆盖一个小地板:1、2、3头猪的场景可以保持跟踪8分钟。
    B 鱼眼镜头覆盖了更大的地板。不使用鱼眼软件补偿:有1头和2头猪的场景可以保持跟踪8min。在一个有3只猪的场景中,不可能追踪在外矩形上移动超过29秒的猪。
    C 鱼眼镜头覆盖了更大的地板。采用鱼眼软件补偿:1、2、3头猪的场景可再次保持跟踪8min。
  • 在所有测试中,首先添加在内矩形移动的猪。在这个测试之后,下一只猪被一个接一个地加入,与标准镜头的距离逐渐增加。
  • 当使用标准镜头时(测试A),当距离改变时猪的大小没有太大的差别。使用标准透镜的优点是不需要校正算法。缺点是镜头视角的角度很窄。因此不可能覆盖圆形面积的地板,它比天花板的高度大得多。
  • 通过使用鱼眼镜头(测试B+C),只有当校正算法用于摄像机跟踪时,才可能跟踪所有的猪8分钟。如果不使用校正算法,猪在外矩形移动的每一个小的,在摄像机中看到。通过使用距离补偿算法,远离鱼眼透镜的猪与最近的猪的大小几乎相同,但轮廓的扩散比最近的猪更大。在这次测试中,这种锐度的损失并不影响跟踪性能。
5.2 稳定测试结果
  • 在马厩中进行跟踪试验得到以下结果:
    A 一个标准镜头覆盖了一个小地板:3只移动的猪没有一个场景可以保持超过17秒的跟踪。
    B 鱼眼镜头覆盖了更大的地板。没有使用鱼眼软件补偿:没有3只移动的猪的场景可以保持超过34s的跟踪。
    C 鱼眼镜头覆盖了更大的地板。采用鱼眼软件补偿:3只动猪的场景可保持跟踪8min。
  • 当使用标准镜头时(测试a),它不可能跟踪3只猪,因为地板的覆盖太小,所以猪立即移动到图片区域之外。当一个鱼眼镜头没有使用校正算法(测试b),它是不可能跟踪3头猪超过34s。当使用鱼眼镜头,结合校正算法(测试C),可以跟踪3头猪8min。
5.3 讨论
  • 该系统仍然是一个原型,一些改进可以提高鲁棒性,如更高的帧率以及更好的背景估计方法。8分钟的跟踪时间也有些随意,但它提供了在现实场景中系统的一般跟踪性能的概念。
  • 当猪在地板上快速旋转或跳跃时,跟踪就会丢失。如果猪爬到彼此上面,就不可能跟踪每头猪。
  • 可以认为,我们实验的3头猪远离50多头猪的松散圈养系统。然而,我们认为如果使用更多计算能力来保持足够高的帧率,我们的算法将能够扩展到更大数量的猪。因为从摄像机的视角来看,3只猪和50只猪的情况是一样的。最困难的问题发生在猪相撞、重叠或彼此非常接近的时候,这种情况对于3头或50头猪来说没有太大的区别。

六、Conclusion

  • 所描述的原型系统表明,在真实场景中,基于摄像机的实时跟踪是可能的。该系统能够保持对三只活猪的跟踪时间为8分钟。结果表明,使用鱼眼镜头可以增加跟踪面积,但这需要一个校正算法才能成功。该系统能够持续地指出在地板上的猪。实验中采用标准PC进行实验,实验结果稳定。通过使用更强大的计算机或专门的硬件,追踪更多的猪将成为可能。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值