👶

ImageJから始める画像処理ライフ ~基本操作編~

2022/02/14に公開

異常検知AIソフトウェア・クラウドサービスを提供しているアダコテックでエンジニアをしているshin-ueです!

今回は、ImageJというツールを使った画像処理について紹介します!

画像処理とは

定義

入力された画像データに対して濃淡の変換や形状の変換などを行うこと。

(左)画像処理前 (右)画像処理後 顔こっわ

このようにマンドリル画像に対して何かしらの処理を与えて、目的に合う画像に変換してあげることが画像処理になります。↑の目的は無い。
ちなみに上記画像はSIDBAから持ってきています。SIDBAについて、およびSIDBAデータのダウンロード先は、イメージングソリューションという画像処理情報がわかりやすくまとまっているサイトをご覧ください!

アダコテックがターゲットとしている製造業の異常検知においては、製品上に存在する異常箇所(キズや汚れなど)を強調化させることが画像処理の目的となります。

画像処理という単語以外にも以下のような表現があったりします。
画像解析:異常領域の情報を抽出する (画素数や輝度値など)
画像計測:異常領域の長さや縦横比などを計測する
画像認識:異常領域の欠陥種を分類する (欠陥特徴モデルなど使って)

※画像○○の使い方が違う!とか細かいこと言ってくる人は存在しないので安心してください。きっと。

画像処理に手を出すには

有名な画像処理ライブラリといえばOpenCVが挙がります。
筆者はよくC++でOpenCVを使っていたのですが、ここ最近はPythonでOpenCVをよく使っています。めちゃ気軽に画像処理できるのでPython最高! OpenCV万歳!って感じです。

「プログラミングできないけど画像処理したいよ~」「直感操作で画像処理したいなりよ~」って方ももちろんいると思います。
ペイントツールやフォトショップみたいなものを用いれば画像処理できちゃいますが、もっと気軽に画処りたい人におすすめなのがImageJです!(個人的見解)

ImageJ?なにそれおいしいの?

おいしいかどうかは知りませんが、気軽に画像の変換や、情報の抽出ができちゃうツールです。
アメリカ国立衛生研究所(National Institutes of Health, NIH)で開発されたオープンソースソフトウェアで、今でも更新が行われています。

ImageJはプラグインによる機能拡張も可能なので、世界中の画像処理マンたちが開発&公開しているプラグインを自分のImageJに組み込んで、つよつよツールにしていくことができます!

またImageJには上位互換なFijiというバージョンも存在しています。デフォルトで多くのプラグインが追加されている状態なので、強くてニューゲームを実感できちゃいます。
(筆者もメインで使っていますが、機能が多いゆえに起動が遅く、ちょっと気軽さが欠けます)

さっそくやってみよう

ダウンローd・・・こ、これは!?

ImageJ公式サイトからツールをダウンロードして、それを実行させる手順でも書くか~と考えていた私がいました。サイトを見て私は目を疑いました。

んん?

こ、これはぁぁ!?
知らぬうちにブラウザ上でImageJできちゃう機能が公開されていました!
ということで、こちらを使って機能の説明をしようと思います!!!

ImageJ、またはFijiのツールをダウンロードして使いたい、という方はGoogle検索を活用しながら進めてください。m(__)m

画像を投入

ではさっそく、ブラウザ上に何か適当な画像をドラッグアンドドロップします。ここでは、SIDBAのオウム画像を用います!

このように投入した画像が表示されていると思います。画面上にあるImageJメインフォームのボタンをポチることで、画像処理を体験することが可能です!

カラー→グレースケール変換

元画像がどんなだったかを確認しながら進めるために、まずは画像の複製を行います。
Image→Duplicateを選択することで複製が可能です。

そしたら、Image→Type→8bitにチェックをすることで、複製した画像がグレースケールに変換されたはずです!

画像をぼかしてみよう (Mean Filter)

Mean Filterという画像をぼかす機能を持ったフィルタを使ってみましょう。
Process→Filters→Meanを選択すると、何やら数字を入力するフォームが表示されます。

Previewチェックボックスにチェックを入れて、数字を小さくしたり大きくしたりすると、グレースケール画像がぼけたり元に戻ったりすると思います。

これがMean Filter(平均化フィルタ)の機能です!

輝度ヒストグラムを確認

画像は8bit(256階調)の値をもつ画素の集まりです。この値(輝度値)の分布を表したものが、輝度ヒストグラムです。
輝度ヒストグラムから、画像内画素輝度の最小値(Minimum), 最大値(Maximum), 平均値(Mean), 標準偏差(Standard Deviation)などの統計量を知ることができます。
もちろんこのImageJでもヒストグラムを取得し、上記統計量を確認することが可能です。
Analyze→Histogramを選択すると、輝度ヒストグラムが表示されます。

以下は元画像(グレースケール変換後)とMeanFilter適用後のヒストグラムです。

各画像の平均値(Mean)は大きな差はありませんが、平均化フィルタ適用前後で標準偏差(StdDev)や最小値(Min)に差が出ていることが確認できますね。

画像を保存

何かしらの変換を適用した画像データをローカル上に保存したいときは、File→SaveAs→任意の拡張子を選択してください。
これが意外とよく使うんですよね。データサイズが大きいBMPデータを軽量なJPGデータ(圧縮による劣化は目を瞑る)に変換したいときとか。

さいごに

すごくざっくりでしたが、ImageJの操作方法について説明しました。
まさかブラウザ版が出ていたとは知らなかった・・・。
次回は画像処理の世界にしっかりと入門できるように、各種フィルタだったり、ImageJのもっと便利な機能だったりを紹介します!乞うご期待!

Discussion