本文作者:小嗷
微信公众号:aoxiaoji
链接:
https://f600lt.github.io/2018/08/06/xiaoaoderichang/
在本篇中,您将学习:
小嗷相信你们在前几篇和以前的文章中,比较彻底认知到傅里叶变换的实际用途(不懂找我吧)。
有个小伙伴问小嗷图像处理和识别的极限到底能去到哪里?(有啥用)
按理来说,PS来做的,程序都能做。人的识别其实从某种意义来说,就是特征值的识别。大家接触久的,或许就感觉没什么高大上。(反正小嗷就是这样)
本文你会找到以下问题的答案:
什么是运动模糊图像的PSF
如何恢复运动模糊图像
2.1 什么是运动模糊图像的PSF ?
线性运动模糊畸变的点扩散函数为线段。这种PSF由两个参数指定:LEN 是模糊的长度,THETA是运动的角度
点扩散函数的一个线性运动模糊失真
因为大部分函数都在以前写过解释。所以,小嗷就不写了。
什么是振铃效应,小嗷在10几20篇写过,不懂就自己查或者找小嗷
本篇文章的代码如下所示。
您可以在示例/cpp/tutorialcode/ImgProc/motiondeblur_filter/motiondeblurfilter中找到源代码。
下面你可以看到真实世界的图像与运动模糊失真。这两辆车的车牌都看不清。红色的标记显示了汽车的车牌位置。
2.png
如上图运动模糊图像,车牌是看不清
下面你可以看到黑色汽车牌照的恢复结果。计算结果是LEN = 125, THETA = 0, SNR = 700。
3.png
修复后的黑色汽车牌照图像(这个是用辣鸡摄像头拍的。所以,无法做到每秒N张,将就用用就好)
下面你可以看到白色车牌的恢复结果。结果是LEN = 78, THETA = 15, SNR = 300。
4.png
恢复的白色汽车牌照的图像
人工选择SNR、LEN和THETA的值,以获得最好的视觉效果。THETA参数与汽车的运动方向一致,LEN LEN参数取决于汽车的运动速度。结果并不完美,但至少它给了我们图像内容的暗示。经过一些努力,汽车牌照现在可以读了。
还有一种方法就通过机器学习 + 流光 + 算法,自动调节参数,识别到车牌号为止。
解释一下:
一种运动模糊图像恢复算法由PSF生成、维纳滤波生成和频域滤波三部分组成:
一个函数calcPSF()根据输入参数LEN和THETA (in degrees)形成一个PSF:
一个函数edgetaper()使输入图像的边缘逐渐变细,以减少图像恢复时的振铃效果:
calcWnrFilter()、fftshift()、filter2DFreq()等功能在频域中通过指定的PSF实现图像过滤。这些函数是从第60篇中复制过来的。
领取专属 10元无门槛券
私享最新 技术干货