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

前端之家收集整理的这篇文章主要介绍了opencv – 如何在数据点之间插值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个使用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)
原文链接:https://www.f2er.com/java/122113.html

猜你在找的Java相关文章