- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的目标是根据给定的图像序列创建一个具有更易读的车牌号的增强图像,这些图像具有难以区分的驾驶汽车车牌,例如下面的序列。
如您所见,车牌号在大多数情况下是无法区分的。我正在研究增强的实现,例如多帧的超分辨率(正如我在本文中研究的那样:http://users.soe.ucsc.edu/~milanfar/publications/journal/SRfinal.pdf)。我有一些使用 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 ) );
[...]
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 );
您很幸运,因为您的场景没有大的闪电变化(因此 PyrLK 相当准确)并且它的结构变化不大(因为是一个短序列)。这意味着您可以从场景的中心部分(汽车所在的位置)逐帧获得估计的运动矢量,方法是移除异常值并对剩余的取平均。请注意,如果汽车离您越来越近,此方法将不起作用...
有了这个,最简单的超分辨率算法意味着将每个帧及其各自的位移映射到更高阶的网格(例如,2x 宽度和 2x 高度),并平均它们的结果。这将解决噪音问题,并且会给您留下很好的印象,让您知道您的假设有多好。为此,您应该针对模型数据库运行(因为您有一个序列数据库来进行测试,对吗?)。如果方法令人满意,您可以从文献中获得一些子算法来删除点扩散函数,这些子算法通常是掩码 filtering .
关于opencv - 视频序列中车牌的局部增强,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21715908/
我的公司正在寻找任何解决方案-必要时支付软件没有问题-可以“简单地”检查不确定数量的照片(例如从1到400+),检测车牌并像Google在Google中一样对其进行删除/模糊处理 map 。例如。图片
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
我是一名优秀的程序员,十分优秀!