今回はImageJについての記事です。
ImageJと言えば、無料で使える高性能な画像処理ソフトですね。
ImageJでは様々な画像処理ができるのですが、
今回は実践的な使い方です。
ある画像が手元にあって、例えば黄色い部分が、
どれくらいの面積なのか?と気になった経験があなたにもあると思います。
ImageJであれば、黄色い部分を持つ画素を計測して
どれくらいの面積に分布しているかが一発で数値として出てきます。
初心者にもわかるように細かく解説していきますので、
きっとあなたにもしっかり理解してもらえると思います。
狙った色の面積を数値で求めることができるようになる。
Youtubeチャンネルにさまざまな動画を上げています。
↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓
本ブログはアフィリエイトを用いた広告を掲載しています。
まずはImageJを使える状態にする。
まずはImageJを使える状態にする必要があります。
すでにImageJを起動できる状態の場合は、この章は読み飛ばしてください。
ImageJを使ったことが無い場合は、
しっかりとこの記事を読んでください。
ImageJとは何なのか?どんなことができるのか?について解説しています。
もしあなたがWindowsではなく、Mac機を使用している場合は、
すこし見え方が変わります。その場合はこちらを参考にしてください。
今回使う画像を準備する。
まずは画像を用意しましょう。
もしあなたがすでに二値化して面積を求めたい画像をお持ちでしたら、
その画像を使ってください。
今回はこんなバナナの画像を用意しました。

バナナの黄色いところの面積だけ求めることを想定します。
ちなみに、ここからダウンロード可能です。
このバナナの画像をダウンロードできるところ(無料)
ImageJに画像を取り込んで処理する。
それでは面積を出す画像を用意できたところで、
実際にImageJに画像を取り込んで、バナナの黄色い部分の面積を求めてみましょう。
ImageJに画像を取り込む。
ImageJに画像を取り込む方法は2つありまして、
1つはImageJのFileタブから、指定の画像ファイルを選択する方法。
もう一つのほうがオススメなのですが、
ImageJのアプリケーションのウインドウにそのまま画像を
ドラッグ&ドロップする方法です。
直感的に操作できるのでこちらのほうがおすすめです。

ImageJで色の閾値を設定する。
画像がImageJに取り込めたところで、
次に画像の色の閾値を設定しましょう。
色の閾値とは、簡単にいうと、
指定した色のみを抽出する境界のようなものです。
正しく色の閾値を指定することで、
バナナの黄色いところだけを抜き出して指定することが可能になります。
やり方は、Image⇒Adjust⇒Clolor Thresholdと選択します。

すると、このようにHueやSaturation、Brightnessのグラフが出てきます。
このグラフをいじって色の制限をかけることで、バナナの黄色だけを指定してあげます。

デフォルトでは赤く表示されているところが、
閾値以上。つまり抜き出す場所であることを示しています。

ですから、輝度の閾値調整によって、うまくバナナの黄色いところだけを
赤く表示させられればOKということになります。
今回はこの辺にしておきます。
では、この赤くした状態から、実際にバナナの黄色いところだけを抜き出すのは、
このSelectボタンを押します。

先ほどのColor Thresholdのウィンドウの下のほうにあるボタンの1つです。

そうすると、赤い表示から黄色い縁取りに変わります。
『選択範囲が消えた!?』と勘違いしそうですが、
よく見ると黄色い線で今まで選択されていた赤い部分のエッジが表示されています。
イメージとしては、選択範囲のふちを黄色い線に置き換えて、
黄色い線の内側が選択範囲だと見やすくしている感じですね。
今回の場合だと、黄色いバナナに対して黄色い枠線なので
非常に見づらいですね….
ImageJでMeasureの項目を設定する。
選択範囲が指定できたところで、
今度は面積を測りましょう。
面積を測るには、Measureボタンを押せばいいのですが、
デフォルト、もしくは設定を変えることで、面積が表示されないことがあります。
そのため、念のためこの設定は確認しておいたほうが良いです。
まずは、Analyzeのタブから、Set Measurementsを選択します。

すると、↓のように、たくさんのチェックボックスが現れます。
このチェックボックスの意味ですが、
ここにチェックを入れた項目が、Measureボタンで計測されるものになります。
ですから、このSet Measurementsのチェックボックスで、
面積をチェックしておかないと、Measureボタンを押しても面積が表示されません。
具体的には、Set Measurementの中の、
『Area』のチェックボックスにチェックを入れましょう。

これで面積の測定の準備まで完了しました。
ImageJでMeasureして結果を確認する。
最後に面積を測ってみましょう。
面積の測り方は、さきほど少しお話しましたが、
Analyzeタブ⇒Measureボタンで一発で出てきます。
こんな結果で表示されます。↓↓

しっかり先ほどのAreaのチェックボックスにチェックを入れておけば、
このようにAreaという項目が表示されているはずです。
この場合は、Area=面積が17178186となります。単位はピクセル[pix]です。
この数値が何を意味するのか?
画像というものは、細かい画素の組み合わせでできています。
例えば、今回使用したバナナの画像ですが、
横:8256個、縦:5504個の画素の組み合わせです。
確認方法はいくつかありますが、ImageJで読み込んだ時の
左上に表示されているものを確認するのが手っ取り早いです。

つまり、1つの画像で8256×5504の画素が存在しているため、
全体としては、45441024個の画素が存在しています。
ですから、今回17178186個の画素がバナナの黄色いところだとわかったため、
画像全体に占めるバナナの黄色いところの割合は、
17178186/45441024=37.8%
ということになります。
この数値自体は、画面全体に対する割合となりますが、
もし画像における1画素の大きさが、実物ではどれくらいになるか
わかっていれば、正確に面積[mm2]などの単位付きで
表すことも可能です。
手っ取り早く大体の大きさを求めたいのであれば、
定規など長さのわかっているものを一緒に写り込ませることで、
何画素が1mmなのか?と換算するのもいいかもしれませんね。
今回のまとめ:初心者でも輝度の高いところの面積を求められる。
今回は、バナナの画像を使って、
バナナの黄色いところだけ抜き出して面積を求めてみました。
以前の記事で画像のRGBを分離して3枚の画像にする方法を紹介しました。
↓↓↓この記事↓↓↓
もしも、面積を測りたい色が完全なる緑であれば、
RGBに分離(split)して、Gの画像だけ使って輝度を確認すればいいですが、
実際カラー画像を解析するとなると、そんなに都合よくいかないですよね??
よくある状況としては、RGBに分離したはいいものの、
面積を求めたい画像のRGBどれを使っても境界がちょっと微妙だな…
なんて時ですね。
そんな場合でも、今回の方法で面積を求めたいところだけ
指定してあげれば簡単に面積が求まります。
手順は少し多いかもしれませんが、
一度やってしまえば、なんてことはないですよね?
これからも画像処理関係の記事をどんどん上げていく予定なので、
何かあればコメントください。コメントの内容によっては
記事を書く優先度を変えたりしますので。