Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

reduce

ROI の点の密度の削減

説明

reduce(ROI) は、関心領域 ROI を定義する点の数を削減します。ROI オブジェクトの Position プロパティに点の配列が格納されます。reducePosition プロパティの元の値を、削減後の値で置き換えます。

reduce メソッドは、Ramer–Douglas–Peucker ライン簡略化アルゴリズムを使用する関数 reducepoly を呼び出します。このアルゴリズムは、直線に沿って点を削減し、遷移点 (ラインが曲がる点) のみを残します。

reduce(ROI,tolerance) は、ROI を定義する点の数を削減します。tolerance は削減の感度を指定します。範囲 [0,1]tolerance の値を指定します。

すべて折りたたむ

イメージをワークスペースに読み取ります。

I = imread('cameraman.tif');

イメージを表示します。

imshow(I);

イメージ上に Freehand ROI を描画します。

roi = drawfreehand;

形状を完成した後、Position プロパティの点の数を表示します。

disp(['Original Size of Position property: ' mat2str(size(roi.Position))]);
Original Size of Position property: [272 2]

オブジェクト関数 reduce を使用して、形状の定義に必要な点の数を削減します。

reduce(roi)

Position プロパティの削減後の点数を表示します。

disp(['Reduced Size of Position property: ' mat2str(size(roi.Position))]);
Reduced Size of Position property: [100 2]

イメージをワークスペースに読み取ります。

I = imread('cameraman.tif');

イメージを表示します。

imshow(I);

イメージ上に Polyline ROI を描画します。

roi = drawpolyline;

形状を完成した後、Position プロパティの点の数を表示します。

disp(['Original Size of Position property: ' mat2str(size(roi.Position))]);
Original Size of Position property: [12 2]

オブジェクト関数 reduce を使用して、形状の定義に必要な点の数を削減します。

reduce(roi)

Position プロパティの削減後の点数を表示します。

disp(['First try at reducing the number of points: ' mat2str(size(roi.Position))]);
First try at reducing the number of points: [12 2]

点数は変化しないことに注意してください。結果を改善するには、許容誤差パラメーターを変更します。既定では、許容誤差は 0.01 に設定されています。値を増やして再度試します。

reduce(roi,0.3)

Position プロパティのサイズを再度表示します。許容誤差を変更した結果、削減されました。

disp(['Reduction after resetting tolerance parameter: ' mat2str(size(roi.Position))]);
Reduction after resetting tolerance parameter: [4 2]

入力引数

すべて折りたたむ

ROI オブジェクト。AssistedFreehandFreehandPolygon、および Polyline のいずれかの ROI オブジェクトを指定します。

削減の感度。[0, 1] の範囲の数値として指定します。許容誤差を増やすと、削減される点の数が増えます。許容誤差の値が 0 の場合、最小限の点の数が削減されます。許容誤差の値が 1 の場合、点の数が最大限に削減され、ラインの終点のみが残されます。

アルゴリズム

Ramer–Douglas–Peucker ライン簡略化アルゴリズムは、形状を再帰的に分割し、一連の点を直線に置き換えようと試みます。このアルゴリズムでは、一連のすべての点について、直線からの外れが tolerance で指定された値を越えていないことをチェックします。

R2019b で導入