随笔分类 -  图像算法

摘要:Horn–Schunck光流算法[1]是一种全局方法估算光流场。 参考博文:https://blog.csdn.net/hhyh612/article/details/79216021 假设条件: HS算法除了需要满足LK光流前两个假设之外,增加了一个假设条件: 场景中属于同一物体的像素形成光流场向 阅读全文
posted @ 2019-03-25 22:37 一度逍遥 阅读(5322) 评论(0) 推荐(0) 编辑
摘要:Lucas–Kanade光流算法是一种两帧差分的光流估计算法。它由Bruce D. Lucas 和 Takeo Kanade提出 [1]。 LK光流法有三个假设条件: 1. 亮度恒定:一个像素点随着时间的变化,其亮度值(像素灰度值)是恒定不变的。这是光流法的基本设定。所有光流法都必须满足。 2. 小 阅读全文
posted @ 2019-03-25 00:22 一度逍遥 阅读(27250) 评论(0) 推荐(3) 编辑
摘要:前面两篇博客主要讲了如何从全景图转到小行星、水晶球视图。今天来说下如何从全景图中取一块儿平面视图出来。 当然最简单的是直接从全景图里画一个ROI,然后扣一块儿区域出来。但是很多时候这样的操作并不方便,如果要是截取的区域跨越了拼接缝的话就麻烦了。 一劳永逸的方法当然还是将全景图贴到球面去做,假设观察者 阅读全文
posted @ 2019-01-11 23:28 一度逍遥 阅读(8099) 评论(2) 推荐(4) 编辑
摘要:前一篇博客中讲到怎么由全景图转到小行星,这次换一种投影方式说下由全景图转到水晶球模式。 首先,还是要有一副全景图,风景秀丽是不是: 1. 将其按照经纬展开法,贴到单位球面上。图像第一行聚集在一起成为球体的北极点;图像的最后一行像素聚集在一起成为球的南极点。 2. 设定投影平面为与南极点相切的平面,观 阅读全文
posted @ 2018-11-18 19:52 一度逍遥 阅读(3340) 评论(0) 推荐(0) 编辑
摘要:全景图是2:1比例的图片,一般是多张图像拼接而成。全景图2:1的比例可以很方便的映射到球面,而球坐标可以很方便的实现各种有趣的投影。比如小行星,水晶球,局部透视投影等。 今天来说说怎么将全景图投影到小行星视图: 首先,要有一副2:1的全景图,如下: 风景秀丽是不是。 然后,将全景图按照经纬展开法重新 阅读全文
posted @ 2018-11-09 23:40 一度逍遥 阅读(6308) 评论(1) 推荐(4) 编辑
摘要:现在越来越多的视频或者图像拍摄设备支持log模式,比如大疆无人机的D-Log模式等等,log模式的起源和发展就不多做介绍,其在普通显示器上显示画面通常看起来是平坦的灰色,因此也常被称为log灰视频。 由于其能记录更多的图像细节,动态范围更广,使得后期调色可操作空间更大,所以今天就来说一说怎么用3Dl 阅读全文
posted @ 2018-10-16 22:39 一度逍遥 阅读(7375) 评论(2) 推荐(3) 编辑
摘要:OpenCV3中超像素分割算法SEEDS,SLIC, LSC算法在Contrib包里,需要使用Cmake编译使用。为了方便起见,我将三种算法的源码文件从contrib包里拎了出来,可以直接使用,顺便比较一下算法的效果。 三种算法的源码文件放在我的码云code上:https://gitee.com/r 阅读全文
posted @ 2018-05-31 23:15 一度逍遥 阅读(2467) 评论(0) 推荐(0) 编辑
摘要:前面有介绍拉普拉斯融合,今天说下OpenCV泊松融合使用。顺便提一下,泊松是拉普拉斯的学生。 泊松融合的原理请参考这篇博文https://blog.csdn.net/u011534057/article/details/68922319,讲的非常详细,此处不再赘述。 OpenCV中集成了泊松融合,A 阅读全文
posted @ 2018-05-06 23:15 一度逍遥 阅读(13690) 评论(0) 推荐(0) 编辑
摘要:Kmeans聚类算法是十分常用的聚类算法,给定聚类的数目N,Kmeans会自动在样本数据中寻找N个质心,从而将样本数据分为N个类别。下面简要介绍Kmeans聚类原理,并附上自己写的Kmeans聚类算法实现。 一、Kmeans原理 1. 输入:一组数据data,设定需要聚类的类别数目ClusterCn 阅读全文
posted @ 2018-05-06 22:15 一度逍遥 阅读(1897) 评论(0) 推荐(0) 编辑
摘要:一、拉普拉斯融合基本步骤 1. 两幅图像L,R,以及二值掩模mask,给定金字塔层数level。 2. 分别根据L,R构建其对应的拉普拉斯残差金字塔(层数为level),并保留高斯金字塔下采样最顶端的图像(尺寸最小的图像,第level+1层): 拉普拉斯残差金字塔构建方法如下,以L图为例: (1) 阅读全文
posted @ 2018-04-23 22:43 一度逍遥 阅读(9052) 评论(1) 推荐(1) 编辑
摘要:上一篇博客中介绍了从拍摄图像到获取视差图以及深度图的过程,现在开始介绍利用视差图或者深度图进行虚拟视点的合成。虚拟视点合成是指利用已知的参考相机拍摄的图像合成出参考相机之间的虚拟相机位置拍摄的图像,能够获取更多视角下的图片,在VR中应用前景很大。 视差图可以转换为深度图,深度图也可以转换为视差图。视 阅读全文
posted @ 2018-03-07 22:42 一度逍遥 阅读(12149) 评论(5) 推荐(7) 编辑
摘要:双目立体匹配一直是双目视觉的研究热点,双目相机拍摄同一场景的左、右两幅视点图像,运用立体匹配匹配算法获取视差图,进而获取深度图。而深度图的应用范围非常广泛,由于其能够记录场景中物体距离摄像机的距离,可以用以测量、三维重建、以及虚拟视点的合成等。 之前有两篇博客简要讲过OpenCV3.4中的两种立体匹 阅读全文
posted @ 2018-02-28 22:54 一度逍遥 阅读(119969) 评论(77) 推荐(25) 编辑
摘要:上一篇博客中讲到了goodFeatureToTrack()这个API函数能够获取图像中的强角点。但是获取的角点坐标是整数,但是通常情况下,角点的真实位置并不一定在整数像素位置,因此为了获取更为精确的角点位置坐标,需要角点坐标达到亚像素(subPixel)精度。 1. 求取亚像素精度的原理 找到一篇讲 阅读全文
posted @ 2018-02-26 22:50 一度逍遥 阅读(16488) 评论(0) 推荐(9) 编辑
摘要:上面一篇博客分析了HARRIS和ShiTomasi角点检测的源代码。而为了提取更准确的角点,OpenCV中提供了goodFeaturesToTrack()这个API函数,来获取更加准确的角点位置。这篇博客主要分析goodFeaturesToTrack()的源代码。 函数原型如下: _image为输入 阅读全文
posted @ 2018-02-25 19:49 一度逍遥 阅读(6231) 评论(0) 推荐(0) 编辑
摘要:引导图滤波器是一种自适应权重滤波器,能够在平滑图像的同时起到保持边界的作用,具体公式推导请查阅原文献《Guided Image Filtering》以及matlab源码:http://kaiminghe.com/eccv10/index.html。这里只说一下自适应权重原理、C++实现灰度图像以及彩 阅读全文
posted @ 2018-01-28 21:51 一度逍遥 阅读(25863) 评论(4) 推荐(0) 编辑
摘要:以OpenCV自带的Aloe图像对为例: 1.BM算法(Block Matching) 参数设置如下: 效果如下: BM算法得到的视差图(左),空洞填充后得到的视差图(右) 2.SGBM(Semi-Global Block matching)算法: 参数设置如下: 效果如图: SGBM算法得到的视差 阅读全文
posted @ 2018-01-19 21:56 一度逍遥 阅读(37142) 评论(8) 推荐(6) 编辑
摘要:原理: Two-Pass方法检测连通域的原理可参见这篇博客:http://blog.csdn.net/lichengyu/article/details/13986521。 参考下面动图,一目了然。 代码: 代码中标记图的数据类型要注意,如果first pass中标记数多于255,就不要用uchar 阅读全文
posted @ 2018-01-13 23:36 一度逍遥 阅读(4525) 评论(0) 推荐(0) 编辑
摘要:中值滤波能够有效去除图像中的异常点,具有去除图像噪声的作用。传统中值滤波的算法一般都是在图像中建立窗口,然后对窗口内的所有像素值进行排序,选择排序后的中间值作为窗口中心像素滤波后的值。由于这个做法在每个像素点处都要建立窗口并排序,非常耗时,尤其是有大量的冗余计算。如下图: 黄色区域+中间粉色区域是第 阅读全文
posted @ 2017-12-05 22:42 一度逍遥 阅读(7688) 评论(4) 推荐(1) 编辑
摘要:图像算法中会经常用到摄像机的畸变校正,有必要总结分析OpenCV中畸变校正方法,其中包括普通针孔相机模型和鱼眼相机模型fisheye两种畸变校正方法。 普通相机模型畸变校正函数针对OpenCV中的cv::initUndistortRectifyMap(),鱼眼相机模型畸变校正函数对应OpenCV中的 阅读全文
posted @ 2017-11-09 22:49 一度逍遥 阅读(18318) 评论(0) 推荐(2) 编辑
摘要:libJPEG库是用于编码数据为JPEG格式或者解码JPEG格式图片的常用库,OpenCV读取图像底层实现就是利用libJPEG库,而libJPEG-turbo则效率更高。 具体怎么编译编译libJPEG库源码得到lib库的方法很容易搜到,不多做介绍。 下面的代码包含了该库中常用的API用法,包括读 阅读全文
posted @ 2017-11-01 22:33 一度逍遥 阅读(9157) 评论(1) 推荐(1) 编辑