フラクタル解析システム for Windows Ver.3.33


 概 要

 このシステムは,植物体などの画像から,色度変換(%変換),緑色部または赤色部の抽出,フラクタル次元の算出,被度の算出、細線化等の解析を行います。

 フラクタル次元はbox counting法(粗視化による方法)で2値画像の次元を算出します。
また、グレースケール画像(白黒濃淡画像)や、CTスキャンなどにより得られる3次元スライス画像(複層レイヤー画像)のフラクタル次元も算出できます。
そのために、高精度な2値化を実現する機能や、グレースケール化など、画像の前処理機能を含んでいます。

 バージョン3.1では、アルゴリズムの修正とともに、「細線化機能」を追加しました。
この機能は、波形などを解析する際に、スキャナで読み取ると線分が太くなるので、その太さを1にするために利用されます。

 3.2では、アルゴリズムの修正とともに、画像の一部分だけをフラクタル次元の算出対象とするために、「範囲指定機能」を追加し、ツールバーに必要最小限のボタンを配置しました。

 3.22では、途中経過を知りたいというご要望により、ボックスサイズとカウント数を表示するようにしました。また画像のコピーと貼り付けをきちんと使えるように直しました。

 3.30では、グレースケール画像のフラクタル次元(たいていの場合、2から3の間の値になる)を算出する機能を追加しました。そのために、カラー画像をグレースケール画像に変換する機能(輝度変換)も追加しました。また、画像が大きくてスクロールしないと見られない場合に、範囲指定ボックスの位置と次元算出範囲が一致しない等のバグを修正しました。

 3.31では、フラクタル次元を算出するためのボックスサイズと個数の関係からフラクタル性が保証されている(直線に乗っている)かどうかをグラフによって確認できるようにしました。ボックスサイズが小さすぎたり大きすぎるとそれらのデータが直線に乗らないことがありますので、個数の領域の任意データを編集・削除してフラクタル次元を再計算できるようにしました。

 3.32では、2値化時に生じるノイズを除去するために、孤立点(ただし黒い点のみ)の除去と、メディアンフィルターの機能を追加しました。また、グラフ表示ボタンを追加しました。

 3.33では、3次元スライス画像(連続断層画像、複層レイヤー画像)における黒色部のフラクタル次元を求めることができるようにしました。これにより、立体構造の解析が可能になりました。スライス画像は数が多くなるため、BMPファイルだけでなく、PNGファイルでも可能となるようにしました。また、エクスプローラなどからBMPファイルをメインウインドウにドラッグ&ドロップできるようにしました。計算範囲を数値で直接入力できるようにしました。


 動作環境

 OSはWindows95以降,画面表示は32K色以上表示で利用して下さい。

%変換を利用する場合には,フルカラー(24ビット以上)で利用して下さい。


 フラクタル次元算出における注意事項(問題点)

1.黒で塗りつぶされた平面画像のフラクタル次元は本来2.0000になるはずですが、対象画像の縦横のサイズが2の階乗(32,64,128,256等)ピクセル以外の場合には、それよりもやや低い値になります。厳密に正確な次元を算出したい場合には、画像の縦横のサイズをそれぞれ2の階乗になるように(たとえば横512×縦256とか、横64×縦128)そろえて下さい。
 とくにグレースケール(白黒濃淡画像)の次元を求める場合には、原則としてこのルールを守ってください。グレースケールの場合には、表面の凸凹程度を算出しますので、最低でも次元値は2になるべきですが、画像サイズを2の階乗にしないと2よりも低い値になることがあります。

2.波形の画像の次元を求める際には、「細線化」後、「算出対象範囲の指定」により、範囲を示す長方形から曲線や直線の両端がはみ出るようにして算出してください。
 また、「サイズ毎の個数表示」で散布図を表示し、プロットがほぼ正確に直線に乗っているかどうか確認してください。曲線上に乗っているように感じたら、直線となる範囲のデータだけを用いてフラクタル次元を算出することになっています。とくに、ボックスサイズが小さいと、線に対してボックスサイズが相対的に大きすぎる(本当なら、線の幅は0なので、ボックスサイズよりずっと細いはずだから)ため、ボックスサイズの小さいものから順にカウント数を削除する必要があります。たとえば、直線に乗るのがボックスサイズ8以上の点であれば、ボックスサイズ1,2,4のカウント数を削除してから「再計算」ボタンを押してフラクタル次元を求めて下さい。


 一般的な使用方法

  

