資源簡介
最近學習RANSAC算法,自己做的一個實驗。如果數據集包含有誤差點,用最小二乘法擬合的模型會有問題,應該先剔除誤差點,然后求模型。用的二維點,MATLAB實現,僅供參考。
代碼片段和文件信息
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%局外點符合模型的有多少通過點到線的距離來判斷%%%%%%%%%%%%%%%%%%%%%%%%%
%Consensus_Setx?????原來的x局內點
%Consensus_Sety?????原來的y局內點
%Maybe_outliersx????x局外點
%Maybe_outliersy????y局外點
%line_vec???????????直線的系數
%point_line_dis?????點到直線的距離閾值
function?[Re_Consensus_Set2dRe_Consensus_Set3d]?=?AgreeWithModel(Consensus_SetxConsensus_SetyMaybe_outliersxMaybe_outliersyline_vecpoint_line_dis)
Consensus_Set_temx?=?Consensus_Setx;????????????????%臨時變量進行保存
Consensus_Set_temy?=?Consensus_Sety;
[mn]?=?size(Maybe_outliersx);
for?i=1:m
????distem?=?abs(line_vec(11)*Maybe_outliersx(i1)+line_vec(12)-Maybe_outliersy(i1))/sqrt(line_vec(11)^2+1);???????????%判斷點到直線的距離
????if?(distem?????????Consensus_Set_temx?=?[Consensus_Set_temx;Maybe_outliersx(i1)];
????????Consensus_Set_temy?=?[Consensus_Set_temy;Maybe_outliersy(i1)];
????end
end
Re_Consensus_Set2d?=?Consensus_Set_temx;
Re_Consensus_Set3d?=?Consensus_Set_temy;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1442??2015-03-25?14:53??ransactest\AgreeWithModel.asv
?????文件???????1030??2015-03-25?15:48??ransactest\AgreeWithModel.m
?????文件????????423??2015-03-25?08:15??ransactest\NumInVec.m
?????文件??????28264??2015-03-31?08:53??ransactest\QQ截圖20150331085255.png
?????文件???????1707??2015-03-25?08:18??ransactest\RandomNData.asv
?????文件???????1704??2015-03-25?15:18??ransactest\RandomNData.m
?????文件???????1228??2015-03-25?15:03??ransactest\Ransac_test.asv
?????文件???????1854??2015-03-31?08:46??ransactest\Ransac_test.m
?????文件????????120??2015-03-31?08:16??ransactest\說明.txt
?????目錄??????????0??2015-03-31?08:53??ransactest
-----------?---------??----------?-----??----
????????????????37772????????????????????10
- 上一篇:時間序列ARMA模型源代碼
- 下一篇:菲涅爾衍射仿真matlab程序
評論
共有 條評論