点ではなくマスク画像でボロノイ図を作ってみた

2022/01/21に公開

事の発端は簡単に言うと、研究で論文を見てボロノイ図が面白そうだからという理由で作ってみました。
そもそもボロノイ図というのは簡略化すると、複数の点が座標平面にある時にそれぞれの点が丁度二等分線になるようなに線を引いたものがボロノイ図ですね。例として、以下の図がボロノイ図です。それぞれの点が丁度二等分線になると以下のようになります。

そして、これを画像で行うとどうなるのかと思い作ってみました。
使ってみた画像は自作して以下の4枚になります。



これらを使って、ボロノイ図を作っていきたいと思います。
そもそもどうやってボロノイ図を作るのかというと、簡単に言えば白い領域で膨張という処理を施していきます。
そうすることで白い領域が増えていきます。また、その増やすためにはカーネルというのがあります。
ここでは、4近傍と8近傍と呼ばれるカーネルを使います。
膨張とカーネルの説明は以下の画像のようなものになっています。

http://imagexcel.seesaa.net/article/435007018.html より画像を引用)

今回は4近傍と8近傍を交互に使って膨張させていきました。そうしてくると、どこかしらでぶつかるところが出てくるので重なった部分は消していきます。
そして、満遍なく膨張させていったものが以下の画像になります。



この後は、それぞれモルフォロジー変換と呼ばれる膨張した後に縮小させたものの差分を取ります。
それを全ての画像で合わせて行うと以下のボロノイ図の完成になります。

行った感想としては、繰り返し文を多用したので処理が重いのがなかなか来るものがありました。もっと速いコードが書きたいです。
それでも、とりあえず実装できたという喜びに浸ります。
ソースコードが欲しいという希望が多かったら投稿するので
欲しい方は言ってください。

それでは、最後まで読んで頂きありがとうございました。

Discussion