图片缩略图”itemprop=

inpaint_nans

版本1.1.0.0 (273 KB) 约翰D 'Errico
篡改(&推断)南元素在二维数组中。

130下载

更新2012年8月13日

视图版本历史

查看许可协议

编者按:这个文件被选为MATLAB中央选择的

插入南在一个二维数组元素使用non-NaN元素。也可以推断,因为它不使用三角测量的数据。Inpaint_nans提供几种不同的插值方法,这给权衡精度与速度和内存要求。目前发现的所有方法inpaint_nans是基于稀疏线性代数与PDE离散。从本质上讲,PDE是解决和提供的信息是一致的。

引用作为

约翰D 'Errico (2021)。inpaint_nans(//www.tatmou.com/matlabcentral/fileexchange/4551-inpaint_nans), MATLAB中央文件交换。检索

评论和评级(247年)

朱文昊吴

你好,我想知道如果有一篇介绍了弹簧比喻插值方法?

托马斯·科夫

令人惊异的

保罗Safier

汉蒙德

就像一个魅力在嘈杂的数据!谢谢!

Akshi Akshi

SChow

需要很长的大2 d矩阵(20000 * 50000),导致内存错误

zhixiong王

非常有用!非常感谢作者。

amirali baastani

Marcin Konowalczyk

保罗Safier

谢谢你!

亲属陈唱

谢谢你的代码共享的作者。

我写了一个替代解决方案,另外一些人可能觉得这是有益的。
//www.tatmou.com/matlabcentral/fileexchange/75758-inpaint-nan-using-griddata

雨果Laurell

天奴默克尔

正是我在寻找的

瑞安·波特

阿里Sinmaz

是Ullah Kakakhel

Tabjula L Jagadeeshwar

安德里亚Quintarelli

Namwon金

优Regmi

帕特里克Hergan

布拉德利完美

我添加了几行代码将双输入的函数。这缓解了一个错误,我正在经历(包泰国也提到了)。

西蒙zed

日常用品Grossbard

NS

如果我有一个datatime表中日期行和列的一点时间和价格我需要插入行操作使用这段代码,如何一点提到插值应该行操作。(在表转换成数组)
T4 = inpaint_nans (T3)

凡妮莎李

Akram Ghoudi

西芒Marto

莫里吉奥澳网

Paola Paruta

亚历克斯

多么伟大的一段代码…做得好!

Elif Yilmaz

拉斐尔莫伦西

Shakir侯赛因

Sreelatha P

非常有用的代码

以斯拉Huscher

