我如何撰写计算机视觉的硕士论文

在本文中,我将继续计算机视觉这一主题。



请参阅以前的文章:简单的运动识别算法用于发现图像中对象位移算法。让我提醒您,我开始撰写硕士论文《动态图像的空间结构分析》时,就感到很受激励,因为我遇到了这样一个问题:很难找到一些现成的算法实例来识别图像和运动物体。在文学和互联网上的任何地方,只有一个赤裸裸的理论。从那时起已经过去了很长时间,我设法成功地捍卫了自己的论文并获得了红色文凭,现在我正在写信分享我的经验。



因此,当我开始研究论文时,我在计算机视觉领域的知识为零。我从哪里开始?根据以上文章中描述的最简单的图像实验。我写了几个原始算法,其中一个以移动对象所处位置的形式展示给我,第二个以较大的图片(自然而然地缓慢地)找到了一张图片。



下一步是什么?进一步堵塞。我的任务是让无人驾驶飞机浏览航空摄影或跟踪沿路行驶的汽车。而且我不知道如何开始任务。我开始做什么?阅读理论。该理论说,计算机视觉可分为以下几个阶段:



  1. 图像预处理(降噪,对比度增强,缩放等)。
  2. 查找详细信息(线条,边框,兴趣点)
  3. 检测,分割。
  4. 高级处理。


好吧,好的,我画了一个程序来完成所有这些工作:



图片



简而言之,事实证明,我不得不在人工智能级别创建宏伟的东西。好吧,我将尝试创建它。我使用Visual Studio并开始在C#中雕刻类。更准确地说,是类空白。不久后,我意识到我的目标是……。



因此,我开始练习第一步。预处理。我从她开始,因为



  1. 这是最简单的。
  2. 这是清单上的第一步。


我开始对图像应用不同的滤镜,以查看发生了什么。例如,我尝试应用Sobel滤波器:



图片



使用高斯模糊消除图像中的噪声:



图片



研究了中值滤波和边缘选择:演讲厅的计算机视觉讲座



图片



对我有很大帮助 因此,知识已经变得越来越多,但是仍然不清楚如何解决问题。到那时,硕士论文的主题和任务已经进行了多次修改,其结果如下:“使用航拍框跟踪无人机的轨迹”。也就是说,我需要拍摄许多照片并沿着它们建立轨迹。







我想到了用虚线(由许多段描述)形式描述轮廓的想法,然后比较这些线偏移了多少。但是事实证明,即使在两个相邻的帧中,轮廓也是如此不同,以至于无法充分比较所产生的虚线集合。我尝试使用各种方法及其组合来改善轮廓本身:



  • 从OpenCV库选择经典Canny边缘
  • 由我的主管开发的改进的边缘检测算法。
  • 通过二值化选择轮廓。
  • 通过分段选择轮廓。分割以各种方式进行,尤其是使用纹理特征。


结果,我们遇到了一大堆算法,这些算法的运行速度非常慢,但并没有使结果更加接近。我的一些工作被用作本文的材料



好吧,然后主管提出了一个主意:您需要使用特殊要点。他甚至给出了有关如何计算这些关键点的算法。我必须说这是一种非常不标准的方法。这不是Harris检测器,BRISK,MSR或AKAZE。虽然我也尝试使用它们。但是,事实证明,主管建议的探测器工作得更好。这就是它的工作原理。首先,我们使用以下公式计算轮廓准备:



图片



图片



然后我们找到该函数的极值。这些是要点。显然,点可以是“峰”和“坑”两种类型。这是图像中这些点的示例:



图片



接下来,从获得的点中选择具有最大响应的50个点。对于所有这些点,都建立了三角形,这些点形成的三角形数量为:



图片



其中k是计算中涉及的奇异点的数量。对于每个三角形,将计算一个从0到16383的特殊索引。下一步是将这些三角形分布在一个特殊的数组上,在该数组中,单元格编号对应于三角形索引。这样的数组中的每个单元格都是三角形的列表。这样的数组由两个比较的帧编译。通过将阵列中的每个单元与另一帧的阵列中的对应单元进行匹配来进行比较。总共需要匹配16384个组,这对于一台计算机在相当短的时间内是一个可行的任务。



当匹配数组时,我们填写匹配矩阵。水平矩阵是匹配三角形之间的角度,垂直比例是比例,它是最长边的长度之比。找到的比例和角度是匹配度最高的矩阵单元。进行了类似的比较以计算图像的水平和垂直位移。

在文章中阅读有关此方法的更多信息。



因此,我们发现了水平和垂直位移,角度和比例变化(即,无人机上升或下降)。现在仍然需要编写一个程序来模拟在一系列框架上的轨迹并绘制此轨迹,我们可以说论文已经准备就绪:



图片



All Articles