pythonでボックスカウンティングを利用したフラクタル次元解析を行いたい

実現したいこと

pythonでボックスカウンティング法を用いて、フラクタル次元を解析したい。出来るだけ精度を高くしたい。

求まった値からグラフを作成したい。

前提

Jupyterでフラクタル次元解析するシステムを作っています。
画像を読み込み、ボックスカウンティング法を行います。

参考サイト https://yamaguchiyuto.hatenablog.com/entry/2014/04/28/095451

したいこと

求まった値からグラフを作成して、フラクタル次元を求めたい。
(画像の名前は適当です。)

#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import math from PIL import Image def count(img, x, y, b): """ img: 対象画像、x,y: 画像のサイズ、b: ボックスのサイズ """ i = 0 j = 0 c = 0 while i < x and j < y: flag = False for k in range(0, b): for l in range(0, b): if i+k < x and j+l < y: if img.getpixel((i+k,j+l)) == 0: """ ボックスに図形が含まれていたらカウントして次の図形へ """ c += 1 flag = True break if flag: break i += b if i >= x: """ ボックスが右端に達したら左端に戻す """ i = 0 j += b return c # 図形が含まれていたボックスの数を返す img = Image.open('非常口.jpg').convert('1') # 画像を読み込んで二値化 x, y = img.size # 画像サイズを取得 i = int(x/10) while i > int(x/1000): n = count(img, x, y, i) print(math.log(i), math.log(n)) i = int(i / 2)

補足情報(FW/ツールのバージョンなど)

python3でやってます。
プログラミング自体あまり詳しくないので、情報が足りなければ色々聞いてください。

コメントを投稿

0 コメント