日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

第一章:点云中的滤波问题---Filters

發布時間:2023/11/27 生活经验 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第一章:点云中的滤波问题---Filters 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

濾波的范圍非常的廣泛,像噪聲去除,降采樣,上采樣,平滑等等都可以叫做濾波。

上采樣是一個比較罕見的東西,上采樣就是沒有的東西我把他創造出來,就是創造信息,其實是不可以創造信息的,只是說經過已有的信息,怎么去估算未知的地方可能的信息。如上圖,就是對激光雷達的圖進行了一個上采樣,最上邊的一層是吧激光雷達的圖投影到了圖像上,可以看到一些很小的很稀疏的點,但是他沒有辦法把每一個像素都填滿,比如我們在做多傳感器融合的時候我們希望圖片上的每一個像素都能夠帶一個深度,這樣圖片所攜帶的信息就非常的豐富了,比如說既有深度,又有紋理(RGB嘛),但是激光雷達的點那么稀疏,我們怎么把他變的稠密一點呢?其中一個方法就是Bilateral Filter(雙邊濾波)。

上圖中BF就代表了使用雙邊濾波對點云做上采樣的結果(可以看出他并不是完美的,從圖中可以看出這個電線桿子經過BF之后就變粗了很多,但是也有一些非常好的地方,比如說車的輪廓被保存的非常的好)。上圖中還使用了一些MED(median filtering中值濾波)。以及AVE(平均值濾波)等等。

(1)Radious Outlier Removal

在一定的鄰域半徑范圍內,鄰域點的個數是否滿足一定的數量。其中不包括本身。比如說下圖半徑范圍內鄰域點數量小于2的點去除掉,那么圖中黃色的點和綠色點都會被去除掉。

劃定半徑為r的鄰域,然后去數一下里面有多少個點。

(2)Statistical Outlier Removal

對于每一個點找到鄰域之后,算一下每一個鄰居距離我自己有多遠,記做,就是我自己這個點,就是他的鄰居,在一個半徑為r的鄰域的鄰居。然后算一下這個集合的平均值還有方差標準差,對一個點都計算一下這個統計數值,就可以知道平均下來我這個鄰域里邊的應該是什么樣子的;統計完之后我們再過一遍所有的點,就是每一個我們還是找他半徑為r的鄰域,如果他的鄰居的距離大于就表示這個鄰居距離我太遠了,就可以去掉。

(3)Voxel Grid Downsampling(降采樣的方法1)

降采樣最主要的目的就是降低點的數量,使得我們在后續處理時需要用到的算力更加的少。

以二維舉例,先把二維的空間劃分成一模一樣的均等的格子,比如說左邊就劃分為1個格子,那么這么多點中我就只選擇了1個點,那么這么多的點我就降采樣之后就變成為了1個點;或者我們也可以選擇選擇更好的分辨率,比如說每一個格子長度更小,所以右邊是劃分為4個格子,每一個小格子里邊我就選擇1個點,那么這些點就被降采樣成為了4個點。

Q1:就是左邊劃分為1個格子的時候,我們怎么選擇這1個格子內的一個點呢?比如說我是隨便選一個點呢?還是選擇平均值呢?

A:這兩種方法都可以,要么是隨便選擇一個點,要么是選擇平均值。

第一個方法是平均值或者voting:對于坐標點比如XYZ我們可以求平均值;但是有一些點我們不能求平均值,比如說有的點他都有一個標簽,比如說這個點是屬于一個人的點或者說是屬于一個車的點,這個時候就不能求平均值,所以對于這些不能求平均值的點,我們會去做一個投票之類的操作。所以這個方法就是選擇平均值或者做voting,他會更加精確的去描述這個方框內的內容,但是代價就是比較慢。

第二個方法就是隨便選擇一個。

從h=0這個格子里邊的4個點是按照平均值選擇點還是隨機選擇取決于你是要速度還是準確度。

從二維直觀的理解h計算的由來。

Q2:我們怎么樣使得降采樣的過程在實現的時候更加的高效?

上述的Voxel算法,需要排序,如果幾個數據中點非常多,那么復雜度就會很高。為了加快速度我們可以使用這一個特性,就是空間中大部分的空間是沒有點的,所以如果我們使用Voxel算法建立一個Voxel Graid的話,其實很多個Voxel中說是沒有點的;比如說我們有一萬個點,而且我們假設知道做完降采樣之后點數會小于100,比如說95個,假設存在一個非常神奇的函數,這個神奇的函數可以將這1萬個點映射到100個容器里邊去,然后我們只需要從這100個容器里邊去取出非空容器里邊的點就好了,但是前提是我們有這樣一個神奇的函數,這個神奇的函數實現了降采樣的過程,把100個點變成了95個點,放在了100個容器里邊去,那么如果這個神奇的函數是完美的話,那么我就有95個容器是非空的,有5個是空的,我只要取出這95個就OK了。?? 這個神奇的函數我們可以使用Hash Table(哈希表)來模擬這個神奇的函數。

