膨張・収縮・オープニング・クロージング

シェアする

  • このエントリーをはてなブックマークに追加
最近の記事
  • 10/21 【C#】寸法線の描画
  • 10/21 【C#】GraphicsPathの領域取得
  • 10/20 【C#】GraphicsPathの描画
  • 10/18 【C#】GraphicsPath
  • 10/17 【C#】Bitmap画像データの拡大縮小
  • 10/15 【C#】画像の座標系
  • 10/14 【C#】画像の上下左右反転、90,180,270度回転
  • 10/3 【C#】SplitContainerのPanel固定方法
  • 9/7 【Neural Network Console】学習データの出力方法
  • 9/3 Deep Learning向け学習画像撮り込みソフト公開
  • 9/1 【Neural Network Console】新規画像のDataset作成方法
  • 8/28 【Neural Network Console】GUI表示スケールの変更
  • 8/22 【Neural Network Console】CPU/GPU処理の設定切替
  • 8/21 【Neural Network Console】Learning Rate(学習率)の設定
  • 8/20 ソニーの無償AIソフト Neural Network Consoleの入手ダウンロード、インストール
  • 8/20 Deep Learning
  • 8/20
  • 8/19 古いバージョンのVisual Studio Community/Expressの入手ダウンロード
  • 8/19 CUDAの入手、ダウンロード、インストール方法
  • 8/17 【C#.NET】マイクロソフト仕様のアフィン変換
  • 8/5 【C#】ファイルを開くダイアログボックスの表示
  • 8/2 キャノンプリンターのCDトレイはどこ?!
  • 7/6 【参考書籍】画像処理・機械学習プログラミング OpenCV 3対応
  • 6/20 【Python,matplotlib】動くグラフをAnimationGifに保存する方法
  • 6/17 シグモイド関数の微分
  • 6/15 シグモイド関数
  • 6/13 合成関数の微分
  • 6/12 WordPressで数式エディタ風に数式を入力したい
  • 6/11 PythonをVisual Studioでインストールする方法
  • 6/9 【Python】OpenCVをAnacondaでインストール(Windows編)
  • 6/6 【Python】Anacondaで複数バージョンの環境切り替え
  • 6/6 画像センシング展2017に出展します。
  • 6/1 【Office365】Web版Outlookのフォントサイズ変更
  • 6/1 【Anaconda】モジュールのアップデートでエラー発生
  • 6/1 【Anaconda】コマンドリストの表示
  • 5/29 Windows10パソコン購入
  • 5/24 Anacondaのアンインストール
  • 5/24 【Jupyter Notebook】新規プログラムの作成
  • 5/23 【Python】開発環境の構築
  • 5/23 Pythonはじめました
  • 4/6 【Office365】Web版Outlookのスレッド表示を解除する方法
  • 4/5 【Excel】フーリエ解析(FFT)
  • 3/20 Canny edge detection
  • 3/20 【Excel2016】分析ツールの表示
  • 3/5 【Visual Studio】黒い背景色を白に変更する方法
  • 2/8 【Windows10】拡張モニタに表示されたウィンドウを元に戻す
  • 2/7 複素数の計算
  • 1/18 【Excel】棒グラフの横軸の目盛を0始まりにする
  • 1/16 【Excel】フーリエ変換
  • 1/6 【OpenCV】疑似カラー(カラーマップ)

  • 膨張・収縮処理では一般的に二値化された白黒の画像に対して処理が行われ、

    注目画素の周辺に1画素でも白い画素があれば白に置き換える処理を膨張(Dilation)
    逆に周辺に1画素でも黒い画素があれば黒に置き換える処理を収縮(Erosion)といいます。

    【元画像】

    元画像

    【膨張処理】

    膨張処理

    【収縮処理】

    収縮処理

    二値化された画像ではなく、グレー画像に対して処理を行う場合は、膨張の場合、注目画素の近傍の最大輝度値を注目画素の輝度値に置き換えます。
    収縮の場合は最小輝度値に置き換えることでグレー画像に対して処理を行います。
    この処理を二値化画像と区別するために、それぞれ最大値フィルタ最小値フィルタと呼ぶ場合もあります。

    【処理例】

    元画像 膨張 膨張
    元画像 膨張 膨張
    膨張 収縮 収縮
    膨張 収縮 収縮
    収縮 収縮 収縮
    収縮 収縮 収縮
    収縮 膨張 膨張
    収縮 膨張 膨張
    膨張 連続処理
    膨張 連続処理

    膨張・収縮処理は単独で処理を行う事はまれで、膨張・収縮を繰り返し処理を行う場合が多くあります。
    とくに、同じ回数分だけ膨張して収縮する処理をクロージング(Closing)

    同じ回数分だけ収縮して膨張する処理をオープニング(Opening)とよびます。

    元画像 クロージング
    元画像 クロージング
    元画像 オープニング
    元画像 オープニング

    この処理例を見てもわかるように、オープニング、クロージング処理では小さいパターン細いパターンの除去を行います。

    さらに、クロージングした画像から元画像を差し引いた処理をブラックハット(Black-Hat)
    元画像からオープニングした画像を差し引いた処理をトップハット(Top-Hat)といいます。

    元画像 ブラックハット
    元画像 ブラックハット
    元画像 TopHat
    元画像 トップハット

    これらの処理を見ても分かるように、膨張・収縮処理を用いることで、欠け、断線、ホコリやゴミといった欠陥の検査や、細い線状のパターンの文字や線などの抽出への応用が考えられます。

    画像処理アルゴリズムへ戻る

    コメント