(1)起動

プログラム名は fractal3.exe なので、これを起動する。

そうすると、「fractal3」と「結果表示」という2つのウィンドウが開く。


(2)ファイルを開く

対象となるBMPファイルを読み込む。

(3)緑部(または赤部)抽出

求めたい対象物に応じて、メニューの「画像加工−緑部(または赤部)抽出」を選択する。
緑部の抽出結果。
緑部抽出がうまくいかない場合には、画像ファイルを読み込み直してからメニューの「画像加工−しきい値変更」を選択し、
しきい値変更パネル上、緑部・赤部抽出のためのしきい値(境界値)を変更する。

この値は色度の境界値なので、単位は%、デフォルトで0です。

とくに緑色の濃い部分だけを抽出したい場合はこの値を大きくし、多くの領域を抽出する場合には負の値にする。


(4)フラクタル次元の算出

緑部抽出ができたら、メニューの「フラクタル次元−真っ黒の部分」を選択すると、
結果が表示される。

フラクタル次元だけでなく、画像のサイズ、被度(%)、フラクタル次元算出のためのデータ数(n)、相関係数(フラクタル性の判定に利用)も同時に表示する。「被度(%),輝度差」の項目は、白黒2値画像では被度となる。

この画面上の値は「CTRL+C」でクリップボードにコピーできるので、他のソフトに転送できる。


(5)特定範囲内のフラクタル次元の算出

メニューの「範囲指定−範囲の表示」または範囲指定ボタンを選択すると、
ボックスが表示され、範囲指定が可能となる。

マウスをボックス上に持っていくと、ボックス線上でサイズ変更のカーソルになり、マウスをドラッグすることで大きさが変わる。

また、ボックス内でドラッグすると、移動できる。

メニューの「範囲指定−数値による指定」で値を直接入力することもできる

座標(左上)とボックスサイズの情報がウインドウ上部に表示される。

特定範囲内のフラクタル次元算出結果を示す。

メニューの「編集−範囲指定解除」または範囲指定ボタンを選択すると、範囲指定が解除される。


(6)グレースケール画像の次元算出

カラー画像を読み込んでから、メニューの「画像加工−グレースケール化」を選択すると、
画像がグレースケールになる。

そこでメニューの「フラクタル次元−グレースケール」を選択すると、

グレースケール画像のフラクタル次元が表示される。

ただし、「被度(%),輝度差」の項目は、輝度差となる。

この画面上の値は、範囲指定してから「CTRL+C」でクリップボードにコピーできるので、他のソフトに転送できる。


(7)3次元スライス画像(複層レイヤー画像)の次元算出

スライス画像が10枚あるとしたら、あらかじめ、1.BMP 〜 10.BMP と順番に名前を付けて保存しておく。または1.PNG 〜 10.PNG(PNGファイルでも可なので)

フラクタル次元−3Dスライス2値」を選択すると、左に見られるような画面が出るので、最終画像のファイル名(ここでは、どこかのフォルダにある10.bmp)を「選択」ボタンを押して選択し、ピクセルサイズ画像間の距離を入力する。

あとは「実行」ボタンをクリックすると、しばらくしてから結果が出力される。


(8)ボックスサイズ毎の個数とグラフ表示

メニューの「フラクタル次元−サイズ毎の個数表示」を選択すると、
左側にボックスサイズと個数、右側にプロットと回帰直線が表示される。

画面上のサイズと個数は、「CTRL+C」でクリップボードにコピーできるので、他のソフトに転送できる。

