Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 自动聚焦算法中寻找聚焦点的最短方法_Image Processing_Graph Algorithm_Autofocus - Fatal编程技术网

Image processing 自动聚焦算法中寻找聚焦点的最短方法

Image processing 自动聚焦算法中寻找聚焦点的最短方法,image-processing,graph-algorithm,autofocus,Image Processing,Graph Algorithm,Autofocus,我正在写一个自动对焦的算法。为此,我使用了一个步进电机,它有3318个对焦步骤 为了找到焦距,在相机的每一帧之后,我都会进行统计,并进行一些计算,得到一个数值,即焦距值(fv)。因此,我获得最高fv的运动步是我的图像聚焦最高的地方 现在,我正在遍历所有的点,以找到最大的fv,它工作正常,但耗时太长;大约15秒 有没有什么算法可以用来减少步骤的数量,减少找到焦点的时间 如果您假设有: 单个全局最大清晰度分数 无局部极大值 那么你的聚焦功能应该是相对平滑的 在这种情况下,您可以执行比线性搜索更快的搜

我正在写一个自动对焦的算法。为此,我使用了一个步进电机,它有3318个对焦步骤

为了找到焦距,在相机的每一帧之后,我都会进行统计,并进行一些计算,得到一个数值,即焦距值(
fv
)。因此,我获得最高
fv
的运动步是我的图像聚焦最高的地方

现在,我正在遍历所有的点,以找到最大的
fv
,它工作正常,但耗时太长;大约15秒


有没有什么算法可以用来减少步骤的数量,减少找到焦点的时间

如果您假设有:

  • 单个全局最大清晰度分数
  • 无局部极大值
  • 那么你的聚焦功能应该是相对平滑的

    在这种情况下,您可以执行比线性搜索更快的搜索。
    基本上从某个地方开始,然后开始下坡


    例如,您可以使用或通过计算局部变化(导数)使用牛顿(滚下山)或共轭梯度(跳下山)方法。

    首先,找出您的瓶颈:

    • 是时候拍照了
    • 将步进电机移动到特定位置的时间
    • 处理帧并获得聚焦函数值的时间
    然后了解聚焦函数对聚焦位置的函数依赖性(对于示例)

    • 它是平滑的还是凹凸不平的(嘈杂的)
    • 它是宽的(最大值非常平坦)还是窄的(最大值非常陡峭、很小)
    • 它是近似二次的吗
    最有可能的是没有太多的噪音,最大值相当宽,近似二次

    然后,拟合算法将在几次迭代中收敛

    然而,他们只能找到局部最优解以及在答案中提到的黄金搜索

    当噪声成为问题时,我建议采用一种稳健的放大方法:

    • 在整个范围内测量10帧(每帧距离332步)
    • 如果存在噪声,则稍微平滑生成的10个值
    • 取最佳帧的位置
    • 围绕此最佳帧在[-330330]步数范围内测量20帧,每帧步长为33步
    • 如果存在噪声,则稍微平滑生成的20个值
    • 取最佳帧的位置
    • 在这个最佳帧周围[-15,15]步的范围内测量10帧,每帧步长为3步
    • 如果存在噪声,则稍微平滑生成的10个值
    • 取最佳帧,在上面和下面各测量一帧
    • 取最佳帧,这是焦点位置
    这需要记录10+20+10+2=32帧,因此,与拍摄3318帧相比,可能会出现大约100倍的加速,或者(0.15s而不是15s),如果拍摄帧是关键部分且不移动步进电机