最小平方法 |
答題得分者是:pgd
|
jenglin
一般會員 發表:45 回覆:32 積分:15 註冊:2006-10-08 發送簡訊給我 |
各位前輩好:
我想做的類似這篇,http://tw.knowledge.yahoo.com/question/?qid=1306020414726,利用方法二, 輸入幾個點的座標,然後找出最接近的直線,呈現在影像上,想請問要怎麼著手?謝謝... |
pgd
一般會員 發表:4 回覆:17 積分:9 註冊:2004-11-10 發送簡訊給我 |
假設影像中像素值255的像素是要擬合直線的點,
M為斜率、B為節距。不知道是不是你要的。 [code cpp] for(int i=0;i if(imgData[i][j]==255) { XY=i*j XY; X=X j; Y=Y i; X2=j*j X2; num=num 1; } } M=(num*XY-X*Y)/(num*X2-X*X); B=(X2*Y-X*XY)/(num*X2-X*X); [/code]
編輯記錄
pgd 重新編輯於 2007-11-27 17:48:37, 註解 無‧
|
jenglin
一般會員 發表:45 回覆:32 積分:15 註冊:2006-10-08 發送簡訊給我 |
不懂您的意思?
===================引 用 pgd 文 章=================== 假設影像中像素值255的像素是要擬合直線的點, M為斜率、B為節距。不知道是不是你要的。 [code cpp] for(int i=0;i for(int j=0;j { if(imgData[i][j]==255) { XY=i*j XY; X=X j; Y=Y i; X2=j*j X2; num=num 1; } } M=(num*XY-X*Y)/(num*X2-X*X); B=(X2*Y-X*XY)/(num*X2-X*X); [/code] |
pgd
一般會員 發表:4 回覆:17 積分:9 註冊:2004-11-10 發送簡訊給我 |
|
jenglin
一般會員 發表:45 回覆:32 積分:15 註冊:2006-10-08 發送簡訊給我 |
|
pgd
一般會員 發表:4 回覆:17 積分:9 註冊:2004-11-10 發送簡訊給我 |
|
jenglin
一般會員 發表:45 回覆:32 積分:15 註冊:2006-10-08 發送簡訊給我 |
|
pgd
一般會員 發表:4 回覆:17 積分:9 註冊:2004-11-10 發送簡訊給我 |
|
jenglin
一般會員 發表:45 回覆:32 積分:15 註冊:2006-10-08 發送簡訊給我 |
|
pgd
一般會員 發表:4 回覆:17 積分:9 註冊:2004-11-10 發送簡訊給我 |
假設我有(1,5),(10,6),(20,4)三個點要擬合一條直線
XY=1*5 10*6 20*4=145 X=1 10 20=31 Y=5 6 4=15 X2=1*1 10*10 20*20=502 num=3 M=-0.05 B=5.57 X是J,Y是I我之前講錯了,反正就是代入式子就OK啦,不知道你是哪邊不懂? 如果是不知道怎麼導出來的話,其實就是誤差平方對M和B偏微分為0,整理式子就會得到以下的結果, 但截斜式不是很好的方法,因為垂直的話就會出現數值問題斜率無窮大。請參考 ===================引 用 pgd 文 章=================== 假設影像中像素值255的像素是要擬合直線的點, M為斜率、B為節距。不知道是不是你要的。 [code cpp] for(int i=0;i for(int j=0;j { if(imgData[i][j]==255) { XY=i*j XY; X=X j; Y=Y i; X2=j*j X2; num=num 1; } } M=(num*XY-X*Y)/(num*X2-X*X); B=(X2*Y-X*XY)/(num*X2-X*X); [/code] |
jenglin
一般會員 發表:45 回覆:32 積分:15 註冊:2006-10-08 發送簡訊給我 |
算M跟B的式子跟我看的不一樣,能否秀一下您程式跑出來的結果?
===================引 用 pgd 文 章=================== 假設我有(1,5),(10,6),(20,4)三個點要擬合一條直線 XY=1*5 10*6 20*4=145 X=1 10 20=31 Y=5 6 4=15 X2=1*1 10*10 20*20=502 num=3 M=-0.05 B=5.57 X是J,Y是I我之前講錯了,反正就是代入式子就OK啦,不知道你是哪邊不懂? 如果是不知道怎麼導出來的話,其實就是誤差平方對M和B偏微分為0,整理式子就會得到以下的結果, 但截斜式不是很好的方法,因為垂直的話就會出現數值問題斜率無窮大。請參考 ===================引 用 pgd 文 章=================== 假設影像中像素值255的像素是要擬合直線的點, M為斜率、B為節距。不知道是不是你要的。 [code cpp] for(int i=0;i for(int j=0;j { if(imgData[i][j]==255) { XY=i*j XY; X=X j; Y=Y i; X2=j*j X2; num=num 1; } } M=(num*XY-X*Y)/(num*X2-X*X); B=(X2*Y-X*XY)/(num*X2-X*X); [/code] |
pgd
一般會員 發表:4 回覆:17 積分:9 註冊:2004-11-10 發送簡訊給我 |
|
jenglin
一般會員 發表:45 回覆:32 積分:15 註冊:2006-10-08 發送簡訊給我 |
我後來是參考簡單線性迴歸,如底下連結,算出M=-0.05,B=5.52,不知道跟您的比較起來,哪個較準確?
http://www.mcu.edu.tw/department/management/stat/ch-paper/eteach/Statistics-3-net/chap24.pdf 另外,方程式y=-0.05x 5.52,程式上要怎麼畫出直線,能不能再解釋一下,感謝您... ===================引 用 pgd 文 章=================== 請問何謂和你看的不一樣,就我的理解,最小平方法的意義就是算出誤差總和最小的直線方程式, 如果你有別的算式,那就把兩個算式的結果帶入點算出誤差,看哪個誤差比較小就代表哪個比較可靠, 另外程式結果就是我算出的M和B,我的結果如下圖,黑色的點是我的輸入,紅色的線就是我算出來的方程式。 |
pgd
一般會員 發表:4 回覆:17 積分:9 註冊:2004-11-10 發送簡訊給我 |
|
jenglin
一般會員 發表:45 回覆:32 積分:15 註冊:2006-10-08 發送簡訊給我 |
|
pgd
一般會員 發表:4 回覆:17 積分:9 註冊:2004-11-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |