前回学んだ収縮・膨張の処理では、1ピクセルの大きさの白・黒のノイズを消すことができるが、もう一方の色のノイズが逆に大きくなってしまったり、白いエリアが広がったり狭くなったりしてしまうという問題点があった。それらを組み合わせて使うことで、エリアの大きさがほぼ変わらないようにしたり、両方のノイズを消すことができる。
ここでは前回の完成状態のプログラムに変更を加え、収縮・膨張の処理を様々な順番で組み合わせた処理を行うプログラムを作る。
前回の完成状態のコードが必須なので、まだの場合は先にそちらを完成させる。
単純な収縮処理では、白いノイズは消せるが「黒いノイズが大きくなる」「黒いエリアが広がる(白いエリアが狭くなる)」という問題点がある。
そこで、収縮のあとに膨張の処理を加えると、黒ノイズの大きさは元のままで、白・黒のエリアの大きさも処理前とほぼ同じになる。このような処理のことを
オープニングという。
同様に、単純な膨張処理では黒いノイズは消せるが「白いノイズが大きくなる」「白いエリアが広がる(黒いエリアが狭くなる)」という問題点があるが、
膨張のあとに収縮の処理を加えると、白いノイズの大きさは元のままで、白・黒のエリアの大きさも処理前とほぼ同じになる。このような処理のことを
クロージングという。
オープニング、クロージングではエリアの広さが変わる問題は解決されるが、白か黒のどちらかのノイズは残ってしまう。
そこで、これらを組み合わせた処理を考えてみる。
オープニング処理につづけてクロージング処理を行うことは「収縮→膨張→膨張→収縮」順の4つの処理にあたる。
図からわかるように、この組み合わせでは白と黒のノイズを両方とも消すことができる。
逆にクロージング処理につづくオープニング処理、つまり「膨張→収縮→収縮→膨張」の順で処理を行ってもほぼ同様の結果を得ることができる。
締切後提出用フォーム
※ 点数はつきますが、欠席だった場合は出席にはなりません。
※ コードはTeamsのClass Notebookに保存してください。