Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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
Opencv 视频序列中车牌的局部增强_Opencv_Video Processing - Fatal编程技术网

Opencv 视频序列中车牌的局部增强

Opencv 视频序列中车牌的局部增强,opencv,video-processing,Opencv,Video Processing,我的目标是从给定的图像序列中创建一个增强图像,该图像具有更可读的车牌号,这些图像序列在驾驶车辆上具有难以区分的车牌,如下面的序列 正如你所看到的,车牌号在很大程度上是无法区分的。我正在研究增强的实现,例如多帧的超分辨率(正如我在本文中所研究的:)。我在OpenCV方面有一些经验,我正在寻求帮助,以确定方向,或者超分辨率是否真的是解决此类问题的可行选择。相反,图像之间的偏移大于一个像素并不妨碍亚像素精度,即图像可以向右偏移3.3个像素,等等 不过,您仍然需要亚像素精度,以估算帧之间的位移,如下所

我的目标是从给定的图像序列中创建一个增强图像,该图像具有更可读的车牌号,这些图像序列在驾驶车辆上具有难以区分的车牌,如下面的序列


正如你所看到的,车牌号在很大程度上是无法区分的。我正在研究增强的实现,例如多帧的超分辨率(正如我在本文中所研究的:)。我在OpenCV方面有一些经验,我正在寻求帮助,以确定方向,或者超分辨率是否真的是解决此类问题的可行选择。

相反,图像之间的偏移大于一个像素并不妨碍亚像素精度,即图像可以向右偏移3.3个像素,等等

不过,您仍然需要亚像素精度,以估算帧之间的位移,如下所示:

cornerSubPix( imgA, cornersA, Size( win_size, win_size ), Size( -1, -1 ), 
              TermCriteria( CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 20, 0.03 ) );

cornerSubPix( imgB, cornersB, Size( win_size, win_size ), Size( -1, -1 ), 
              TermCriteria( CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 20, 0.03 ) );
[……]

你很幸运,因为你的场景在闪电中没有大的变化(所以PyrLK会相当准确),而且它的结构变化不大(因为是一个短序列)。这意味着您可以通过移除异常值并平均剩余的异常值,从场景的中心部分(汽车所在的位置)逐帧获得估计的运动矢量。请注意,如果汽车离你越来越近,这种方法将不起作用


因此,最简单的超分辨率算法意味着将每个帧及其各自的位移映射到更高阶的网格(例如,2x宽度和2x高度)上,并平均其结果。这将解决噪音问题,并会给你一个非常好的印象,你的假设有多好。为此,您应该针对一个模型数据库运行(因为您有一个要测试的序列数据库,对吗?)。如果方法令人满意,您可以从文献中获得一些用于删除点扩展函数的子算法,这些子算法通常是掩码。

“传统”超分辨率不适用于您展示的情况,因为它需要(并且只允许)帧中的“亚像素”偏移。在您的情况下,摄像头明显移动了一个以上的像素,随着摄像头的靠近,汽车的比例也会发生变化。您应该试试“基于示例的”超分辨率或单图像超分辨率。后者在实际图像中很难使用,因为参数往往特定于正在处理的图像。如果你有一个人在循环中,那么这应该很好。@LightAlchest我的应用程序中可能有一些用户交互,但是你会说,他们参与到单图像超分辨率的人在回路中的场景中是什么呢?这种方法看起来不错,但我似乎不完全理解如何从光流输出到最终的超分辨率图像。我试着只取所发现的特征的位移(X2-X1)和(Y2-Y1),求平均值,然后得到每个帧的x和y位移,但我似乎找不到如何像你说的那样将这些信息映射到更高阶的网格上。有没有可能使用像CVWarp Affine这样的工具呢?我在这里发布了一个后续问题
calcOpticalFlowPyrLK( imgA, imgB, cornersA, cornersB, features_found, feature_errors ,
    Size( win_size, win_size ), 5,
    cvTermCriteria( CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 20, 0.1 ), 0 );