由Emgu(OpenCV的.net包装器)提供的图像大小调整功能可以使用以下四种插值方法中的任何一种:
我粗略地理解线性插值,但只能猜测立方或区域的作用.我怀疑NN代表最近的邻居,但我可能是错的.
我正在调整图像大小的原因是减少像素数量(它们将在某个时刻迭代)同时保持它们的代表性.我之所以提到这一点,是因为在我看来插值是这个目的的核心 - 因此获得正确的类型应该非常重要.
那么我的问题是,每种插值方法的优缺点是什么?它们如何不同,我应该使用哪一个?
我试图NA通过插值从我的数据框中删除s na.approx()但不能删除所有NAs.
我的数据帧是4096x4096,其中270.15是无效值的标志.我需要数据在所有点上连续不断地为气象模型提供信息.昨天我询问并获得了关于如何替换基于另一个数据帧的数据帧中的值的答案.但之后我来了na.approx()然后决定用270.15值替换NA并尝试na.approx()插入数据.但问题是为什么na.approx()不替换所有的NA.
这就是我在做的事情:
用NA替换标志值
> sst4[sst4 == 270.15 ] = NA
Run Code Online (Sandbox Code Playgroud)检查第一列(或任何其他)
> summary(sst4[,1])
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
271.3 276.4 285.9 285.5 292.3 302.8 1345.0
Run Code Online (Sandbox Code Playgroud)运行na.approx
> sst4=na.approx(sst4,na.rm="FALSE")
Run Code Online (Sandbox Code Playgroud)检查第一列
> summary(sst4[,1])
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
271.3 276.5 286.3 285.9 292.6 302.8 411.0
Run Code Online (Sandbox Code Playgroud)正如你所看到的那样,411 NA尚未被删除.为什么?它们都对应于前导/结束列值吗?
head(sst4[,1])
[1] NA NA NA NA NA NA
tail(sst4[,1])
[1] …Run Code Online (Sandbox Code Playgroud) 我确信这是其他人多次解决过的问题.
一群人将要进行测量(确切地说是家庭能源使用情况).所有这些人都会在不同的时间和不同的时间间隔做到这一点.
所以我从每个人那里得到的是一组{date,value}对,其中集合中缺少日期.
我需要的是一套完整的{date,value}对,其中每个日期的范围值已知(测量或计算).我希望一个简单的线性插值就足够了这个项目.
如果我认为它必须在Excel中完成.在这样的数据集中插值的最佳方法是什么(所以我每天都有一个值)?
谢谢.
注意:当这些数据集完成后,我将确定斜率(即每天的使用量),然后我们就可以开始进行家庭到家的比较.
附加信息在提出几条建议后:我不想手动确定测量装置中的孔位置(太多不完整的测量装置!!).我正在寻找一些(现有的)自动为我做的事情.所以,如果我的意见是
{2009-06-01, 10}
{2009-06-03, 20}
{2009-06-06, 110}
Run Code Online (Sandbox Code Playgroud)
然后我希望自动得到
{2009-06-01, 10}
{2009-06-02, 15}
{2009-06-03, 20}
{2009-06-04, 50}
{2009-06-05, 80}
{2009-06-06, 110}
Run Code Online (Sandbox Code Playgroud)
是的,我可以编写这样做的软件.我只是希望有人已经为这个(相当普通的)问题提供了"准备运行"软件(Excel)功能.
我正在尝试使用最近邻插值算法编写自己的函数来放大输入图像.不好的部分是我能够看到它是如何工作但无法找到算法本身.我将不胜感激任何帮助.
这是我尝试将输入图像放大2倍的原因:
function output = nearest(input)
[x,y]=size(input);
output = repmat(uint8(0),x*2,y*2);
[newwidth,newheight]=size(output);
for i=1:y
for j=1:x
xloc = round ((j * (newwidth+1)) / (x+1));
yloc = round ((i * (newheight+1)) / (y+1));
output(xloc,yloc) = input(j,i);
end
end
Run Code Online (Sandbox Code Playgroud)
这是马克建议之后的输出
matlab interpolation image-processing nearest-neighbor resize-image
我试图用Matlab旋转图像而不使用imrotate函数.我实际上是通过使用变换矩阵来制作的.但它还不够好.问题是,旋转的图像是"滑动的".让我用图片告诉你.
这是我想要旋转的图像:

但是当我旋转它时,例如45度,它变为:

我在问为什么会发生这种情况.这是我的代码,是否有任何数学或编程错误?
image=torso;
%image padding
[Rows, Cols] = size(image);
Diagonal = sqrt(Rows^2 + Cols^2);
RowPad = ceil(Diagonal - Rows) + 2;
ColPad = ceil(Diagonal - Cols) + 2;
imagepad = zeros(Rows+RowPad, Cols+ColPad);
imagepad(ceil(RowPad/2):(ceil(RowPad/2)+Rows-1),ceil(ColPad/2):(ceil(ColPad/2)+Cols-1)) = image;
degree=45;
%midpoints
midx=ceil((size(imagepad,1)+1)/2);
midy=ceil((size(imagepad,2)+1)/2);
imagerot=zeros(size(imagepad));
%rotation
for i=1:size(imagepad,1)
for j=1:size(imagepad,2)
x=(i-midx)*cos(degree)-(j-midy)*sin(degree);
y=(i-midx)*sin(degree)+(j-midy)*cos(degree);
x=round(x)+midx;
y=round(y)+midy;
if (x>=1 && y>=1)
imagerot(x,y)=imagepad(i,j); % k degrees rotated image
end
end
end
figure,imagesc(imagerot);
colormap(gray(256));
Run Code Online (Sandbox Code Playgroud) 假设我有一个山上3个(已知)高度的气象站的数据.具体而言,每个站每分钟记录一次温度测量.我有两种插值我想要执行.而且我希望能够快速完成每一项工作.
所以让我们设置一些数据:
import numpy as np
from scipy.interpolate import interp1d
import pandas as pd
import seaborn as sns
np.random.seed(0)
N, sigma = 1000., 5
basetemps = 70 + (np.random.randn(N) * sigma)
midtemps = 50 + (np.random.randn(N) * sigma)
toptemps = 40 + (np.random.randn(N) * sigma)
alltemps = np.array([basetemps, midtemps, toptemps]).T # note transpose!
trend = np.sin(4 / N * np.arange(N)) * 30
trend = trend[:, np.newaxis]
altitudes = np.array([500, 1500, 4000]).astype(float)
finaltemps = pd.DataFrame(alltemps + trend, columns=altitudes)
finaltemps.index.names, finaltemps.columns.names = …Run Code Online (Sandbox Code Playgroud) 我需要使用最近邻居调整大小的图像渲染,而不是当前使用的双三次方式.我目前使用以下内容:
ms-interpolation-mode: nearest-neighbor;
image-rendering: -moz-crisp-edges;
Run Code Online (Sandbox Code Playgroud)
这适用于IE和Firefox,但不适用于Chrome和Safari.是否有任何webkit替代方案或任何其他方式来实现此效果?
我想要检索图像中像素的rgb.但是位置不是整数位置而是实数值(x,y).我想要一个双线性插值.我怎么能这样做opencv?
非常感谢
我有一些体积成像数据,包括在x,y,z的规则网格上采样的值,但具有非立方体素形状(z中相邻点之间的空间大于x,y).我最终希望能够在通过卷的任意2D平面上插值,如下所示:

我知道scipy.ndimage.map_coordinates,但在我的情况下使用它不那么简单,因为它隐含地假设输入数组中元素的间距在维度上是相等的.我可以首先根据最小的体素尺寸对我的输入数组进行重新采样(这样我的所有体素都可以是立方体),然后map_coordinates用来在我的平面上进行插值,但是插入我的数据两次似乎不是一个好主意.
我也知道,scipy有不规则隔开的ND数据(不同的内插LinearNDInterpolator, NearestNDInterpolator等等),但这些都是非常缓慢和内存密集型,我的目的.在我知道值在每个维度内有规律间隔的情况下,插入数据的最佳方法是什么?
我有一个大的3d np.ndarray数据,表示以常规网格方式在卷上采样的物理变量(如数组[0,0,0]中的值表示物理坐标系中的值(0,0,0) )).
我想通过在粗网格中插入数据来获得更精细的网格间距.目前我正在使用scipy griddata线性插值,但它很慢(对于20x20x20阵列,约为90秒).为了我的目的,它有点过度设计,允许随机采样体积数据.有什么东西可以利用我的常规间隔数据,以及我想插入的只有一组有限的特定点吗?