艾伯特(Schwinn

Zahra

米娜·马苏德

Sirshendu Misra

达里奥索拉诺

嗨,乔恩,
感谢你你的惊人的工作,它真的帮助了我很多在我的博士学位。我接近毕业,需要证明为什么一些插值地区和一些别人不工作很好。
有没有测量插值的质量我可以使用吗?偏远地区,例如,“插入”,我无法信任他们。你能告诉我一个方法来量化插值点的质量呢?
谢谢你这么多。
达里奥索拉诺。

卡莱斯Otero

Zijie赵

Daehyeon汉

核纤层蛋白Barleben

非常感谢。它的完美。

马可卸下

Stef_forrest

约翰Papantonis

亚当

纪尧姆·德·盖恩

适合我的流数据重建。谢谢你!

艾德里安

劳伦·比尔曼

我尝试了许多不同的方法,但这种方法被证明是最好的海洋颜色填充数据的差距。谢谢你!

chayma chaabani

完美,谢谢!

marceline86

神奇的!非常感谢你

kelian dascher-cousineau

莫莉玻璃

宝泰

很难试图填补一个RGB矩阵。matlab的新新手,不知道是有原因的这个错误呢? ?

错误使用*
MTIMES并不完全支持整数类。金宝app至少一个输入必须标量。
计算elementwise时间、使用时间(. *)。

错误inpaint_nans(第184行)

错误glarescript(21)行
imd (:: 1) = inpaint_nans (imd (:,: 1));

jb5cents

我需要什么,快!思考如何去做自己一个小时,然后高兴搜索。适合填写NaN的遥感数据。

Stef_forrest

卡洛迪Giovine

Ritabrata Thakur

安东

Zoran Cenev

很棒的工作!

ImagingScience

ImagingScience

莱昂内尔

有帮助的

kiben17

rabbasi

SL

这是非常有用的用户贡献的!

Matlab应该激励因素,付出贡献,包括他在主要的软件代码。这真的是值得的。我们应该做一切让他回到这里,因为该工具需要维修。其发展不应该停止。

安德鲁Salij

约翰D 'Errico

当我最初写的代码弹簧的方法,我的计划是包括对角条款,认为他们将是必要的。然而,我认为我发现它工作得很好没有它们,所以我从不说这些术语。他们只会创建矩阵,没有完全解决,所以慢的代码。但由于我通常首先试着写帮助,它看起来像我忘了带出的信息。

由于它工作正常,我不确定,这证明一个较低的评级,但这是你的意见。

肯•休斯

文档(methods_of_inpaint_nans.m)方法4(弹簧)似乎不同于实际的代码。根据文档,每个值与邻国以及对角线上。我不能在代码的任何地方(除了评论)对角线。

注意,method_of_inpaint_nans中的示例。m包括对角线项,因此给出了不同的答案比如果我把矩阵的文件,跑inpaint_nans (, 4)

另一方面,这个函数已经帮助指导我的问题的解决方案

马特•王

非常感谢约翰这个伟大的工具。我们以前用它巨大的成功,但在我的当前应用程序我得到二维数组返回,还有nan。都是全封闭的nan数据所以我的理解是,这应该不会发生。有条件时,我应该知道的填入不工作吗?

> >版本
8.5.0.197613 (R2015a)

> > rate_filled = inpaint_nans(速度,2);

> >总和(isnan(率(:)))

ans =

10980年

> >总和(isnan (rate_filled (:)))

ans =

5512年

> >谁率
类属性名称大小字节

率659 x698 3679856双

其他方法离开相似,但不完全相同,数字nan。

亲属陈唱

DAIRC

kco

我得到这个错误当我试图调用你的函数在nxm矩阵

inpaint_nans (ingdata)


错误使用独特的(29)行
第一个参数必须是一个方阵

错误inpaint_nans > identify_neighbors(第550行)
neighbors_list =独特(neighbors_list '行');

错误inpaint_nans(第155行)
neighbors_list = identify_neighbors (n, m, nan_list talks_to);

知道为什么吗?我应该补充的是,通常当我运行我的错误“错误使用独特的(29)行”即使我不使用这个函数在脚本文件或函数。

谢谢!

伯特兰Pinet

谢谢你!

珀斯

狮子座杜马斯

太好了!我需要的正是这一点,将会失去很多的时间去做一些更糟。
如果有一天你有时间,你应该写一篇论文。我想这一定会是一个参考作用!

我不需要测试工具。我知道它的神奇。约翰你是一个绝对的传奇。非常感谢你

Stylianos Kritsotalakis

阿里一个

达沃Sklavenitis

约翰D 'Errico

inpaint_nans不平滑。我从来没有声称它的任何东西。如果你有噪声图像,使用inpaint_nans将图像噪点。事实上,图像将会完全改变。

inpaint_nans只有取代南元素与填补图像元素,从相邻的元素在任何孔顺利插入。

如果你的目标是做图像平滑,你需要找到一个特定的问题的工具。例如,使用conv2应用模糊内核数组。当然,conv2将会失败如果有南(失踪)元素,首先你可能需要inpaint_nans应用到一个数组,然后应用conv2光滑。

asmaa atalaa

我希望代码来处理一个嘈杂的图像我用下面的代码
花园= imread (lena256.bmp); %灰度图像
G =双(imread (' lena256,200 1 bppsp0.0010223.bmp '));%嘈杂的图像
G1 (:,) = inpaint_nans (G (:,:), 2);


次要情节(1、3、1)
imshow(花园)
标题的花园Sainte-Adresse(莫奈)'

次要情节(1、3、2)
imshow (uint8 (G))
标题“破坏- 50%”

次要情节(1、3、3)
imshow (uint8 (G1))
标题“填补花园”
psnr(花园,uint8 (G))
psnr(花园,uint8 (G1))

ans =

18.3803

ans =

18.3803
,发现PSNR值是相同的

Whyjay郑

很棒的函数处理噪音和nan。

多普勒效应

很神奇的。我曾经在96 - 98%南和最终结果看起来很好。当然,这是更多关于第一印象没有批判性分析。但我猜你的工作价值,在坏的情况下,三颗星。保持下去!

约翰D 'Errico

BVP代表边值问题。在微分方程的方法,给出一个微分方程定义的字段,提供的信息在这个领域的界限,这就是所谓的,从逻辑上讲,BVP。

Inpaint_nans就是这么做的(对于大多数的方法,虽然不是弹簧的方法,这完全是临时但仍然有用的。)制定PDE的洞,在边界,提供信息和解决内部的未知数。这甚至适用于外推。显式PDE选择可以被视为一个简单的扩散在默认情况下。想想作为热量的传播进入“洞”,周围的温度固定边界的地方。

因此,提出的解决方案是好总是有效地解决一个椭圆的问题。解决方法总是简单的有限差分近似PDE和边界条件。

菲利普

谢谢你的回答约翰,我将使用引用。我问另一个原因是,我想包括一个简短的总结插值是如何工作的,但我不能完全弄明白从你的描述(专门为方法= 2选项)。

如“直接求解del ^ 2 BVP穿过洞…生成与第二次泛音稀疏阵列行变量为每个南元素”

…让我猜。我理解第二个偏导数的概念,但BVP是什么?只有一个方向的方法插入吗?(你提到行变量,然后稍后提列变量)

你能提供任何解释解释这个奇妙的工具的运作会感谢:)

B。k Sumedha

约翰D 'Errico

没有我所写论文,你可以引用,我也不知道任何受雇于inpaint_nans描述的各种方法。

然而,您可以直接引用文件交换意见。几年前,我们开发了一双形式,对引文有意义,在这个页面如图所示:

http://blogs.mathworks.com/community/2010/12/13/citing-file-exchange-submissions/

关于文件交换引用。当他们适用于我自己的gridfit相反,您可以轻松地将引用转换为inpaint_nans足够了。

菲利普

约翰,有一个学术的引用,我们可以使用这个工具吗?

Drewan桑德斯

救了我的熏肉!谢谢

米切尔塞耶

太棒了!我一直在模拟卫星测量数据收集从飞机,这是完美的腿之间的插值飞行轨道。良好的文档记录,插头n播放功能。谢谢分享!

-:-米切尔

约翰D 'Errico

不。这不是线性插值,也不是一个花键。inpaint_nans最初被设计成工作在二维,线性插值显然不是一个选项。生成的目标是顺利interpolant,二阶导数的平方和最小化每个节点,以有限差分网格。同样的方法用于一维。美德是使用稀疏线性代数很有效,即使是大问题。

如果你真的渴望线性插值,你可以得到它的一维情况下,通过使用interp1。只提取已知的元素,然后使用它们来插入南元素。

丽塔

感谢分享这个函数。我使用这个函数(method4 amd只是一维向量)和比较结果与线性插值在matlab。结果都是一样的。我能说这是一维的线性插值函数输入?

丽塔

感谢分享这个函数。我使用这个函数(method4 amd只是一维向量)和比较结果与线性插值在matlab。结果都是一样的。我能说这是一维的线性插值函数输入?

Egor

方法从这个脚本已经被移植到Python 3 n-dimesnional数据支持。金宝app
如果有人需要它http://scikit-image.org/docs/dev/auto_examples/filters/plot_inpaint.html

akb岜沙

Varvara Osokina

谢谢你!!

菲利普

漂亮,漂亮的工作

马克西米利安

工作非常好,谢谢!

大肠Cheynet

Vivek

工作非常好。谢谢。但我只希望插入数据(没有外推)。有这样的一种方式吗?方法4是比别人更好,但它推断的数据。

Moyses

约翰D 'Errico

@haisheng——我困惑什么“例子”推断你想看。

是的,它可以推断,这取决于所使用的方法。大部分的方法会给你线性外推法。当然,线性外推法在二维曲线曲面的一个潜在的粗糙的边界难以量化。但如果你看看结果,因为它的形状进行边界,它将基本上是线性的,是可能的。

方法4会给你一个“常数”推断行为。再次,你根据轨迹随远离边缘曲线表面,“不变”是难以量化。

当然,在一维,常数和线性非常他们听起来像什么。

你什么都不做不同于如何使用它,否则,我认为没有理由给一个例子。你使用的代码就像正常使用它。有使用的例子演示了。

Abhinna Behera

海升果汁周

好,谢谢你的工作。数据外推我的问题是它是如何工作的,你能给一个例子吗?谢谢

Bo-An陈

感谢上帝我看见你

布鲁诺

丹尼尔Anema

丹尼尔

哇,我挖道具人!

Jan-Philipp罗斯

这就节省了我的一天。谢谢你!

Yorum

约翰D 'Errico

引用文件FEX经常发生了,足以让我们有一个讨论,并提出了几个计划似乎可行。发现他们在这个链接:

http://blogs.mathworks.com/community/2010/12/13/citing-file-exchange-submissions/

所有你需要做的是修改引用样式你喜欢适合inpaint_nans,代替gridfit。

Poulomi

如何在论文中引用这个工作?想引用。

Poulomi

还Biguri

艾薇

艾薇

嗨,约翰,你的代码是非常有用的对于我的工作。我想在我的论文引用它,请你告诉我如何正确地引用它吗?谢谢!

Egor

是的,抱歉。在谈论方法3。在我的测试图片给最好的结果。

约翰D 'Errico

不。双调和是唯一的选择。它甚至不是默认的方法由于速度慢。

Egor

似乎这个方法使用了-http://www.ima.umn.edu/ ~ damelin /双调和

Kaiyu

劳尔

恋人红桉

我不知道如何感谢你。我一直努力在我自己的。非常感谢! !

提比略

伊凡Brezani

正是我在寻找的。优秀的工作。

Debejyo Chakraborty

优秀的工作。为什么不写一个合适的pdf文档的所有方程?有出版关联到这个吗?

