我正在弄清楚当我们设置fx=2和时,OpenCV resize() 函数如何计算线性插值fy=1。我写了以下最小工作示例,
import cv2
import numpy as np
pattern_img = np.zeros((6, 6), np.uint8)
pattern_img[:, 0::2] = 255
patteen_img_x2 = cv2.resize(pattern_img, None, fx=2, fy=1, interpolation=cv2.INTER_LINEAR)
Run Code Online (Sandbox Code Playgroud)
如果我们看pattern_img和的第一行pattern_img_x2,我们会得到,
pattern_img[0, :]
> array([255, 0, 255, 0, 255, 0], dtype=uint8)
pattern_img_x2[0, :]
> array([[255, 191, 64, 64, 191, 191, 64, 64, 191, 191, 64, 0]], dtype=uint8)
Run Code Online (Sandbox Code Playgroud)
我不知道数字 191 和 64 是如何计算的。我知道它实现了bilinear算法,但在本例中我们设置了fy=1,所以它应该是沿 x 轴的简单线性插值。但我不知道如何resize()计算这些插值数字。有人可以帮助我理解背后的算法吗?
我有一个累积数据的数据集。我试图插入一些缺失的值,但在某些时候我得到了更高的值。这是我的数据的示例:
dat <- tibble(day=c(1:30),
value=c(278, 278, 278, NA, NA, 302, 316, NA, 335, 359, NA, NA,
383, 403, 419, 419, 444, NA, NA, 444, 464, 487, 487, 487,
NA, NA, 487, 487, 487, 487))
Run Code Online (Sandbox Code Playgroud)
我的数据集很长,当我使用 smooth.spline 插入缺失值时,我得到的值大于下一个观察值,考虑到我正在处理累积的数据,这是相当荒谬的。这是我得到的输出:
value.smspl <- c(278, 278, 278, 287.7574, 295.2348, 302, 316, 326.5689, 335,
359, 364.7916, 377.3012, 383, 403, 419, 419, 444, 439.765, 447.1823,
444, 464, 487, 487, 487, 521.6235, 526.3715, 487, 487, 487, 487)
Run Code Online (Sandbox Code Playgroud)
我的问题是:您能否以某种方式为插值设置边界,以便结果可靠?如果是这样,你怎么能做到呢?
我想知道OpenGL使用什么类型的Pixel Interpolation.它是否使用标准像素插值技术之一,如最近邻,双线性或双立方?
这个coffeescript ......
"""
#{@display_event_small(event) for event in data.top_events}
"""
Run Code Online (Sandbox Code Playgroud)
在data.top_events中的每个元素之间输出逗号.我需要让它们连接在一起而不用逗号.当然,我可以使用更自定义的循环,但我认为CoffeeScript有更好的方法来改变这种行为.
如果我需要澄清,请告诉我.谢谢.
重新格式化此PHP语句以说"版权所有©2013 My Company.保留所有权利"的正确方法是什么.(没有引号)?
<?php _e('All Rights Reserved', 'mycompany'); ?> <a href="/">My Company</a> © <?php echo date('Y');?>
截至目前,上述声明呼应"版权所有我公司©2013".
我有一个具有不同值的向量.有些值是零,有时甚至是一个接一个.我需要将这个向量映射到另一个具有相同大小的向量,但我不能在其中有零.我可以对矢量进行某种插值的最佳方法是什么?我该怎么做?我试着在mat-lab中阅读有关插值的内容,但我不太了解实现它.如果有可能一步一步地向我解释,我会很感激,因为我是这个项目的新手.
谢谢
我有9张MRI图像,想用这些图像制作3D体积.从那里,我想插入每个切片之间.给定卷中的两个切片,我想在两个切片之间插入一个中间帧.目标是创建一个执行此插值的18 MRI体积.
我将如何在MATLAB中实现这一目标?
matlab interpolation image-processing multidimensional-array
我一直试图绘制一条线,以及样条拟合.以下是我的代码的通用版本.'x_coord'和'y_coord'是包含浮点值列表的列表.
import matplotlib.pyplot as plt
from scipy import interpolate as ipl
for a in range(len(x_coord)):
plt.plot(x_coord[a],y_coord[a],label='Label')
yinterp = ipl.UnivariateSpline(x_coord[a],y_coord[a],s=1e4)(x_coord[a])
plt.plot(x_coord[a],yinterp,label='Spline Fit')
Run Code Online (Sandbox Code Playgroud)
虽然我认为这在过去对我有用,但现在我收到一条错误消息:
/.../Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/scipy/interpolate/fitpack2.pyc in __init__(self, x, y, w, bbox, k, s, ext)
165
166 data = dfitpack.fpcurf0(x,y,k,w=w,
--> 167 xb=bbox[0],xe=bbox[1],s=s)
168 if data[-1] == 1:
169 # nest too small, setting to maximum bound
error: (m>k) failed for hidden m: fpcurf0:m=0
Run Code Online (Sandbox Code Playgroud)
我已经看到类似错误消息的情况(例如dfitpack.error:(m> k)因隐藏的m:fpcurf0:m = 1而失败),只是在那种特殊情况下似乎存在涉及字典的问题,其中没有一个用于我的代码.
关于这个问题的任何建议将不胜感激.
我使用以下脚本在一些(x,y,z)数据上使用LinearNDInterpolator。但是,我不知道如何从插值数据转到以热图形式绘制/显示插值?我是否缺少基于x和y的最小值和最大值设置网格网格的内容?任何帮助或示例都很好!
import numpy as np
import scipy.interpolate
x = np.array([-4386795.73911443, -1239996.25110694, -3974316.43669208,
1560260.49911342, 4977361.53694849, -1996458.01768192,
5888021.46423068, 2969439.36068243, 562498.56468588,
4940040.00457585])
y = np.array([ -572081.11495993, -5663387.07621326, 3841976.34982795,
3761230.61316845, -942281.80271223, 5414546.28275767,
1320445.40098735, -4234503.89305636, 4621185.12249923,
1172328.8107458 ])
z = np.array([ 4579159.6898615 , 2649940.2481702 , 3171358.81564312,
4892740.54647532, 3862475.79651847, 2707177.605241 ,
2059175.83411223, 3720138.47529587, 4345385.04025412,
3847493.83999694])
# Create coordinate pairs
cartcoord = zip(x, y)
# Interpolate
interp = scipy.interpolate.LinearNDInterpolator(cartcoord, z)
Run Code Online (Sandbox Code Playgroud)
编辑:基于@Spinor的解决方案,并使用Python 2.7,以下代码为我提供了我正在寻找的方法(方法1)。有没有办法增加插值点的密度?
不用说,我没想到结果是圆形的,因为(纬度,经度)坐标取自等角投影图。在进一步调查中,我认为这只是映射到不同的投影上。
我有一个与日期匹配的数字,我不知道如何使用该日期计算数字,这里有三个例子:
08/08/2018 12:23 73691437391180
08/08/2018 12:32 73691437976165
11/11/2015 14:41 73591349310000
Run Code Online (Sandbox Code Playgroud)
如果我从第一个中减去第二个,我得到9.74975的差异,它对应于通过的分钟(和秒?)?
提前致谢!
PS:数据存储在Oracle数据库中.如果需要,可以生成更多示例.