[SLAM]2D鐳射線特徵提取
Nguyen, V., et al. (2007)."A comparison of line extraction algorithms using 2D range data for indoor mobile robotics." Autonomous Robots 23(2): 97-111.
論文提出了6中從二維鐳射掃描資料中提取線段的方法
1.分割合併演算法
有的時候十分煩那些斜著的連線,實際不是想要的。
2.迴歸方法
先聚類,再回歸
3.累積、區域生長演算法
感覺對噪聲資料真的沒辦法了,窩成一團的點,提取的線十分破碎而且亂...
1 function [ lineSegCoord ] = extractLineSegment( model,normals,intervalPts,normalDelta,dThreshold)View Code2 %EXTRACTLINESEGMENT Summary of this function goes here 3 % Detailed explanation goes here 4 if (nargin == 0) || isempty(model) 5 lineSegCoord = []; 6 return; 7 end; 8 ns = createns(model','NSMethod','kdtree') 9 pts=size(model,2); 10 if (nargin == 3) 11 normalDelta=0.9; 12 dThreshold=0.5; 13 end 14 if isempty(normals) 15 normals=zeros(2,pts); 16 for nor=1:pts 17 [idx, dist] = knnsearch(ns,model(:,nor)','k',2); 18 data=model(:,idx); 19 men=mean(data,2); 20 rep= repmat(men,1,size(data,2)); 21 data = data - rep;22 % Compute the MxM covariance matrix A 23 A = cov(data'); 24 % Compute the eigenvector of A 25 [V, LAMBDA] = eig(A); 26 % Find the eigenvector corresponding to the minimum eigenvalue in A 27 % This should always be the first column, but check just in case 28 [~,idx] = min(diag(LAMBDA)); 29 % Normalize 30 V = V(:,idx)./norm(V(:,idx)); 31 %定向 32 normals(:,nor)=V; 33 end 34 end 35 36 lineSeg=[1;1]; 37 newLineIdx=1; 38 for j=2:pts-1 39 current=model(:,j); 40 pre=model(:,j-1); 41 next=model(:,j+1); 42 curNormal=normals(:,j); 43 preNormal=normals(:,j-1); 44 nextNormal=normals(:,j+1); 45 [d,vPt]=Dist2D_Point_to_Line(current,pre,next); 46 dis=norm(current-pre); 47 delta=dot(curNormal,preNormal)/(norm(curNormal)*norm(preNormal)); 48 if(delta>normalDelta&& d<dThreshold) %注意兩個閾值 49 lineSeg(2,newLineIdx)=lineSeg(2,newLineIdx)+1;%點數 50 else 51 newLineIdx=newLineIdx+1; 52 lineSeg=[lineSeg [1; 1]]; 53 lineSeg(1,newLineIdx)=lineSeg(1,newLineIdx-1)+ lineSeg(2,newLineIdx-1);%起始點索引 54 end 55 end 56 indexLs=1; 57 lineSegCoord=[]; 58 for k=1:size(lineSeg,2) 59 from=lineSeg(1,k); 60 to=from+lineSeg(2,k)-1; 61 if(lineSeg(2,k) > intervalPts) 62 try 63 pts= model(:,(from:to)); 64 coef1 = polyfit(pts(1,:),pts(2,:),1); 65 k2 = coef1(1); 66 b2 = coef1(2); 67 coef2 = robustfit(pts(1,:),pts(2,:),'welsch'); 68 k2 = coef2(2); 69 b2 = coef2(1); 70 ML = true; 71 catch 72 ML = false; 73 end; 74 [D,fPb]= Dist2D_Point_to_Line(model(:,from),[0 b2]',[1 k2+b2]'); 75 [D,tPb]= Dist2D_Point_to_Line(model(:,to),[0 b2]',[1 k2+b2]'); 76 interval=abs(model(1,from) -model(1,to)); 77 if(interval>0.05) 78 x = linspace(fPb(1) ,tPb(1), 5); 79 if ML 80 y_ML = k2*x +b2; 81 lineSegCoord=[lineSegCoord [fPb(1) fPb(2) tPb(1) tPb(2)]']; 82 plot(x, y_ML, 'b-', 'LineWidth', 1); 83 end; 84 else 85 y = linspace(fPb(2) ,tPb(2), 5); 86 if ML 87 x_ML =(y-b2)/k2; 88 lineSegCoord=[lineSegCoord [fPb(1) fPb(2) tPb(1) tPb(2)]']; 89 plot(x_ML, y, 'b-', 'LineWidth', 1); 90 end; 91 end; 92 % try 93 % tmpPts= model(:,(from:to)); 94 % Theta_ML = estimate_line_ML(tmpPts,[], sigma, 0); 95 % ML = true; 96 % catch 97 % % probably the optimization toolbox is not installed 98 % ML = false; 99 % end; 100 % interval=abs(model(1,from) -model(1,to)); 101 % if(interval>10) 102 % x = linspace(model(1,from) ,model(1,to), 5); 103 % if ML 104 % y_ML = -Theta_ML(1)/Theta_ML(2)*x - Theta_ML(3)/Theta_ML(2); 105 % lineSegCoord=[lineSegCoord [x(1) y_ML(1) x(5) y_ML(5)]']; 106 % plot(x, y_ML, 'b-', 'LineWidth', 1); 107 % end; 108 % else 109 % y = linspace(model(2,from) ,model(2,to), 5); 110 % if ML 111 % x_ML = -Theta_ML(2)/Theta_ML(1)*y - Theta_ML(3)/Theta_ML(1); 112 % lineSegCoord=[lineSegCoord [x_ML(1) y(1) x_ML(5) y(5)]']; 113 % plot(x_ML, y, 'b-', 'LineWidth', 1); 114 % end; 115 % end; 116 end 117 end 118 end
4.Ransac方法
5.霍夫變換方法
6.EM方法
相關推薦
[SLAM]2D鐳射線特徵提取
Nguyen, V., et al. (2007)."A comparison of line extraction algorithms using 2D range data for indoor mobile robotics." Autonomous Robots 23(2): 97-111. 論文
霍夫變換鐳射線中心提取(基於opencv)
平臺: VS2017 C++ OPENCV3庫 效果: 原圖 結果: 原圖: 結果: 步驟: 1.圖片預處理,引數可以自己調整 //邊緣檢測 Canny(srcImage, dstImage, 210, 250, 3); //灰度化 cvtCo
[SLAM]2D鐳射掃描匹配方法
1.Beam Model Beam Model我將它叫做測量光束模型。個人理解,它是一種完全的物理模型,只針對鐳射發出的測量光束建模。將一次測量誤差分解為四個誤差。 $ph_{hit}$,測量本身產生的誤差,符合高斯分佈。 $ph_{xx}$,由於存在運動物體產生的誤差。 ... 2.Likeho
特徵提取、匹配以及位姿計算(2D-2D)--參考視覺SLAM十四講7.4
#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/features2d/features2d.hpp> #include <opencv2/h
2D鐳射SLAM演算法比較+cartographer
Hector slam: Hector slam利用高斯牛頓方法解決scan-matching問題,對感測器要求較高。 缺點:需要雷達(LRS)的更新頻率較高,測量噪聲小。所以在製圖過程中,需要robot速度控制在比較低的情況下,建圖效果才會比較理想,這也是它沒有迴環(l
鐳射雷達學習筆記(三)特徵提取
鐳射雷達獲取的資訊是和周圍物體之間的距離資訊,在移動機器人尤其是自主移動機器人領域具有非常廣泛的應用,那我們就從移動機器人的自主導航開始聊吧。 移動機器人導航是指移動機器人依靠感測器在特定環境中,按時間最優、路徑最短或能耗最低等準則實現從起始位置到目標位置的無碰撞運動。 傳統的移動機器人導航問題包含三大要素
解析京東大資料下高效影象特徵提取方案
本文主要分享英特爾和京東在基於Spark和BigDL的深度學習技術在搭建大規模圖片特徵提取框架上的實戰經驗。 背景 影象特徵提取被廣泛地應用於相似圖片檢索,去重等。在使用BigDL框架(下文即將提到)之前,我們嘗試過在多機多GPU卡、GPU叢集上分別開發並部署特徵抽取應用。但以上框架
特徵提取使用已有的卷積基(VGG16)訓練微型模型
程式碼是《Python深度學習》上的,自己敲一遍看看,我自己的聯想拯救者跑起來都比較慢,GPU will be better! # -*- coding: utf-8 -*- """ Created on Tue Oct 30 22:04:30 2018 @author: Lxiao217 "
特徵提取與檢測(二) --- SIFT演算法
SIFT(Scale-invariant feature transform)是一種檢測區域性特徵的演算法,該演算法通過求一幅圖中的特徵點(interest points,or corner points)及其有關scale 和 orien
基於OpenCV的Gabor變換及特徵提取
一、Gabor變換概述 Gabor變換是一種加窗短時Fourier變換(Window Fourier transform or Short Time Fourier Transform)。Fourier變換是整體上將訊號分解為不同的頻率分量(任何訊號都可分解為復正弦訊號之和)
影象處理之特徵提取
知乎上看到一個話題——目前火熱的 Deep Learning 會滅絕傳統的 SIFT / SURF 特徵提取方法嗎? 由於之前研究過SIFT和HOG這兩種傳統的特徵提取方法,故本篇文章先對SIFT和HOG作一綜述,並比較二者優缺點。之後,將SIFT和HOG同神經網路特徵提取做一對比,淺談對上
影象特徵提取 by OpenCV
SITF特徵提取和描述 影象的區域性特徵,對旋轉、尺度縮放、亮度變化保持不變,對視角變化、仿射變換、噪聲也保持一定程度的穩定性。 獨特性好,資訊量豐富,適用於海量特徵庫進行快速、準確的匹配。 多量性,即使是很少幾個物體也可以產生大量的SIFT特徵 高速性,經優化的SIFT
ORB特徵提取詳解
轉自:https://blog.csdn.net/zouzoupaopao229/article/details/52625678 網上雖然出現了很多講解ORB特徵提取和描述的方法,但都不夠詳盡。為了搞明白到底是怎麼回事,只能結合別人的部落格和原著對ORB的詳細原理做一個研究和學習。哪裡有不對的
SURF特徵提取分析
讀“H.Bay, T. Tuytelaars, L. V. Gool, SURF:Speed Up Robust Features[J],ECCV,2006”筆記 SURF:Speed Up Robust Features,加速魯棒特徵。 我覺得SURF是SIFT特徵的一種近似計算,在相似效
【ECG理論篇】(3)AI實現心律失常判別:心電訊號的波形識別與特徵提取
心電圖中的各個波形都包含了非常多的資訊,例如RR間期可以反映心動週期的時限;相鄰心動週期的 RR 間期的比值可以反映室性早搏;R 波和 S 波幅值的比值和 R 波和 S 波之間的時限可以反映房性早搏等異常情況,等等 所以識別這些波形以及提取相應特徵對我們後續做心律失常的分類很重要。
深度學習與計算機視覺(PB-03)-特徵提取
從這節開始,我們將討論關於遷移學習的內容,即用預先訓練好的模型(往往是在大型資料上訓練得到的)對新的資料進行學習. 首先,從傳統的機器學習場景出發,即考慮兩個分類任務: 第一個任務是訓練一個卷積神經網路來識別影象中的狗和貓。 第二個任務是訓練一個卷積神經網路識別三
低層次(基於畫素之間的)特徵提取概述
低層次(基於畫素之間的)特徵提取概述 2013年12月18日 13:33:52 松子茶 閱讀數:7298更多 所屬專欄: 特徵提取 版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/utimes/article
基於Python的卷積神經網路和特徵提取
基於Python的卷積神經網路和特徵提取 發表於2015-08-27 21:39| 4577次閱讀| 來源blog.christianperone.com/| 13 條評論| 作者Christian S.Peron 深度學習特徵提取神經網路Pythonnolea
特徵提取演算法提取二進位制後面的特徵資料,使用Java流實現
幫別人解決一個問題:在搞圖片特徵相似度檢索的東西,特徵提取演算法提取出來的二進位制特徵資料,想要讀取二進位制檔案的每一行固定位之後的資料有啥好的辦法沒? 首先讀取二進位制檔案,考慮到使用位元組流,但是不能解決如何判斷換行的問題,綜上,本人是先使用BufferedReader流讀取一行的資料,
Sklearn常用特徵提取和處理方法
1、將分類變數轉換為數值編號,才可以被處理 import pandas as pd import numpy as np from sklearn import preprocessing 用LabelEncoder對不同的犯罪型別編號 leCrime