约翰D 'Errico

哈瑞,对不起,但我从未写过一篇论文,只是用一个逻辑想法解决问题,我有。

有修补论文描述的总体想法修复使用PDE模型,但我记得,这些通常是基于n - s,以某种形式非线性这取决于他们包括在内。这些计划通常是专有的。虽然有一些好处的一系列解决方案承认,非线性是一个严重的成本。金宝搏官方网站

你可以把这段代码的主要方案作为这样一个修复方案,因为有一个扩散项的NS方程。好处是如果我们使用纯扩散来解决这个问题,就提出和很容易解决大规模稀疏线性方程组。

哈瑞

有人能联系我的数学背景/论文这段代码是基于?会有很大的help.Thanks。

斯文

@arnold——你所描述的迭代模式过滤器。

虽然你可能认为感觉inpaint_nans相似,但正如约翰所说,它实际上是一个完全不同类型的问题的重要方法之一——如何解决迭代(而不是线性代数)。

我建议你试一试自己——只是解决如何:

1。找到一个“边界”南像素
2。发现其邻国的模式
3所示。填满它
4所示。重复。

这将是一个开始。你也可以在这里找到线索指向一个更快和更稳定的实现涉及过滤器:
//www.tatmou.com/matlabcentral/answers/46916

为了使用,你会想要运行过滤器在整个图像,然后“打包”南边界像素回原始的和重复。

阿诺德

谢谢你约翰。我明白你的意思但是我认为可以有一个好的方法应该给出一个唯一的答案几乎在任何情况下(填充一个南区域即从外面)。我不同意,一个随机的选择(从邻近值发生相同)会不满意。其实我认为这是应该做的事情如果你没有更多的信息,因为它是噪音。

什么样的假设可以当然主要取决于特定的问题/数据集。

谢谢你无论如何,像往常一样你的一些好的代码!

约翰D 'Errico

阿诺德-谢谢你的输入,然而你的目标不是适定的,在某种意义上,经常会没有唯一的答案和一个随机的选择似乎不满意。,因为一个线性代数解决方案不可行这一非线性目标,需要考虑每一个缺失的元素,然后细读其邻国。

阿诺德

不错的功能,谢谢。
我可以用一个方法取代最常见的南,离散(!)邻居的价值。我能想到的各种应用程序。
例如:我有一个数组,其中包含blob n离散值(1、2、3、4……n]在十字路口与一些数据丢失的“领域”。没有意义填满nan-gaps一个插入值。

我认为这不会太难。直接邻居分析或甚至一个定义距离权重,但填充应该其中一个邻居的精确值。

干杯

约翰D 'Errico

哈米德-我很抱歉,但我不做咨询在评论中。这不是它的地方。我告诉你你需要做什么,我告诉你不是简单地运行,包括演示脚本,但阅读和学习如何使用这个工具来解决你的问题。

哈米德阿卜杜勒阿齐兹

我跑inpaint_nans也没有问题,但我需要做的是在JPEG图像修补(不是表面),所以我试着运行test_main但我总是有这个错误消息!为此,任何帮助吗?

约翰D 'Errico

看看我的例子提供这个工具。在那里,我展示一个可以inpaint_nans应用到一个图像。事实上,我所做的。但是你需要使用这个工具,因为它是设计。简单地把一个任意jpg文件不会工作,除非你做我秀。

斯文

哈米德-这与JPEG文件无关。尝试运行的_example_ inpaint_nans,您将看到它现在也不会为你工作。这是因为inpain_nans(错误消息显示)。m文件目前不是在你的路径。你需要确保inpain_nans路径。

哈米德阿卜杜勒阿齐兹

非常感谢你约翰D 'Errico先生,我的问题是:我有dermoscopy形象(皮肤图像),包含了一个头发,我想把这个头发修复方法,为此我下载inpaint_nans,但这些代码并不使用JPG图像类型?你能指导我请提前谢谢你。

约翰D 'Errico

哈米德-所以你需要下载inpaint_nans并把它放在你的搜索路径。

哈米德阿卜杜勒阿齐兹

约翰D 'Errico先生,你做了出色的工作。
我有一个JPG当我运行test_main类型的图像上我有这个错误:

未定义的函数“inpaint_nans”类型的输入参数
“双”。
谢谢提前

斯文

哦,可能没有足够的信息,第二个错误。在第141行:
[bcclass, errorclass] = validstring (arg有效);

斯文

确实很好。我已经使用inpaint_nans一会儿,正想着如何应用循环边界约束……我需要做的就是检查紧密些,看到这已经存在。很好做的。

和约翰,只是注意inpaint_nans_bc:有几个拼写错误

1。帮助行诺西1:3法术nan。
2。“参数”应该是“bcclass”

