pcmedian
説明
は、3 次元点群データのメディアン フィルター処理を実行します。この関数は点群の各チャネルを個別にフィルター処理します。出力はフィルター処理された点群です。それぞれの出力位置プロパティ値は、対応する入力位置プロパティ値の近傍の中央値です。関数 ptCloudOut
= pcmedian(ptCloudIn
)pcmedian
はエッジをゼロでパディングしません。代わりに、使用可能な近傍の値のみについて演算を行います。
入力点群がオーガナイズド点群の場合、関数 pcmedian
は N 行 N 列の近傍法を使用します。点群がアンオーガナイズドの場合、関数は半径近傍法を使用します。
は、1 つ以上の名前と値のペアの引数を使用してオプションを指定します。たとえば、ptCloudOut
= pcmedian(___,Name,Value
)'FilterSize',3
は、オーガナイズド点群のメディアン フィルターのサイズを 3 に設定します。
例
ノイズを含む点群のメディアン フィルター処理
メディアン フィルターを使用して点群からノイズを除去します。最初に、点群にランダム ノイズを追加します。その後、関数 pcmedian
を使用してノイズをフィルター処理します。
点群を作成します。
gv = 0:0.01:1; [X,Y] = meshgrid(gv,gv); Z = X.^2 + Y.^2; ptCloud = pointCloud(cat(3,X,Y,Z));
"z" 軸に沿ってランダム ノイズを追加します。
temp = ptCloud.Location; count = numel(temp(:,:,3)); temp((2*count) + randperm(count,100)) = rand(1,100); temp(count + randperm(count,100)) = rand(1,100); temp(randperm(count,100)) = rand(1,100); ptCloudA = pointCloud(temp);
メディアン フィルターを適用し、3 つの点群 (元の点群、ノイズを含む点群、フィルター処理後の点群) を表示します。
ptCloudB = pcmedian(ptCloudA); subplot(1,3,1) pcshow(ptCloud) title('Original Data') subplot(1,3,2) pcshow(ptCloudA) title('Noisy Data') subplot(1,3,3) pcshow(ptCloudB) title('Filtered Data')
アンオーガナイズド点群データへのメディアン フィルターの適用
点群データをワークスペースに読み込みます。
ptCloud = pcread('highwayScene.pcd'); roi = [0 20 0 20 -5 15]; indices = findPointsInROI(ptCloud,roi); ptCloud = select(ptCloud,indices); ptCloud = pcdownsample(ptCloud,'gridAverage',0.2);
点群データを表示します。各点はそれぞれの x 座標に基づいて色分けされます。
figure
pcshow(ptCloud.Location,ptCloud.Location(:,1))
view(-90,2)
title('Original Point Cloud')
z チャネルに沿って区間 (a
,b
) にノイズを追加します。a
と b
の値については、ノイズが地面の近くに現れるような値を選択します。
temp = ptCloud.Location; count = numel(temp(:,3)); a = -2.5; b = -2; temp((2*count)+randperm(count,200)) = a+(b-a).*rand(1,200); ptCloudA = pointCloud(temp);
ノイズを含む点群を表示します。各点はそれぞれの x 座標に基づいて色分けされます。
figure
pcshow(ptCloudA.Location,ptCloudA.Location(:,1))
view(-90,2)
title('Noisy Point Cloud')
点群にメディアン フィルターを適用します。
ptCloudB = pcmedian(ptCloudA,'Dimensions',3,'Radius',1);
フィルター処理後の点群を表示します。各点はそれぞれの x 座標に基づいて色分けされます。
figure
pcshow(ptCloudB.Location, ptCloudB.Location(:,1))
view(-90,2)
title('Filtered Point Cloud')
入力引数
ptCloudIn
— 点群
pointCloud
オブジェクト
点群。少なくとも 1 つの有効な点を含む pointCloud
オブジェクトとして指定します。入力点群がオーガナイズドの場合、点群のサイズは少なくとも 3×3×3 でなければなりません。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。
R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: 'FilterSize'
,3
は、メディアン フィルターのサイズを 3 と指定します。
Dimensions
— 対象の点群の次元
[1 2 3]
(既定値) | 範囲 [1 3] の整数のベクトル
対象の点群の次元。範囲 [1 3] の整数のベクトルとして指定します。値 1、2、3 は x 軸、y 軸、z 軸にそれぞれ対応します。次元は昇順で指定しなければなりません。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
FilterSize
— オーガナイズド点群のメディアン フィルターのサイズ
3
(既定値) | 範囲 [3, N] の奇数の整数
オーガナイズド点群のメディアン フィルターのサイズ。範囲 [3, N] の奇数の整数として指定します。N は点群の最も小さいチャネル次元です。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Radius
— アンオーガナイズド点群の近傍の半径
0.05
(既定値) | 正のスカラー
アンオーガナイズド点群の近傍の半径。正のスカラーとして指定します。指定した半径の内側にある点が多いと計算時間が増えます。そのため、密な点群に対して半径の値を大きくすると、計算時間が長くなり、パフォーマンスに影響する可能性があります。
データ型: single
| double
出力引数
ptCloudOut
— フィルター処理された点群
pointCloud
オブジェクト
フィルター処理された点群。pointCloud
オブジェクトとして返されます。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2020b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)