泊松融合(Poisson Blending)又作 Seamless clone,用于将两幅图像“无缝”的融合起来,基本原理就是最优化一个方程,尽量在和base边界处保持相关的亮度,同时保留剪切过来图像的梯度,这样看起来两张图像就“无缝”拼合在一起了。因为该工具在opencv中已经存在,所以我们可以直接使用opencv体验其效果。这篇博简单介绍原理,以及感受效果。
图像处理
视频帧间插值(一)Softmax Splatting for Video Frame Interpolation
视频插帧是计算机视觉许多应用中的一个传统问题,splatting transformer network 技术已被广泛用于两幅图像之间的新图像合成:非监督深度估计,非监督光流预测,光流预测,新视角合成,视频插帧,视频增强,视频编辑、视频压缩、去除视频运动模糊中。视频插帧方法被分为flow-based、kernel-based、phase-based。这些方法都是估计出两帧之间的光流场,一般通过warp前一帧来得到中间帧。视频插帧在某些场景下特别困难,比如场景和物体在不断运动和变化,或者存在遮挡时,插帧问题会同时存在多个解。
这篇博客介绍CVPR2020的一篇论文,是flow-based的方法。这篇文章主要贡献有两个,一是使用了softmax splatting的方法来处理不同源像素warp之后到同一点的问题,二是使用了特征金字塔,应该是对大位移有更鲁棒。
Python中类似Matlab-interp2的插值函数:RectBivariateSpline与interp2d
在matlab中我们可以通过interp2在矩形网格内进行曲线插值,那么在python中有没有有类似的函数呢?有,并且有很多,都在scipy.interpolate模块中。这篇博客主要说两个比较相似的:interp2d和rectBivariateSpline。两者比较相似,如果输入是规整的网格点,那么使用rectBivariateSpline会更快。下面给一些介绍和例子:
图像质量评价(一)Imatest介绍与使用
目前接触到的测试图像质量的软件有imatest和dxo analyzer,图像质量的评测需要和测试卡、光源灯器材结合使用,用于测试的器材通常价格昂贵并且越贵越好。网上imatest的破解版软件比较好找,所以相对于dxo analyzer小白用户更多,所以这篇博客简单接受imatest的安装和基本使用。
这篇博客适合新手小白,因为博主也是新手小白,大神可以不用点进来看啦。
Matlab解析DNG格式图像
DNG是一种很灵活的图像格式,是在Tiff基础上拓展来的,随着传感器技术、后期图像处理能力的增强,我们很多时候直接将ISP采集的图像数据直接Dump下来,不做任何处理,这就是RAW图,同时我们把处理RAW图需要必要信息存下来(Bayer Pattern、白平衡、噪声水平等),然后我们就可以进行后期处理了。总之,DNG是一种RAW图格式,其中除了数据段之外,有很多标签信息。
标志识别之AprilTag3
AprilTag2在速度上是不尽人意的,原因在于梯度计算和聚类的庞大计算和内存开销。在AprilTag3中进行 … 阅读更多
快速线段检测之EDlines算法
博主认识的几种线段检测算法有:Hough变换法、LineSegementDetector (OpenCV3中加入的算法)、FastLineDetector(在opencv的contribute模块中)。LSD算法的速度让人望而却步,FLD算法一大堆参数很难调优,并且速度并没有特别快。在使用这些算法的时候或多或少都遇到了问题,于是EDlines算法浮现在眼前,快速,并且效果不错。 Ed就是EdgeDraw的缩写
Python生成QRCode并识别QRCode
最近在想把文件编码到图像,于是就先试着把文件编码到了QRCode,然后再解码恢复。python生成qrcode的包就是qrcode包,识别二维码并解码使用的是zbar。这篇博客就简单说下这两个工具的使用。
聊聊条码与二维码检测算法的优化
条码和二维码搞了许久,之前在做二维码识别的优化,想能搞出多少花来呢?最近需要在极小的内存下完成二维码的识别和解码。顿时头大了,不过锅刚刚解了,就来说一说。
条码和二维码的特点就是我们前处理之后,都是处理的二值图像。那么在二值图像上操作有什么好方法呢?不卖关子,说出答案了:游程编码。
图像游程编码的腐蚀与膨胀操作
最近英语课上聊到了互联网兴起以来,交流方式的变化,博客是互联网最早的形式之一,已经相当老了,现在的交流变得更加简短,与微博和朋友圈不到一百字的简短相比,博客是相当长的了。可能是现代人太吝啬自己时间了,写博客的人越来越少,并且博客质量下降,得益于信息的快速传播,也出现了天下文章一大抄的现象。不过我想,还是有些东西需要实实在在的篇幅来沉淀的,于是想起有还有坑没有填,就快点过来把坑填完了。
通常我们使用游程编码的原因是因为游程编码更快,并且更加节省内存,游程编码可以做很多事情,其中就包括形态学操作,这篇博客将详细介绍在游程编码上实现形态学操作。