右側のグラフは自由に拡大縮小でき、サイズと個数にリンクしている。
また、個数の領域にある値を変更したり、削除してから「再計算」ボタンをクリックすると、グラフ、相関係数、フラクタル次元の値が再計算される。

フラクタル性が保証されている(直線に乗っている)かどうかをグラフによって確認し、ボックスサイズの下限が小さすぎたり、上限が大きすぎるために直線に乗らない場合などには、個数の領域の任意データを削除してからフラクタル次元を再計算すればよいでしょう。



 その他の機能

上部ツールバー上のボタンは、左から「開く(BMP)」、「範囲指定(解除も)」、「フラクタル次元(黒)」、「フラクタル次元(黒以外)」、「フラクタル次元(グレースケール)」です。使用頻度の高いものだけ配置しています。

とくに範囲指定ボタンは、画像が大きくてスクロールしないと見えない場合など、範囲指定ボックスがどこに行ったかわからなくなってしまったときに、2回クリック(解除&指定)すると、ボックスが必ず左上から(X,Y)=(80,80)の位置に移動するので重宝します。

ファイル−ベタファイル(G1)保存
2値画像が表示されている時に、左上を始点とする横640×縦400の領域を32000バイトのファイルに保存する。旧バージョン対応のための機能なので、ふつう使わない。

編集−コピー、ペースト
これらは、画像を他のソフトウェアで加工しながら並行して次元を算出する場合などに利用する。

画像加工−%変換
合計値を一定値とする色度(RGBの割合)に変換する。普通の%では合計値は100だが、そうすると暗くなって見づらいので、この変換では合計値を250にしている。

画像加工−しきい値変更
緑部・赤部抽出のためのしきい値(境界値)を変更する。この値は色度の境界値なので単位は%、デフォルトで0。とくに緑色の濃い部分だけを抽出したい場合は値を大きくし、多くの領域を抽出する場合には負の値にする。

画像加工−緑部(赤部)抽出
画像の中の明るい緑(赤)から暗い緑(赤)まで、あらゆる緑(赤)を抽出する。抽出された部分は黒、他は白の2値画像になる。

画像加工−ネガポジ反転
文字通りネガポジを逆にする。2値画像でも有効。抽出色を緑や赤以外にしたい場合などに利用してみてもいいという程度のもの。

画像加工−グレースケール化
カラー画像をグレースケール画像に輝度変換する。輝度の値は、R×0.3+G×0.59+B×0.11 で求められる。

画像加工−細線化
細線化とは、太さを1にすることで、黒に対してのみ実行される。太さを1にすることにより削られた部分は、白で塗りつぶされる。通常の利用では白黒2値画像に対して処理するが、別の色を含んでいても黒以外の色は無視される。

フラクタル次元−黒の総延長
波形グラフなどで、次元だけでなく長さも比較したい場合などに用いる。範囲指定してあれば範囲内の値を算出する。細線化していないと無意味な値が表示される。ビットマップでは誤差が大きくなるので、相対的な比較に用いるのがよいでしょう。

フィルター−メディアン孤立黒点除去
自然現象を扱う場合には、画像を2値化すると、しばしばノイズが生じる。それを除去するためのもの。あんまりノイズのサイズが大きい場合には、グラフィックエディタでこまめに消しましょう。


 補足

応用分野例
いろいろなものの混在度,緻密さ,均一性の評価に使います。農学分野では,芝生の緻密さ,土壌の物理性(孔隙),牛肉の霜降り度合いの評価などに使えるでしょう。
グレースケールの次元は、いろいろな物体表面の凹凸(テクスチャ)の評価に使えます。

参考文献
1)高安秀樹(1986)フラクタル.朝倉書店.
2)佐々木寛幸・柴田昇平・畠中哲哉(1994)利用目的に応じたシバ(Zoysia japonica)の系統評価手法の開発.草地試験場研究報告49:17-24.
3)「佐々木寛幸,フラクタル」で検索するといくつかヒットします

著作権・サポート
著作権は,農研機構に帰属します。
担当者は,佐々木寛幸ですが、定年退職したのでサポート対象外となります。