如何构建列表

时间:2016-05-19 05:55:59

标签: vb.net list sorting dictionary collections

我正在研究一个vb.net自动对焦例程并且已经完成了图像处理部分,基本上我做了一些边缘检测,转换为灰度,然后测量标准偏差来计算出最多的&#39 ;聚焦'图像的一点。

我用大量图像做了这个,它几乎是正态分布,现在我想开始将它与我的显微镜和步进电机结合起来。

概念是我将在步进电机上移动上限和下限,并通过实时视图测量上述内容,将值记录在列表中。在我的情况下,我要记录的两件事是位置和双标准差值。

  

我想知道记录这些的最佳方式是什么,应该是什么   记录为打字列表,字典或其他方法?

一旦我记录了所有这些值,我想通过值来对它们进行一些简单的分析,所以如果是这样的话

  

那么我怎样才能确定平均值,最小值,最大值等?

我第一次存储信息的尝试是在一个打字列表中,我基本上完成了以下操作;

Public ZPositions As New List(Of Zfocus)    

Public Class Zfocus
Public Position As Integer
Public GreyStDev As Double
End Class

第二种方法是使用字典;

 Public ZPosition As New Dictionary(Of Integer, Double)

然而,在这两种情况下,我不确定如何拉出单个最大位置值(例如位置整数),或者从字典中拉出位置值(整数),其中(类型)与最佳自动值相对应焦点位置。

  

第三个额外的奖励,是能够拉出任何高于a的位置   特定值,可能与某些焦点信息有关   在他们内部进行焦点堆叠?

非常感谢

1 个答案:

答案 0 :(得分:0)

非常感谢jmcilhinney,这解决了我的问题并且有所作为! 使用强类型列表(ZFocus列表)然后我可以执行以下操作;

MaxPosition = ZPositions.First(Function(zp1) zp1.GreyStDev = ZPositions.Max(Function(zp2) zp2.GreyStDev))

这允许设置一个自动对焦程序,循环通过许多图像(作为测试),存储位置(例如在这种情况下的图像编号)和强度边缘信息,然后在结束时拉输出最强烈的强度信息,在我的情况下形成最佳的自动对焦点