プルーニングアルゴリズムは、数学的形態学に基づいたデジタル画像処理技術です。[1]不要な寄生成分(スパー)を除去するために、スケルトンアルゴリズムや細線化アルゴリズムを補完するために使用されます。この場合の「寄生」成分とは、線全体の形状にとって重要ではない線の枝のことで、除去する必要があります。これらの成分は、エッジ検出アルゴリズムやデジタル化によって生成されることがよくあります。プルーニングの一般的な用途には、手書き文字の自動認識などがあります。文字の書き方の不一致は、多くの場合、不要なスパーを生み出し、より良い特徴付けのために除去する必要があります。[2]
数学的な定義
標準的な枝刈りアルゴリズムは、指定された点数より短い枝をすべて削除します。寄生枝が4点より短い場合、n = 4でアルゴリズムを実行すると、その枝は削除されます。2番目のステップは、各ラインの主幹が手順によって短くならないようにするためのものです。
構造要素
配列内の x は「don't care」状態を示します。つまり、画像のその部分には 1 または 0 のいずれかが含まれる可能性があります。
ステップ1:間伐
このステップを指定された回数 (n) 適用して、ピクセル数が (n) 以下のブランチを削除します。
ステップ2: エンドポイントを見つける
構造要素が満たされる場合は常に、3x3 マトリックスの中心がエンドポイントと見なされます。
ステップ3:拡張するエンドポイント
すべて 1 で構成される 3x3 行列 (H) を使用して膨張を実行し、元の画像 (A) にも 1 があった場合にのみ 1 を挿入します。これを各エンドポイントに対して全方向 (n) 回実行します。
ステップ4:連合Xの1&X3
ステップ 1 の結果を取得し、ステップ 3 と結合して最終結果を実現します。
MATLABコード
%% ---------------
% 剪定
% ---------------
クリア; clc ;
% 画像読み込み
img = imread ( 'Pruning.tif' ) ;
b_img_skel = bwmorph ( img 、'skel' 、40 ) ;
b_img_spur = bwmorph ( b_img_skel 、'spur' 、Inf ) ;
figure ( '名前' , '剪定' );
サブプロット( 1 , 2 , 1 );
imshow ( b_img_skel );
title ( sprintf ( 'イメージスケルトン' ) );
サブプロット( 1 , 2 , 2 );
imshow ( b_img_spur );
title ( sprintf ( 'スケルトンイメージのプルーニング' ));
以下のMATLABの例では、元の画像(左下)を40回スケルトン化し、上記のMATLABコードに従って画像から枝刈りを行い、スパーを除去しています。右下に示すように、これによりスパーの大部分が除去され、よりクリーンな画像が得られました。
| オリジナル画像 | イメージスケルトン | スケルトンイメージの削除 |
|---|---|---|
参照
外部リンク
- Mathematicaにおける形態学的剪定関数
- MATLABにおける形態学的演算
参考文献
- ^ ラス、ジョン・C. (2011).画像処理ハンドブック(第6版). ボカラトン: CRC Press. ISBN 978-1-4398-4045-0。
- ^ ゴンザレス, ラファエル・C.; ウッズ, リチャード・E. (2008).デジタル画像処理(第3版). アッパーサドルリバー, ニュージャージー州: プレンティス・ホール. ISBN 978-0131687288。