画像のフラクタル次元を測る

写真や画像を入れると、表面の「ザラザラ具合」を表すフラクタル次元を、差分ボックスカウント法(DBC)とマドグラム法の 2 つの方法で測ります。白黒の図形なら、形そのものの次元も測れます。

計算はすべてブラウザの中で行います。画像がサーバーへ送信・保存されることはありません。

画像を入れる

サンプルで試す

測り方

オプション
直線を当てはめる範囲(ブロックの大きさ s)
〜
グラフの点をクリックしても範囲の端を動かせます。
画像を入れるか、サンプルを選ぶと、ここに結果が出ます。

フラクタル次元とは

線は 1 次元、面は 2 次元、立体は 3 次元です。フラクタル次元は、この「次元」を整数でない値にも広げたもので、図形や表面がどれだけ入り組んでいるかを表します。たとえば海岸線のように細かく入り組んだ線は、1 次元の線と 2 次元の面の間の値になります(B. B. Mandelbrot は 1967 年の論文で、イギリスの西海岸の次元を約 1.25 と見積もっています)。

写真の明るさを高さとみなすと、画像は山と谷のある「地形」(曲面)になります。なめらかな曲面は 2 次元ですが、細かい凸凹が多いほど空間を埋めるようになり、次元は 3 に近づきます。このツールが「濃淡の粗さ」として測るのは、この曲面の次元(2〜3)です。

フラクタル次元の考え方そのものは、「フラクタル次元の求め方」で詳しく解説しています。

ボックスカウント法の考え方

白と黒に分けた画像(2 値画像)では、次の手順で図形の次元を求めます。これをボックスカウント法と呼びます。

  1. 画像を 1 辺 画素のマス目(箱)に区切る。
  2. 図形が少しでもかかっている箱の数 を数える。
  3. マス目の大きさ を変えながら数え、 と のグラフに直線を当てはめる。
  4. 直線の傾きを次元 とする。

線なら、箱の 1 辺を半分にすると図形にかかる箱の数は約 2 倍、面なら約 4 倍になり、傾きはそれぞれ 1 と 2 になります。入り組んだ図形では、その間の値になります。このツールの「図形の次元」は、この方法で 0〜2 の値を求めます。白と黒の境目(しきい値)は、明るさの分布から大津の方法で自動的に決め、手で変えることもできます。

差分ボックスカウント法(DBC)の仕組み

写真のような濃淡のある画像では、白黒に分けると情報の多くが失われます。そこで N. Sarkar と B. B. Chaudhuri(1994)は、明るさを高さとみなし、画像を 3 次元の曲面として箱で覆う差分ボックスカウント法(DBC)を考えました。

明るさ(高さ) 画像の位置 なめらか: 箱 1 個 凸凹: 箱 3 個 高さ h マス目の幅 s
マス目ごとに、最も暗い画素から最も明るい画素までを、高さ h の箱で覆います。起伏が大きいマス目ほど、多くの箱が必要になります。
  1. 画像(1 辺 画素)を、1 辺 画素のマス目に区切る。
  2. 明るさの方向にも、高さ の箱を積み重ねる( は明るさの段階数)。マス目を小さくすると、箱も同じ割合で低くなります。
  3. マス目ごとに、最も明るい画素 と最も暗い画素 の間を覆うのに必要な箱の数を数える。
  4. 全部のマス目の箱の数を合計して とし、 と の直線の傾きを次元 とする。

なめらかな面では、どのマス目でも明るさの差が小さく、箱の数はマス目の数( を半分にすると 4 倍)とほぼ同じように増えるので になります。細かい凸凹が多いと、マス目を小さくしても明るさの差が小さくならないため箱が多く必要になり、 は 3 に近づきます。

画像の 1 辺がマス目の大きさで割り切れないときは、端の余った部分を使わずに数えます。使った面積が小さい分だけ箱が少なくなるので、このツールでは を面積の比 で換算してから直線を当てはめています。端のマス目を面積で重み付けする Jiang ほか(2022)の改良と同じ考え方です。

もう 1 つの方法:マドグラム法

