加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

opencv – 如何在数据点之间插值?

发布时间:2020-12-14 05:33:21 所属栏目:Java 来源:网络整理
导读:我正在开发一个使用opencv和qt的软件来绘制数据点.我需要能够填写不完整的数据的图像.我想在我所拥有的点之间进行插值.任何人都可以推荐可以帮助我的图书馆或者功能.我以为也可能是opencv reMap方法,但我似乎无法让它工作. 数据是强度值的2-d矩阵.我想创建一
我正在开发一个使用opencv和qt的软件来绘制数据点.我需要能够填写不完整的数据的图像.我想在我所拥有的点之间进行插值.任何人都可以推荐可以帮助我的图书馆或者功能.我以为也可能是opencv reMap方法,但我似乎无法让它工作.

数据是强度值的2-d矩阵.我想创建一个有些图像.它是一个学校项目.

解决方法

唷!大题目

“正确”答案取决于您的问题领域和您正在做的各种细节.

在一个维度上进行插值需要做出一些选择.我会假设你在一个规则的网格上绘制,但是你的一些网格点没有数据.大问题:缺点是稀疏还是大斑点?

你不能添加信息,所以你只是想建立一些看起来不错的东西.

概念上简单的建议(但执行可能有些工作):

对于缺少数据的每个区域,确定所有边缘点.这是在这个图中找到x的

oooxxooo
oox..xoo 
oox...xo
ox..xxoo
oox.xooo
oooxoooo

其中的是缺点数据,x和o有数据(对于单个缺失点,这将是四个最近的邻居).在每个丢失的数据点上填充平均值超过此Blob周围的边缘点.为了使其顺利,将每个点加权1 / d,其中d是两点之间的纳税人距离(delta x delta y).

从之前我们有任何细节:

在没有这种信息的情况下,你是否尝试过直线插补?如果您的数据相当密集,这可能会为您做,而且当您需要时,可以很方便地进行代码编写.

下一步通常是三次样条曲线,但是您可能希望获取现有的实现.

当我需要比快速线性插值更强大的东西时,我通常使用ROOT(并选择一个TSpline类),但这可能比您需要更多的开销.

如评论中所指出的,ROOT很大,虽然速度很快,但它确实试图强制你做ROOT的方式,所以它可以对你的程序有很大的影响.

两点(x1,y1)和(x2,y2)之间(或实际外推)的线性插值给出

y_i = (x_i-x1)*(y2-y1)/(x2-x1)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读