2016年9月14日 更新

【Python講座6】Pythonで画像処理

これまで勉強してきたPythonのスキルをベースに、画像処理についてやっていきたいと思います!

16,812 view お気に入り 1

実際に画像を扱ってみよう

さて、肩ならしが出来たところで、実際に画像を扱ってみましょう!Fijiチュートリアルの2.Your first Fiji scriptの、Grabbing an open imageを見てみて下さい。

①画像情報を取得する。

まずは、サンプル画像を開いてみましょう。
Fiji->File->Open Samples->Leaf(36K)を開いて下さい。
 (678)

葉っぱの画像が出てきました。

それから、以下のコードを開いているマクロに書いてみて下さい!
 (680)

すると、img[:leaf.jpg (507x446x1x1x1)]という情報が表示されます。これは、今開いている画像の情報なのです。縦が446px、横が507pxで、重なっている画像は1枚だということが分かります。
 (682)

どうして、画像情報が表示されるのでしょうか?その鍵は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という項目をご覧下さい。
チュートリアルの右側に紹介されている以下のコードをコピーしてエディタの中に貼付けて下さい。
 (685)

上のコードは、パス(ファイルのある場所)を指定して画像を保存する命令になります。

folder = "/home/albert/Desktop/t2/fiji-tutorial"となっているところが、保存するフォルダの場所です。
folderが予め、指定されていて、そこに保存するようになっています。もしフォルダが無ければ、
もちろんエラーになってしまいます。

それぞれのPCで作っているフォルダが違うと思いますので、自分で適宜設定してみて下さい!

from ij.io import FileSaverという新しい表記がありますが、
画像ファイルを保存する際にio:入出力(input/output)を宣言しています。
今回は、画像を保存する為に、ファイルを出力するので、ioという表記が書かれています。
そして、上書き保存の方法を示しているのが、FileSaverというクラスです。

ただ、この場合、予め指定した場所が無いと、エラーになって、画像が保存されません。

そこでもう少し改良したコードがこちらです。
 (687)

改良したコードでは、そもそもファイルが存在するかどうかをチェックしています。

まず、フォルダ名のチェック(if path.exists(folder))、それがフォルダなのかどうか(path.isdir(folder))をチェックします。もし、どちらもOKだったら、「フォルダは存在しますよ〜」と表示します。

次に、指定したファイルの場所(パス)が存在する=同じ名前のファイルが既に存在する時は、

「ファイルは存在するので、上書きすることになりますよ」と表示します。

もしファイルがまだ存在しなければ、所定の場所(パス)に、「ファイルが保存されましたよ〜」と表示してくれます。

elifでチェックした時にimp(ファイルパスの中身)は保存されます。

ここで、新たに"from os import path "という言葉が、最初の宣言に加わりました。ここでのosとはos自体の能力のこと。pythonにもともと備わっている処理能力のことを指します。from os import pathと書くことで、ファイルのパス(場所)を指定することが出来るようになります。

さて、今回の講座はいかがだったでしょうか?

次回、より高度なPythonの画像処理について見ていきます!
28 件

関連する記事 こんな記事も人気です♪

画像の再構成理論〜概要、まとめ〜

画像の再構成理論〜概要、まとめ〜

今回は、以前4回にわたって記事として投稿した画像の再構成理論の概要について述べ、それのまとめをしたいと思います。
画像処理におけるフーリエ変換④〜pythonによるフィルタ設計〜

画像処理におけるフーリエ変換④〜pythonによるフィルタ設計〜

画像処理におけるフーリエ変換の最終回として、pythonによるフィルタ設定についてご紹介します。
pythonで学ぶOpenCV① 〜インストール、サンプルの実行〜

pythonで学ぶOpenCV① 〜インストール、サンプルの実行〜

pythonで学ぶOpenCVの第一回目についてご紹介します。
LP-tech2周年記念#人気記事のまとめ#第5位〜第1位

LP-tech2周年記念#人気記事のまとめ#第5位〜第1位

LP-techが始まってから2周年を迎えました。ここまでLP-techを続けることができたのも読者の皆様のおかげだと思っています。そこで、LP-techの感謝祭ということで、人気の記事を第20位から第1位までをご紹介します。今回は第5位〜第1位までです。
LP-tech2周年記念#人気記事のまとめ#第10位〜第6位

LP-tech2周年記念#人気記事のまとめ#第10位〜第6位

LP-techが始まってから2周年を迎えました。ここまでLP-techを続けることができたのも読者の皆様のおかげだと思っています。そこで、LP-techの感謝祭ということで、人気の記事を第20位から第1位までをご紹介します。今回は第10位〜第6位までです。

この記事のキーワード

この記事のキュレーター

エルピクセル編集部 エルピクセル編集部