DBC と並べて表示しているマドグラム法は、T. Gneiting、H. Ševčíková、D. B. Percival(2012)がさまざまな推定方法を比べた論文で扱った方法です。この論文は、1 本の線(時系列)の粗さにはマドグラムを勧め、画像のような 2 次元のデータには、行と列ごとの推定値の中央値をとる方法を提案しています。このツールはそれをマドグラムで使っています。

  1. 画像の 1 行(または 1 列)を、1 本の折れ線とみなす。
  2. 1 画素離れた点どうしの明るさの差の平均 と、2 画素離れた点どうしの差の平均 を求める。
  3. 離れると差がどれだけ大きくなるかから、その線の次元を求める。
  4. 全部の行と列の次元の中央値に 1 を足して、画像の次元とする。

なめらかな線では、2 画素離れると差がちょうど 2 倍になり、線の次元は 1 になります。でたらめなノイズでは、1 画素離れても 2 画素離れても差が同じなので、線の次元は 2 になります。中央値を使うため、画像の一部に傷やゴミがあっても値が大きくぶれにくいのが特長です。

結果の読み方

画像どうしを比べるときは、同じ方法・同じ設定(解像度・コントラスト正規化・反転)で測った値どうしを比べてください。

実際に測った例

ページ上部のサンプル画像を、ツールの既定の設定で測った値です。サンプルはすべてプログラムで作った合成画像です。

ツールの既定の設定(コントラスト正規化あり)で測った値。サンプル画像は 512×512 画素。
サンプル画像測り方DR²もう 1 つの値
雲のような模様濃淡の粗さ2.3630.9985マドグラム法 2.465
なめらかな起伏濃淡の粗さ2.0610.9983マドグラム法 2.138
海岸線のような図形図形の次元1.8260.9998図形の割合 50.3%(しきい値 0)
IFS のシダ図形の次元1.7380.9988図形の割合 14.7%(しきい値 0)

理論上の次元 がわかっている合成画像(fBm 曲面)でも測りました。

fBm 曲面はスペクトル合成法で作った合成画像。理論値は D = 3 − H。
画像(1024×1024)理論値DBCマドグラム法
一様なグレー2.002.0002.000
輝度のグラデーション2.002.0331.999
fBm 曲面(H = 0.8)2.202.1032.160
fBm 曲面(H = 0.65)2.352.1852.255
fBm 曲面(H = 0.5)2.502.2762.350
fBm 曲面(H = 0.35)2.652.3762.439
fBm 曲面(H = 0.2)2.802.4602.521
一様乱数のノイズ3.002.9313.000

限界と注意点

512×512 画素、コントラスト正規化あり。
「雲のような模様」の処理DBCマドグラム法
ぼかさない(元の画像)2.3632.465
3×3 画素の平均でぼかす2.2332.110
5×5 画素の平均でぼかす2.1652.056
9×9 画素の平均でぼかす2.0902.025

よくある質問

スマートフォンで撮った写真でも測れますか?

はい、測れます。JPEG・PNG・WebP の写真をそのまま読み込めます。iPhone の HEIC 形式は、ブラウザによっては読み込めないため、その場合は JPEG に変換するか、スクリーンショットを使ってください。大きな写真は、計算の前に短い辺が 1024 画素(オプションで 512・2048 も選べます)になるよう縮小します。

測るたびに値が変わるのはなぜですか?

同じ画像を同じ設定・同じブラウザで測れば、毎回同じ値になります。計算に乱数は使っていません(ブラウザの種類が違うと、画像を縮小するときの処理の違いで、小数第 3 位あたりが変わることがあります)。値が変わるのは、解像度・コントラスト正規化・反転などの設定や、写真の撮り方(明るさ・ピント・圧縮)が違うときです。比べるときは、設定をそろえて測ってください。

画像はサーバーに保存されますか?

いいえ。読み込んだ画像の処理と計算は、すべてブラウザの中で行います。画像がサーバーへ送信・保存されることはありません。CSV やシェア画像も、お使いの端末に保存されるだけです。

DBC とマドグラム法の値が違うのはなぜですか?

DBC は「箱を数える」方法、マドグラム法は「隣り合う画素の差の大きさ」から求める方法で、考え方が違うためです。合成画像で試すと、マドグラム法のほうが理論値に近い値になりました。ただし、ぼけた画像ではマドグラム法のほうが大きく値が下がります。2 つの値を並べて見ることで、測った値がどのくらい確かかの目安になります。

白黒の図形や線画の次元を測るには?

「測り方」で「図形の次元」を選んでください。画像を白と黒に分けて、図形が写っている箱の数を数えます。白地に黒い図形なら「暗い側」、黒地に白い図形なら「明るい側」を選びます。しきい値は自動で決めますが、オプションで手動にもできます。

参考文献