ImageJを使って単純な方法で画像から葉面積を測ってみました。大まかな方法としては、画像から緑の部分を選択して選択された部分の面積(ピクセル数)を数える感じです。
RGBからLab色空間に変換する
RGBのGチャンネルが高いピクセルが緑だと思いそうですが案外そうでもありません。Lab色空間にすることでa*の座標軸の小さい方が緑になっているので、まずはRGBからLabに変換します。
ImageメニューのTypeからLab Stackを選択します。変換には多少時間がかかるようです。
変換が終わると以下のように画像がグレースケールに代わり、さらに画像の下にスクロールバーが現れます。
スクロールバーを真ん中に移すことでa*軸の値のグレースケールを表示できます。
以下のように、画像の左上に 2/3 (a*) という表記がされていればOKです。
Thresholdを設定する
続いてImageメニューのThresholdを選択肢、バックグラウンドと葉っぱを区別するための閾値を設定します。
Thresholdを選択すると以下の図のように小さなウィンドウが表示されパラメータを設定できます。パラメータを適宜設定して、葉っぱの部分が赤く選択されるようにします。もし、Dark backgroundにチェックがついていたら外します。
面積を計算する
次にいよいよ面積を計算するための設定に入ります。AnalyzeメニューのSet Measurements...を選択します。
すると以下のようなウィンドウが現れるのでAreaを選択し、Limit to thresholdにチェックをつけます。これをすることで現在設定しているThresholdで選択されている部分の面積を測ってくれます。
Set Measurements...のウィンドウでOKを押したら、AnalayzeメニューのMeasureを選択します。
以下のようなウィンドウが現れて面積がピクセル数で表示されました。
ちなみに先ほど説明したLimit to thresholdのチェックを外してMeasureを再度選択すると画像全体の面積がでます。これらの値の比をとることで被度的なものが得られるかもしれません。
今回の方法はかなり単純なので葉が緑でない部分があったり、逆に地面に葉とは関係ない緑色の部分があったりするとその部分が計算に含まれなかったり含まれたりするので厳密性をあげるならもう少し工夫が必要かもしれません。