下面是近似的降采樣(不需要做N*logN的排序,所以速度會快),為了降低復雜度。近似降采樣使用的不多。

整體思想就是1萬個點劃分為100個格子,但是有5個格子是空的,有95個格子里邊是有點的。

前邊4步跟普通的降采樣是一模一樣的,第一步算最大最小值,選出一個最大的框。第二個選出分辨率;第三步算一下Voxel Grid每一個方向上的格子的數量;第四步算每一個點在這個voxel Grid上的什么位置,也就是h;第五步定義一個哈希函數去把h或者說是、、這三個方向上的h把它映射成一個數字,這個數字代表了這個容器的位置,比如上述說的我有100個容器,有1萬個點,那么我需要一個哈希函數把一萬個點每一個點映射到這100個容器里邊的其中一個。一個常用的哈希函數就是我把h去一下他對于我容器數量的余數,%是求余數的函數,通過這個哈希函數我可以保證最后出來的這個數值是小于等于這個容器的數量,也就是說我出來的一定是小于等于100的。我就可以把這個數值用來指代我是選擇的哪一個容器。

發現沖突之后我就把原來的點都清理出去,然后就把這個容器給騰空了,來放我新來的h。

近似的降采樣不需要做N*logN的排序,所以速度會快;當然會出現沖突的問題,所以他出來的點會比普通的Voxel Grid Downsample更多,因為他會出現沖突,沖突之后我就要騰位置,有可能我會多放出來一些點作為我的輸出。

(4)Farthest Point Sampling(FPS)(降采樣的方法2)

思想:是想找一些點,使得這些點之間的距離越遠越好。第一步是隨便選擇一個點作為我降采樣的輸出,作為第一個點;第一個點選出來之后算一下剩下的點距離我隨機選的這個點距離最遠的點,作為第二個點。之后再算一下剩下的點中離選出來的兩個點中的距離有多遠,挑選一個點這個點距離已選出來的兩個點的距離是最遠的,作為選出來的第三個點。之后依次挑選點,使其距離已選出來的紅色的點的距離是最遠的。

這個方法可以把一些密度非常大的一些點的地方的點給去掉,因為每次保留的都是距離比較遠的點。這個方法FPS最常用的地方其實是在深度學習里面,很多的方法都會使用FPS處理一下輸入的點云。

(5)Normal Space Sampling(NSS)(降采樣的方法3)

如下圖想實現的是求1和2之間的旋轉平移矩陣,但是又不想加大運算量使用那么多的點,這個時候如果只是簡單的使用Voxel Grid的話就會很可能造成中間凹下去的部分沒有采樣到點,選到的所有的點都是在1和2之間平滑上的點,那么,這樣就沒有辦法把1和2對齊起來,因為中間凹下去的部分已經不見了,所以在做ICP怎么對齊兩個點云的時候通常會使用一些特殊的降采樣的方法,比如NSS方法,他就會更多的把采樣的重心放到這些法向量不同的空間上邊去。

具體方法:

第一步:先在法向量的空間里邊去建立一堆的容器,比如說12點鐘方向是一個容器,1點鐘方向是一個容器,一直把這個空間分成很多個在法向量上的格子;

第二步:把所有的點都遍歷一下,把所有的點都丟進去這個容器,丟進去是根據的自己的法向量。

第三步:在每一個容器里邊都挑選同等數量的點,比如說我在12點鐘方向選擇10個點,在1點鐘方向也選擇10個點,那么這樣就保證了不關我這些點是擁有什么樣的法向量,他都會最終的出現在我降采樣的結果空間里邊去,不會出現像上述情況這些凹進去的點全部都被漏掉的現象。

PS:至于方向的劃分可以預先定義一個方向,讓每一個點的法向量與該預定義方向做對比,進行劃分。(本人預定義的是垂直方向)

(6)基于深度學習的方法進行降采樣(降采樣的方法4)

6.1Laerning to Sampling:(第一個應用降采樣)

輸入的點就是這個A或者B,然后中間經過一個神經網絡(S-NET)(上述提到的Voxel Grid或者NSS其實就是一些函數輸入是一堆點輸出是降采樣之后的點,這個時候不用這些降采樣的函數,他使用的是神經網絡替代我們所有的算術運算),這個神經網絡的輸出就是一些降采樣的點,輸入這些降采樣的點(假如有5個點)之后再把這些點輸入進一個分類網絡里邊去,分類網絡對于形狀為A的點的輸入,他的輸出也應該是這個點云他的標簽是A,同時也要求經過降采樣之后的5個點輸進去同樣一個網絡,他也要得出同樣的結論說這5個點是屬于字母A,所以這就是神經網絡獲取降采樣點的方法,之前使用Voxel等做降采樣的方法基本上都是基于幾何空間來做降采樣即希望我降采樣之后的點均勻分布在原來的空間里邊,不管怎么都是幾何空間;但是在神經網絡的這里的方法,他不涉及幾何空間,而是基于語義的。比如說這里的Task Network是一個分類網絡的話,我只是希望我降采樣之后的點還是能夠得到同樣標簽的,所以在這種訓練模式下這些降采樣之后的點就會盡量的去放在一些比較有特征的地方,比如說A的話可能會選擇這些角點 其中也用到了幾何信息,希望降采樣之后的點G,他會盡量的去靠近原有的點P,不然的話因為神經網絡他是不可控的,如果我們不給任何的幾何的限制那么有可能神經網絡給出降采樣的點就是兩個點,但是并不是我們想要的結果。我們希望經過降采樣之后的點還是靠近原來的點,所以加了一個基于幾何的約束。