最后,在使用环形线圈BCs我当前应用程序很好地工作,现实的问题是更像一个气缸(即第一个和最后一个列应该视为相邻,而其余元素第一行和最后一行可以没有约束)。任何想法是否容易实现这个功能吗?我认为* *,它将只是一个类似于螺旋管但不同talks_to列表中的第一项和最后一行。

约翰D 'Errico

对不起。inpaint_nans将插入所有南从其余元素数组中。你需要找到感兴趣的缺口,然后使用一个工具像interp1插值只有那些你已经认识到的差距。

卡罗丽娜

你好,
我想问如果可能的话使用inpaint_nans只插入小缺口,演奏家我想插入只有5或更少在一列连续nan。
提前感谢你的反应!
卡罗丽娜

约翰D 'Errico

迪米特里·——我很抱歉,但我没有时间和精力去深入讨论,我真希望也不会把那么多深度评论。

如果你有阅读代码,你会看到很多评论del ^ 4,通常也称为双调和算子。我敢肯定,如果你努力得到的离散化del ^ 4,您可能会发现一些有趣的系数。

迪米特里•

约翰·D 'Errico,先生
请让我知道方法3和4是如何工作和如何解决南使用这些插值技术,以及这些方法的算法。此外,当我使用方法3解决一些南,我注意到方法3是想插入我的数据与南现值。我注意到在思想的代码和我成为困惑的一些代码,请让我知道发生了什么如果问> 0之后,你在哪里解决稀疏矩阵和有一群常数方程
“fda =稀疏(repmat (all_list (L, 1), 1、13),…
repmat (all_list (L, 1), 1、13) +…
repmat ([2 * n, n - 1, n, n + 1, 2 - 1, 0, 1, 2, n, n, n + 1, 2 * n],问,1),…
repmat([1 2 8 2 1 8 20 8 1 2 8 2 1],问,1),海里,海里);“
请让我知道这些常数做什么和你为什么要选择他们。最后请让我知道如果你能深入方法3和4是如何工作的。

- d

迪米特里•

对不起不是埃里克·约翰

besbesmany besbesmany

中所使用的算法是什么细节,有详细描述的方法吗?

Mohamadreza

我使用了错误的代码隐藏在视频传输,但我不知道如何支持背后的方法和公式,我将感激如果你能提供我的算法和数学模型用于插值金宝app
谢谢提前

工作很好,快!

christhechris

约翰D 'Errico

大卫- inpaint_nans将填写所有南元素。然而,弹簧方法(方法4)我认为你希望看到。它会做一个常数外推,在一定程度上,可以实现在二维空间中。

因此,在一维,我们可以很容易地看到一个常数extrapolant会是什么样子。需要的价值曲线的极值点。然而,想象一个非凸的表面有两个独立变量,改变四周的警戒值吗?在这里你必须决定哪些路径跟随外blob。取决于你向外推进,一个常数extrapolant会有所不同。Inpaint_nans试图解决冲突,顺利。

最后,还有intrapolation的情况。这就是你大内部孔阵列。这里inpaint_nans(与任何方法,包括方法4)将填入孔尽可能顺利。

大卫·C

大卫·C

大卫·C

我如何停止外推(插值)?

汉斯

MoDu

优质的代码,它的工作令人钦佩。我使用无线电信号和算法4很棒。

约翰D 'Errico

我不得不做一些维修,更好地处理输入向量。我不知道这是版本有关,过去作为向量的输入工作。我刚刚发送的新版本。

奥列格•科马罗夫

一个= 14.0985;2.5852;南);

inpaint_nans (2)

下标指标必须或者是真实的积极的整数或逻辑值。
错误inpaint_nans(第239行)
fda(纳米(纳米、nm-1 nm-n]) = (2 1 1);

如果我提供一个行向量没问题。

约翰D 'Errico

不,我不使用多元回归技术。有一些解释提供的代码。我所能做的就是建议你阅读。

你不需要做古典修补图像使用这段代码。事实上,它并没有为这类的问题而设计的。与南任何一维或二维数组元素的地方你想插入他们从相邻点。

Isti

