我的目标是在驾驶汽车上创建一个具有更多可读性的车牌号码的增强图像,该图像序列具有不可分辨的车牌,如下面的序列。
正如你所看到的,车牌号码在很大程度上是难以区分的。我正在研究增强的实现,例如多帧的超分辨率(正如我在本文中所研究的:http://users.soe.ucsc.edu/~milanfar/publications/journal/SRfinal.pdf)。我有一些OpenCV的经验,我正在寻求帮助,在什么方向采取,或如果超级分辨率真的是一个可行的选择,这类问题。
发布于 2014-02-14 14:40:44
相反,在大于一个像素的图像之间移动并不妨碍具有亚像素精度,即图像可以右移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高度),并对其结果进行平均。这将解决噪音,并将给你一个很好的印象,你的假设是多么好。为此,您应该针对一个模型数据库运行(因为您有一个序列数据库要对其进行测试,对吗?)如果该方法是令人满意的,您可以从文献中得到一些子算法来删除点扩展函数,这是一般的掩码过滤。
https://stackoverflow.com/questions/21715908
复制相似问题