実際に画像を扱ってみよう
さて、肩ならしが出来たところで、実際に画像を扱ってみましょう!Fijiチュートリアルの2.Your first Fiji scriptの、Grabbing an open imageを見てみて下さい。
①画像情報を取得する。
まずは、サンプル画像を開いてみましょう。
Fiji->File->Open Samples->Leaf(36K)を開いて下さい。
①画像情報を取得する。
まずは、サンプル画像を開いてみましょう。
Fiji->File->Open Samples->Leaf(36K)を開いて下さい。
葉っぱの画像が出てきました。
それから、以下のコードを開いているマクロに書いてみて下さい!
それから、以下のコードを開いているマクロに書いてみて下さい!
すると、img[:leaf.jpg (507x446x1x1x1)]という情報が表示されます。これは、今開いている画像の情報なのです。縦が446px、横が507pxで、重なっている画像は1枚だということが分かります。
どうして、画像情報が表示されるのでしょうか?その鍵はijというモジュールにあります。ijとは、 ImageJ 機能をまとめたモジュールで、その中に IJ という機能群(正確にはクラス)があります。この、IJというクラスの中に、画像に関する情報を扱う内容が含まれており、画像情報を表示することが出来るのです。
from ij import IJというのは、ijという名前のついた道具箱から、IJという道具を使いますよ、と言っています。プログラムでは、最初にこのように宣言をすることがあります。
そして、imp = IJ.getImage()という呪文で、画像の情報を取得しています。このgetImageもIJ クラス(機能群)の中にある 関数の一つです。このgetImageを使うと、画像の情報を取得して、=によって、代入することが出来ます。
impとは、ImageJ 上で開いている画像を示すローカル関数(その場でしか使えない関数)のことです。print impと書いて、impの中身を表示する命令を実行すると、先程impに代入された画像の情報が表示されます。
impとはImagePlusの略称で、画像を代入する箱、画像を抽象化する単位です。
②直接画像を保存
それでは、次にPCに画像を保存してみましょう!
チュートリアルでは、Saving an image directly to a fileという項目をご覧下さい。
チュートリアルの右側に紹介されている以下のコードをコピーしてエディタの中に貼付けて下さい。
そして、imp = IJ.getImage()という呪文で、画像の情報を取得しています。このgetImageもIJ クラス(機能群)の中にある 関数の一つです。このgetImageを使うと、画像の情報を取得して、=によって、代入することが出来ます。
impとは、ImageJ 上で開いている画像を示すローカル関数(その場でしか使えない関数)のことです。print impと書いて、impの中身を表示する命令を実行すると、先程impに代入された画像の情報が表示されます。
impとはImagePlusの略称で、画像を代入する箱、画像を抽象化する単位です。
②直接画像を保存
それでは、次にPCに画像を保存してみましょう!
チュートリアルでは、Saving an image directly to a fileという項目をご覧下さい。
チュートリアルの右側に紹介されている以下のコードをコピーしてエディタの中に貼付けて下さい。
上のコードは、パス(ファイルのある場所)を指定して画像を保存する命令になります。
folder = "/home/albert/Desktop/t2/fiji-tutorial"となっているところが、保存するフォルダの場所です。
folderが予め、指定されていて、そこに保存するようになっています。もしフォルダが無ければ、
もちろんエラーになってしまいます。
それぞれのPCで作っているフォルダが違うと思いますので、自分で適宜設定してみて下さい!
from ij.io import FileSaverという新しい表記がありますが、
画像ファイルを保存する際にio:入出力(input/output)を宣言しています。
今回は、画像を保存する為に、ファイルを出力するので、ioという表記が書かれています。
そして、上書き保存の方法を示しているのが、FileSaverというクラスです。
ただ、この場合、予め指定した場所が無いと、エラーになって、画像が保存されません。
そこでもう少し改良したコードがこちらです。
folder = "/home/albert/Desktop/t2/fiji-tutorial"となっているところが、保存するフォルダの場所です。
folderが予め、指定されていて、そこに保存するようになっています。もしフォルダが無ければ、
もちろんエラーになってしまいます。
それぞれのPCで作っているフォルダが違うと思いますので、自分で適宜設定してみて下さい!
from ij.io import FileSaverという新しい表記がありますが、
画像ファイルを保存する際にio:入出力(input/output)を宣言しています。
今回は、画像を保存する為に、ファイルを出力するので、ioという表記が書かれています。
そして、上書き保存の方法を示しているのが、FileSaverというクラスです。
ただ、この場合、予め指定した場所が無いと、エラーになって、画像が保存されません。
そこでもう少し改良したコードがこちらです。
改良したコードでは、そもそもファイルが存在するかどうかをチェックしています。
まず、フォルダ名のチェック(if path.exists(folder))、それがフォルダなのかどうか(path.isdir(folder))をチェックします。もし、どちらもOKだったら、「フォルダは存在しますよ〜」と表示します。
次に、指定したファイルの場所(パス)が存在する=同じ名前のファイルが既に存在する時は、
「ファイルは存在するので、上書きすることになりますよ」と表示します。
もしファイルがまだ存在しなければ、所定の場所(パス)に、「ファイルが保存されましたよ〜」と表示してくれます。
elifでチェックした時にimp(ファイルパスの中身)は保存されます。
ここで、新たに"from os import path "という言葉が、最初の宣言に加わりました。ここでのosとはos自体の能力のこと。pythonにもともと備わっている処理能力のことを指します。from os import pathと書くことで、ファイルのパス(場所)を指定することが出来るようになります。
さて、今回の講座はいかがだったでしょうか?
次回、より高度なPythonの画像処理について見ていきます!
まず、フォルダ名のチェック(if path.exists(folder))、それがフォルダなのかどうか(path.isdir(folder))をチェックします。もし、どちらもOKだったら、「フォルダは存在しますよ〜」と表示します。
次に、指定したファイルの場所(パス)が存在する=同じ名前のファイルが既に存在する時は、
「ファイルは存在するので、上書きすることになりますよ」と表示します。
もしファイルがまだ存在しなければ、所定の場所(パス)に、「ファイルが保存されましたよ〜」と表示してくれます。
elifでチェックした時にimp(ファイルパスの中身)は保存されます。
ここで、新たに"from os import path "という言葉が、最初の宣言に加わりました。ここでのosとはos自体の能力のこと。pythonにもともと備わっている処理能力のことを指します。from os import pathと書くことで、ファイルのパス(場所)を指定することが出来るようになります。
さて、今回の講座はいかがだったでしょうか?
次回、より高度なPythonの画像処理について見ていきます!