你使用的多元回归吗?你能告诉我方法是如何工作的?我的问题归咎nan的矩阵,但它不是关于数字绘画:(我也希望将我自己的工作。
由于之前

Isti

你使用的多元回归吗?你能告诉我方法是如何工作的?由于之前

劳伦斯

好,谢谢约翰

约翰D 'Errico

它已经有许多年我写了这个工具,但是为什么不开始的有限差分逼近del ^ 4 ?

http://en.wikipedia.org/wiki/Biharmonic_equation

劳伦斯

真正有用的代码,谢谢。几个问题,希望有人能回答我。通过不同的方法,我认为我理解大概发生了什么(虽然纠正我如果我错了),但我不确定系数的高阶pde的来源。

方法0,1 & 2的一组线性方程的配方然后从偏导数解决来自离散拉普拉斯算子近似/有限元法(产生系数二阶[1 2 1])在每架飞机。我想我理解这为什么偏导数之和都设置为0等。

方法三,如何计算系数/派生第四(del ^ 4) pde的订单吗?代码中的系数[1 2 8 2 1 8 20 8 1 2 8 2 1],并使用一个5 x5钻石结构但算法和背景研究我看不出他们是如何组成。

劳伦斯

索班

经过5个小时的搜索和测试最后这一个帮助!非常感谢

约翰D 'Errico

对于你的问题的答案,您需要潜水更深入方程,以及它们是如何产生的。2你发现的因素似乎是正确的和一致的上下文。

如果你喜欢来弥补任何任意方程的各种有意义的,当然你可以得到任何你喜欢的结果。事实上,需要等到您编写自己的代码。

对不起,坐在这里与人争论不愿理解底层的代码2倍应该或不应该属于在我看来愚蠢的。出于某种原因,你似乎试图从几个反向工程基本方程系数,,然后决定是否对你有意义,没有实际耗费精力。它是错误的方向去当你试图了解一个软件。从头开始,而不是结束。

Willem-Jan de Goeij

事实上,我犯了一个错误。我混我看两个例子。

的平均2和0当然是1。
所以我将选择1作为一个解决方案。

我在代码中看到的是上面的问题是解决以下方程组:

2 x = 1 + 3 = 4
x = 10 + 6 + 4 - 4 * 5 = 0

这组方程的最小二乘解,确实是x = 1.6。
但是为什么第一个方程乘以2吗?

如果你一直的x因素两个方程等于1,你得到的

x = (1 + 3) / 2 = 2
x = 10 + 6 + 4 * 5 = 0

这给x = 1,最小二乘解。

约翰D 'Errico

威廉,就我个人而言,我认为1.57982346157884756363579013421232435是一个略好价值,尽管我愿意谈判最后几位数。我的观点是,你显然是试图猜第二次预测的价值低于10%在一个非常不确定的值。有多少天使可以戴在头上的针呢?

所以感到完全自由选择您喜欢的任何值,当您编写自己的代码。生成的值是符合我指定的方程,包括边界条件我选择。虽然这些方程一些理性意义,我不会声称预测inpaint_nans是完美的,或者,它将让所有用户幸福快乐。无论如何是不可能的,我只是太忙计数天使。

Willem-Jan de Goeij

一个=
1 4 7
南5 10
3 6 11

让我们叫NaN值x。

你的函数给x = 1.6。
我认为x = 1.5是更多的逻辑,你呢?

如果我们看第一列,我们有x = 0.5 * (1 + 3)。= = > x = 2
如果我们看一下5
5 = 0.25 * (x + 10 + 4 + 6)。= = > x = 0

如果这些值平均,我们有x = 1.5。

剑锋

好工作!

年代K

我有一个2 d数据,最后几行nan。我用你的函数来填补。我有一个结果。然后我创建了另一个矩阵,x = [x;flipud (x),然后再次使用你的函数来填补这个漏洞。的情况下,我得到相同的值代替nan。我希望在第二种情况下,这些值会更顺畅。如果可能,请让我知道。非常感谢。

年代K

托马斯

我一定会查gridfit——谢谢!

约翰D 'Errico

inpaint_nans不允许一个非均匀网格的概念,使其更高效和更简单的使用。然而,人们可以使用gridfit在这种情况下,它允许一个一般的间距。当然,gridfit inpaint_nans一样不假定数据是神圣不可侵犯的,但是那些偏离真正的interpolant经常将小如果你使用一个相对较小的平滑参数。

托马斯

出色的工作!

然而,一个问题可以使用方法4(即“泉”)的一个数据列和行之间的间距不一样吗?(一个例子是如果x轴(沿列)向右是非线性的,春天是弱于:春天左边)。

大卫Provencher

好吧,我怀疑这可能是对的。我已经做你建议,但我想我可能会问。

谢谢你的回答!

约翰D 'Errico

nan的另一种颜色吗?即。,two types of NaN. My only suggestion is to allow them all to be estimated, and then convert those you wish to remain NaN back into NaNs.

如果你不这样做,那么你可能无法估计其他南元素可能躺在同一个小区。

大卫Provencher

工作好了!

我想知道是否有一种方法来排除一些nan插值(使他们为nan)。目前,我屏蔽了结果,但我宁愿完全排除它们。我想修改nan_list known_list,但是在我看来我跑到问题如果输入矩阵不是“全部”。任何帮助吗?
谢谢

(我使用inpaint-nans在立体视觉应用程序中插入孔的差距地图。然而,我计算差异的图像地图可能无效的像素非常大的地区,我不需要/想要插入)。

卡梅伦Sparr

工作好了!可以使用一个更新的例子形象。

帕特里克•杰克曼

你好,约翰
我一直在关注你的修补算法作为一个选项处理缺失数据的一个三维矩阵。你有三维算法的版本,您可以与我们分享?如果不是你能给一些建议关于如何修改二维版本吗?
谢谢

帕特里克•杰克曼

帕特里克•杰克曼

约翰D 'Errico

(我Kaah解决的问题通过电子邮件。)

对于保罗来说,这不是一个inpaint_nans问题。你问如何让imwrite写出一个频道(灰度)形象吗?我不知道你不明白,但是我认为你需要做快速阅读的帮助imwrite(一个简单的函数,虽然帮助确实很长。)也许你不明白什么是灰度图像,或者如何转回3通道图像(尽管仍然灰度)?在任何情况下,这不是一个inpaint_nans问题。

保罗

伟大的工作!我用你的工作在我的项目但我如何保存输出的问题。当显示输出,它需要平方·布兰克特,[]在IMSHOW命令。但在IMWRITE怎么做?谢谢!

irisImage = imread (“C: \ test.bmp”);irisImageGrayScale = rgb2gray (irisImage);

irisImageGrayScale =双(irisImageGrayScale);
irisImageGrayScale (irisImageGrayScale > 170) =南;
irisImageGrayScale2 = inpaint_nans (irisImageGrayScale);
irisImageGrayScale2 (irisImageGrayScale2 < 0) = 0;
irisImageGrayScale2 (irisImageGrayScale2 > 255) = 255;

图;imshow (irisImageGrayScale2, [])

约翰D 'Errico

我不知道你做错了什么。下面的测试显示绝对没有问题,任何方法。我测试了稀疏或全部输入。

> > =兰德(100);
> > (rand(100) > 0。5) =南;
> > B = inpaint_nans (3);
> > B = inpaint_nans(稀疏(A), 3);

请给我一个电子邮件用一个例子说明你的问题。

Kaah

伟大的m文件。非常感谢。

当我试着用方法三,我从MATLAB得到这个错误消息:

错误使用= = >稀疏
索引矩阵必须是积极的。

错误= = > inpaint_nans享年291岁
fda = fda +稀疏(repmat (all_list (L, 1), 1、5),…

有人可以帮助解释为什么发生这种情况吗?

克莱尔

谢谢你! ! ! !

迈克尔·沃尔克

Vineet梅塔

非常有用的功能! !
它如果meshgrid不是等间距的工作吗?我想它不会。有什么我能做的来处理这个除了删除数据不平衡的增量和确保n和m等间距的吗?

TAFKARS

好工作,感谢

特雷弗

作品graeat

Venkateswara Rao Narukull

出色的工作……这是我需要什么

托拜厄斯Kienzler

Tannistha

非常感谢,我创建了一个矩阵使用griddata和不知道如何摆脱NaN值

马特彭定康

马特彭定康

绝对完美!

这是我所见过的最有用的功能之一,在文件交换。变量窗口大小就好了,对各种图像处理方法。我将回来,一旦我使用它。

保罗

干得好!

约翰D 'Errico

事实上,它不是重要的矩阵的大小,一样有多少nan填补,和这些南元素的位置。当然,如果您正在运行64位matlab,更大的问题可以处理。使用的方法也将是至关重要的。

我运行一个快速测试与新机器的CPU (R2010b 64位matlab 4核,8 gb ram)相比,我最初写的代码。测试用例是一个1000 x1000数组以50%随机插入南元素——只用了几秒钟为大多数插入方法。

> > (x, y) = meshgrid (1:1000);
> > z = exp ((x + y) / 1000);
> > zap兰德(大小(x)) < = 5;
> > z(攻击)=南;

> >抽搐,愿= inpaint_nans (z, 0), toc
运行时间是8.251664秒。

> >抽搐,愿= inpaint_nans (z, 1), toc
运行时间是6.098041秒。

> >抽搐,愿= inpaint_nans (z, 2); toc
运行时间是2.293744秒。

> >抽搐,愿= inpaint_nans (z, 3); toc
运行时间是35.743856秒。

> >抽搐,愿= inpaint_nans (z, 4); toc
运行时间是3.057140秒。

方法三是最占用很多内存。以前所有的核心,在这个测试中,大约2 g系统内存使用。越密集的方法大大少于1 g的内存测试。在任何情况下,我发现它令人印象深刻,MATLAB是能够解决所需的线性方程组与大约500000未知数的一段时间。

丹尼尔

奇妙的计划。正是我需要的。

什么是最大的二维矩阵inpaint_nans可以处理?

亚历山德拉

科比Svedin

那将是很棒的如果你能这么做。我将非常感谢。

约翰D 'Errico

这将是相当容易重写这一个插值的方法允许一些各种各样的周期性边界条件。但是我认为你真的环形BCs描述的类,不正确的球,当你指出。如果他们是一个适当的近似为你的问题,我将能够发布一个修改版本对于这个特定的问题。

真正的球形BCs两极的问题是所有数组的元素在顶部边缘应该是相同的。我可能实现这样一个公元前虽然通过添加一个幻影节点在每个北极和南极。

科比Svedin

这正是我需要的。谢谢你!

我有一个建议。我地理数据,插值使用这个脚本,然后策划使用meshm和它的工作原理,除了矩阵的左右边缘实际上是同一点在地球上所以我不得不把副本相同的矩阵的左右和旋转拷贝在顶部和底部的插值“环绕”,然后删除这些额外的部分。虽然这工作对赤道周围的数据插值在波兰人是不正确的,因为第一行的方阵实际上是同一点在地上。
所以我的建议(除非已经有方法)是使这个或一个新的项目,将填补nan定位方阵。这将是令人难以置信的有用。

(如果有人知道如何做到这一点,请让我知道)

Raghavendra

乔恩

安德烈Rubshtein

Stefan

你好,我最近开始学习关于修复和我穿过D 'Errico先生的计划,我不得不说这是很酷,试过一些照片我和我的干草堆满意结果。
我需要一些帮助理解基本理论,如何实现椭圆PDE的修复等,如果有人能给我一个提示在哪里我能找到一些书,文件我将十分感激。问候

Stefan

斯图尔特

卡雷尔

兰德尔Lawerence

约翰,我看到你的zip文件如何你想删除方法5。让我做一个反建议:扩大它。我能想到许多邻居的原因和应用程序平均会是有用的。的扩张:嗯,你可以让附近的大小,其方向(前进、后退、中心),和函数(和,的意思是,var,模式,等等)作为附加参数传递。不管怎样,这个函数是非常有用的,我经常用它代替标准Matlab函数。

肯尼斯·伊顿

@Marco,

如果你想要更多的具体信息的方法比帮助文档,你需要深入研究代码本身或约翰解释你。

同时,“谎言”这个词是一个结合动词的“将”,不是一个名词的意义“谎言”。重写我的声明另一个道:“……误解是由于自己的误解。”

肯尼斯·伊顿

@Marco,

你似乎已经完全错过了这个函数的点。它的目的是去除nan出现在一个矩阵,覆盖这些值与邻近插值获得条目。你似乎认为约翰是任意重新定义什么是南…他不是,因为这将是一个愚蠢的浪费时间。他计算的数字nan近似于周围的值替换为许多不同的方法。

只要你有一些错误,约翰可以把错误检查功能,以便更为优雅和便捷的退出。然而,没有理由你将/会进入其中一些参数。例如,进入一个标量南是愚蠢的,因为这个项目没有附近non-NaN元素用于推断替换值。

这个提交当然不值得你给它的低评级,特别是的误解在于自己的误解。

阿兰•波伊尔

诉穷

肯尼斯·伊顿

弗雷德里克Moisy

再次感谢约翰,
正是我需要的。

请TMW:包括在matlab下一版本!

Sherif Abd El-Gawad

谢谢和良好的贡献

E E

评论= [T H N南O U V E南Y M南南H);

[M, N] =大小(评论);
k = 1:长度(米);
评论= inpaint_nans(评论);
结束

评论=
T H N K Y Y O U V E R M U C H

鲍勃领域

神奇的

卡洛斯阿德里安·巴尔加斯·阿奎莱拉

这里有我的五星级…恭喜你,谢谢分享…

d·G。

简单的好。没有要申报的东西。

莎拉·亚历山大

真正地帮助!

马丁kloppel

真的有用

艾米丽Spahn

谢谢你!这正是我希望它会!

阿玛拉

伟大的作品!真的帮了....

马里奥不快

太棒了!

迈克Kadour

只是我在寻找什么!很多谢谢!

伊恩Howat

非常快,谢谢!

拉杰夫斯利瓦斯塔瓦

优秀的工作。

sacrosancttayyar sacrosancttayyar

克里斯·C。

一个非常好的工作。谢谢你!

k . Sturm

做得好!

完全懂得完全懂得

如何处理非矩形区域吗?例如三角形。
我从德劳内孔,你的程序会很有帮助修复这个bug。

京田

太好了!

维维

汤姆Reiser

我爱它!

埃文水

好了!尤其是使用虚拟弹簧方法4。

一致的施瓦兹(美国)

一个非常有用的和精心编码,数据驱动的功能。必须看和学习的人正在与不完整的二维数据集,特别是,肮脏的图片。

MATLAB版本兼容性
创建R10
兼容任何释放
平台的兼容性
窗户 macOS Linux

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

Inpaint_nans /

Inpaint_nans /演示/

Inpaint_nans / doc /

Inpaint_nans /测试/