作者fxxkjoe1231 (鲁到入味)
看板MATLAB
标题[讨论] griddata建立查找表
时间Sun Jan 12 21:34:40 2020
大家好,小弟目前手边有两张同一景色在不同空气品质下所拍摄的灰阶影像,
其中空气乾净者为A,严重污染者为B。
目前已知乾净灰阶为污染灰阶与特定种类污染浓度的函数DN_clean(DN_dirty,con_tp),
因此可用模式在给定DN_dirty与con_tp范围的情况下跑出DN_clean并以此建立查找表,
并透过A与B影像找出某类污染假设下的浓度空间分布C_1~3(三类污染物):
C_n=griddata(DN_dirty(:), DN_clean(:), con_n(:),...
B(:), A(:));
取得各类污染物浓度空间分布後,理论上可再配合污染影像B来重建乾净影像A:
A_n=griddata(DN_dirty(:), con_n(:), DN_clean(:),...
B(:), C_n(:));
在不同污染物假设下重建的A-n之间及与原始A应极为相似,
顶多有些许微小数值上的差异,但我实际跑出来却相差甚大,三种污染类型假设下,
仅一种所重建的A与原始A相近,另外两种为显着高估及低估灰阶。
想请问版上各位,是否我在griddata使用上或是理解上有误?
同时我也用过scatteredInterpolant进行同样的操作,但结果与目前一致,
问题出在哪部分?谢谢大家
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.137.49.250 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1578836082.A.A64.html
1F:→ name0625: 是c-n还是c_n?code的部份 01/13 01:54
2F:→ fxxkjoe1231: 不好意思,没有标示清楚,文中A-n与C-n中间应为底线 01/13 09:25
3F:→ fxxkjoe1231: ,表在第n种污染假设下所重建的影像A或是污染浓度C, 01/13 09:25
4F:→ fxxkjoe1231: 实际code我这部分是采回圈存在cell array中 01/13 09:25
5F:→ name0625: 程式用法应该没错,我倾向是数学上的问题 01/13 20:18
6F:→ name0625: 可能要再检视一下理论吧?B不会同时有多种污染源吗? 01/13 20:18
n大好,其实基於特定污染物种类下所做出的浓度只是一个等效而非绝对值,
当遇到比现有假设消光程度更大的污染物,则反映到其等效浓度上会变大,反之亦然。
目前就卡在若不考虑其物理意义,只单纯从查找表来讲,
DN_dirty、con_n、DN_clean三者关系确立,则A、B、C中只要确定两者则可推断出剩者,
而先从A、B推得C_n,则若由B与C_n则可得A_n,A_n与A理论上应该是非常相似,
所以我才会认为是否是在函式应用上的问题
※ 编辑: fxxkjoe1231 (36.224.62.28 台湾), 01/14/2020 01:17:07
7F:→ name0625: 啊,太久没摸,突然想起来,你应该用ndgrid生成数值再 01/14 01:37
8F:→ name0625: 丢 01/14 01:37
9F:→ name0625: meshgrid也可以 01/14 01:39
n大好,不太了解要用到ndgrid的意思,案例中用是想要显示离散点所构成的平面,
而我只是要找出面上对应点的值,应该是不会用到ndgrid,
而且也只有DN_dirty与con_n(:)可形成网格
※ 编辑: fxxkjoe1231 (36.226.107.75 台湾), 01/16/2020 21:36:40
11F:→ name0625: 所以你的DN_dirty, DN_clean, con_n本来就是二维的吗? 01/16 23:51
12F:→ name0625: 如果这三个本来就是二维的表,那你的程式可以不用(:) 01/17 00:12
13F:→ name0625: 也不用ndgrid,不过(:)不影响结果 01/17 00:12
14F:→ name0625: 所以问题应该真的在数学方面了 01/17 00:12
透过模式计算DN_clean=f(DN_dirty, con_n)可得散布点建立这三组数据关系,
其中DN_dirty, con_n为网格资料。
只是目前手边能够进行查找的资讯在第一步中要先藉B(DN_dirty)、A(DN_clean),
求出对应C_n(con_n),再以B与C_n找出A。感觉概念没问题,
但查找出来的值就是明显有误
※ 编辑: fxxkjoe1231 (36.226.107.75 台湾), 01/17/2020 01:27:14
15F:→ name0625: 你有用公差够小的DN_dirty, con_n等差数列,产生出二维 01/17 02:39
16F:→ name0625: 的DN_clean表吗? 01/17 02:39
17F:→ name0625: 我说的数学上的问题不是指你反推的概念,是这公式有没 01/17 02:39
18F:→ name0625: 有其他变因、或是数学计算上让二维内插出现误差的可能 01/17 02:39
19F:→ name0625: 我也觉得反推应该没问题,指令用法也没啥问题,对这应 01/17 02:45
20F:→ name0625: 用不熟,只能猜到这样而已 01/17 02:45