RM新时代网站

后處理濾波簡(jiǎn)介

1. Filter 是什么

Filter(濾波器)是 OrbbecSDK v2 提供的后處理模塊,用于對傳感器輸出的原始幀進(jìn)行處理,常見(jiàn)用途包括:

? 去除深度圖中的噪聲和空洞

? 對深度圖進(jìn)行空間/時(shí)序平滑

? 對圖像進(jìn)行下采樣,降低分辨率以減少數據量、提升后續處理性能

? 將深度流與彩色流進(jìn)行軟件方式對齊

? 轉換幀的像素格式

? 生成點(diǎn)云數據

? 注意:Filter 不只針對深度流(Depth),部分 Filter 適用于彩色流(Color)或紅外流(IR),使用時(shí)請注意各 Filter 的適用流類(lèi)型。

 

2. 兩種使用方式

方式

說(shuō)明

適用場(chǎng)景

直接創(chuàng )建 Filter

明確指定要使用哪個(gè) Filter,自行設置參數

需要精細控制,定制化場(chǎng)景

推薦 Filter 列表

通過(guò)指定 Sensor 獲取,SDK 針對該   Sensor 的流類(lèi)型返回推薦的 Filter 組合,只能處理對應流類(lèi)型的幀

快速集成,通用場(chǎng)景

? 提示:不確定設備支持哪種?不確定選哪種?建議先從“推薦 Filter 列表”入手,能快速跑通;需要定制時(shí)再使用“直接創(chuàng )建”。

 

3. 全部 Filter 速查表

Filter 名稱(chēng)

適用流

用途簡(jiǎn)介

類(lèi)型

PointCloudFilter

Depth   / Depth+Color

將深度幀轉換為 XYZ 點(diǎn)云,或將深度+彩色幀轉換為 RGBD 點(diǎn)云(XYZ+RGB)

變換類(lèi)

Align

Depth   + Color

通過(guò)軟件方式將深度流與彩色流進(jìn)行空間對齊

變換類(lèi)

FormatConvertFilter

Color   / IR

像素格式轉換(如 MJPG→RGB、YUYV→BGR 等)

變換類(lèi)

DisparityTransform

Depth

深度圖與視差圖之間的互相轉換

變換類(lèi)

SequenceIdFilter

Depth   / IR

按幀序列號篩選,配合 HDR 使用

流控類(lèi)

DecimationFilter

Depth   / IR / Color

對圖像進(jìn)行降采樣,縮小分辨率

采樣/閾值類(lèi)

ThresholdFilter

Depth

將超出指定距離范圍的深度值置零

采樣/閾值類(lèi)

NoiseRemovalFilter

Depth

去除深度圖中的噪聲(基礎版)

降噪類(lèi)

FalsePositiveFilter

Depth

去除深度圖中的各種噪聲(高級版)

降噪類(lèi)

SpatialAdvancedFilter

Depth

邊緣保持型空間平滑,效果好

空間平滑類(lèi)

SpatialFastFilter

Depth

快速空間平滑,CPU 占用低

空間平滑類(lèi)

SpatialModerateFilter

Depth

均衡速度與質(zhì)量的空間平滑

空間平滑類(lèi)

HoleFillingFilter

Depth

填充深度圖中的空洞

空間平滑類(lèi)

TemporalFilter

Depth

融合相鄰幀數據,時(shí)序平滑

時(shí)序平滑類(lèi)

注意:NoiseRemovalFilter在SDK內部自動(dòng)調用,僅可控制使能或調節相關(guān)參數,不可單獨創(chuàng )建。其他所有 Filter 均為公開(kāi)類(lèi)型,無(wú)需激活碼,直接創(chuàng )建即可使用。


4. 幀處理的兩種模式

同步處理(推薦,適合大多數場(chǎng)景)

auto outFrame = filter->process(inFrame);

if(outFrame) {

    // 使用處理后的幀

}

異步處理(適合高幀率或流水線(xiàn)場(chǎng)景)

// 設置回調,處理完成后自動(dòng)觸發(fā)

filter->setCallBack([](std::shared_ptr<ob::Frame> outFrame) {

    if(outFrame) {

        // 使用處理后的幀

    }

});

 

// 將幀推入 Filter 的處理隊列

filter->pushFrame(inFrame);

? 注意:`process()` 在某些情況下會(huì )返回 `nullptr`,調用后必須判斷返回值是否為空再使用。


RM新时代网站