作者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/m.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