[問題] opencv CvLevMarq使用方式

作者: wohc (出征)   2015-08-13 17:48:49
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VS2008
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
opencv
問題(Question):
我想對一些資料進行curve fittingu,首先我使用一般的LSE方法去fit
curve function 使用 y=a*exp(-1*pow((x-b)/c,2))
只是這樣的精確度不是太高,所以現在想改用2個guass function來fit
不過兩個高斯function,就不太容易轉成多項式
所以現在想使用opencv的CvLevMarq來fit,但是苦於看不懂如何使用
假設我有input X, output Y 長度n
curve function y=a1*exp(-1*pow((x-b1)/c1,2))+a2*exp(-1*pow((x-b2)/c2,2))
6個係數
請教若以這些資料來進行curve fitting的話,我要如何在CvLevMarq上應用
ps.我知道使用高階的多項式可以讓精度高一點,只是想學習一下opencv的用法
作者: Feis (永遠睡不著 @@)   2015-08-13 18:26:00
所以你知道 Levenberg–Marquardt 在幹嘛嗎?Wiki 講的你都知道了 ?如果知道的話應該就是用 update 迭代而已
作者: wohc (出征)   2015-08-13 22:48:00
大概知道,就是一直修正誤差直到最佳化本來想自己寫的,無奈腦袋不好看了兩天還不是很懂只好先用opencv來試試看
作者: Feis (永遠睡不著 @@)   2015-08-13 22:52:00
那 Jacobian 會填嗎?
作者: wohc (出征)   2015-08-13 22:53:00
會的,之前有試過自己寫GaussNewton
作者: Feis (永遠睡不著 @@)   2015-08-13 23:10:00
那你還缺甚麼?或者你看一下 stitching 裡面怎麼用的?https://goo.gl/3wYjuw 209 行?
作者: wohc (出征)   2015-08-13 23:17:00
我主要是想知道參數接口代表的意義
作者: Feis (永遠睡不著 @@)   2015-08-13 23:19:00
文件不是有寫? 就目前的位置跟 Jacobian 還有目前的誤差(你要 fit 的參數們, Jacobian, 目前的誤差們)
作者: wohc (出征)   2015-08-13 23:22:00
嗯,謝謝,我明天再試看看。最終目的我還是得自己寫一個出來
作者: Feis (永遠睡不著 @@)   2015-08-13 23:22:00
要 fit 的參數你的例子就是 a1, b1, c1, a2, b2, c2誤差們就看你有幾個資料點就有幾個誤差
作者: wohc (出征)   2015-08-13 23:26:00
謝謝,update()的我大概知道,CvLevMarq solver(),這裡頭的
作者: Feis (永遠睡不著 @@)   2015-08-13 23:26:00
裡面的你用不到阿? @@
作者: wohc (出征)   2015-08-13 23:27:00
三個參數? 該為何? param 是我要先自行定義一組初始值嗎?
作者: Feis (永遠睡不著 @@)   2015-08-13 23:28:00
沒錯啊. 這是 LM 阿阿阿. 初始值最重要. 重開 Wiki ~
作者: wohc (出征)   2015-08-13 23:30:00
了解,明天再試看看了。其實我很想call matlab就一了百了
作者: Feis (永遠睡不著 @@)   2015-08-13 23:31:00
就 call 阿. 這種事情我也做過另一個選擇是 sparseLM
作者: wohc (出征)   2015-08-13 23:31:00
只是因為某種因素,只能自己寫一個出來
作者: Feis (永遠睡不著 @@)   2015-08-13 23:32:00
原理很簡單. 但是不好刻. sprase 的會想自殺
作者: wohc (出征)   2015-08-13 23:35:00
高斯牛頓比較簡單,只是效果不是很好 (Jt*J).inv*Jt*r
作者: Feis (永遠睡不著 @@)   2015-08-13 23:36:00
感覺 dense 難度差不多阿.就是一堆矩陣相乘而已. 效率瓶頸
作者: wohc (出征)   2015-08-13 23:37:00
難度就差在我一個寫得出來一個寫不出來
作者: Feis (永遠睡不著 @@)   2015-08-13 23:38:00
本質上就是多乘上一個 Jacobian 的轉置而已只是牛頓法可以當作沒矩陣這回事

Links booklink

Contact Us: admin [ a t ] ucptt.com