(2)表示對于任何一個在我降采樣完了之后的點的地方,我都要找一個離他最近的在原來點集里面的點。

(4)是反過來的,對于任何一個在原來點集里邊里面的點我都希望有一個降采樣完了之后的點離他比較近,所以公式(2)+(4)=Chamfer loss就是如何使得兩個點云在幾何空間上是相近的,也就誰說兩個點云長的差不多,就可以使用chamfer loss去描述。

Chamfer loss參考鏈接:https://blog.csdn.net/weixin_42894692/article/details/106148094?

PS:(這就是learning to sampling文章的思路,他不是通過幾何的關系來找出這些降采樣點,而是通過語義分析來找降采樣的點)

6.2Laerning to Sampling:(第二個應用重構)

比如說原來的椅子如1,然后對其進行降采樣為2或者3,我根據降采樣之后的點來重新構建出來一個椅子,如果這個椅子跟我之前的椅子比較相近的,就是一個比較好的結果。

NRE來描述重構的點云和原來點云之間的差異。

(7)上采樣

Bilateral Filter(既可以作為降采樣也可以作為上采樣)

參考鏈接:https://www.cnblogs.com/cheermyang/p/6637186.html

Edge Preserving Blurring(邊緣保持模糊)

參考鏈接:https://blog.csdn.net/zhaoyin214/article/details/102714697

比如上圖我有一張圖片,里面有一個亭子,想要對他做一個模糊,就是使用一個高斯核應用到一個圖片上(把一個高斯核應用到一個圖片上就是說比如說我選取一個像素A點,然后我選取A點他周邊一個區域,然后把這個點這個像素的RGB數值替換成他周圍這個鄰域的像素加權平均,這個加權里邊的權重就來自于這個高斯核,我在這里畫一個高斯核,離他近的像素給他更高的權重,離他更遠的我就給他一個低一點的權重),那么這個時候我的高斯核選擇的越來越肥的話,就是每個點我受到遠處點的影響會越來越大,那么這時候所有的邊緣都會模糊,再大到都看不清里邊是什么了。

那么有沒有什么辦法做一個模糊或者說做一個平滑,但是這個平滑是能夠保持我物體的邊緣的呢?如下圖模糊只是把一些細節給去掉了,大的結構并沒有被改變,經過了4次(4 iteration)模糊操作雖然樹木已經變得非常模糊,但是亭子的輪廓還是比較清楚的。怎么實現邊緣的保護和保留呢?我們就可以使用Bilateral Filter(因為他的高斯核不是一個,而是2個高斯核所以叫做Bilateral)。

是一個非常標準的高斯函數,均值為0,標準差是。然后對于任何一個像素點p,需要給他一個鄰域,把這個鄰域標記為s,就是p點的一個鄰域s,s里邊的每一個像素把它記做q,然后把p的像素替換成q的加權平均。根據距離分配權重(幾何空間上的像素核),根據兩者顏色相似度來分配,如果q的顏色和p非常的相似,那么我就放一個高的權重;前邊還要加一個標準化的參數Wp;這樣下來的效果就是如果有一個像素q,它距離p很遠,顏色也不想相似,那么分配的兩項權重就會很小,乘起來的數值就會更小,那么所以他對于p的影響就會很小。

--------------在做傳感器融合的時候,我們希望不同傳感器得到的數據是在表達形式上是類似的,而激光電云他的點是稀疏的,而圖像和像素是稠密的,所以當我們把激光電云的點投影到圖片上就會出現很多像素是沒有深度信息的,如何把這個深度信息補全,有很多的方法,在kitti上有一個數據集是專門用來做深度補全的,當然刷榜的還得是深度學習。這里使用的是雙邊濾波,為什么不直接使用高斯濾波呢?在用雙邊濾波的時候可以考慮到顏色信息,因為電線桿和后邊墻壁的顏色不一樣,而高斯的話電線桿和墻壁在深度上其實差距的很遠,但是在圖片上他們是相近的,如果要補全建筑墻壁上的一個深度,如果直接用高斯濾波就會找到這個電線桿上的點,就用很近的點的深度信息去賦予到很遠色的建筑上邊去這是錯的,所以在用雙邊濾波的時候就會考慮到顏色信息,結果會更好。?

?

?

?

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的第一章:点云中的滤波问题---Filters的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。