12-24-2019 01:25 AM - 最終編集日: 11-20-2024 03:49 PM 、編集者: Content Cleaner
~~時は遡り学生時代,研究室での友人との会話~~
当時私の友人S君は大腸菌抽出のためのカラム開発に関する研究を行っており,様々な形状のカラムを試作しては大腸菌がどれだけ捕捉されるのかということを調べ続ける日々を送っていた。
ある日S君は,研究室にあるPCと睨めっこしていたので,私は彼に声をかけた。
(以下,関西弁)
私「S君,ジッとパソコン見続けて何してんの?」
S君「ああああああ,声かけないで!!!」
私「??」
私「どうしたん?」
S君「いま集中切れちゃったからやり直しやわ。」
私「すまん,今何してたの?」
S君「カラムでキャッチした大腸菌を染色したものを画像にして,今カウントしてんねん。」
S君「これが結構見にくくてめんどくさいねんな~」
---------
日本NI技術部の米田です。
大学で過ごした研究室での思い出が懐かしく感じる今日この頃です。
さて,上記の会話をふまえて皆様はどう感じられましたでしょうか。
「いや,集中してる人に声かけるなよ・・・・」
「S君がかわいそう・・・・」
「大腸菌のカラム?なにそれおいしいの・・・?」
など様々な意見があるかと思いますが,今の私なら友人にこう伝えます。
「え,そんなのVision Assistantで大腸菌を自動カウントするプログラム作っちゃえば?」
・・・とはいうものの,プログラミング経験がなければ画像処理に関するプログラムを作成するなんて難しいですよね。
特にライフサイエンスはAIや機械学習などといった技術と共に今後発展していくことが期待されている分野ですが,ライフサイエンス分野の科学者・エンジニアがソフトウェアの知識に乏しく自動化があまり進んでいないことも実情です。
しかし!
NIのVision Assistantを使用すれば,対話形式で画像処理に関するスクリプトを追加し,汎用性のある画像処理コード(LabVIEW VIコードやCコード)を作成することができます。
今回の記事では,
①画像内の対象物をカウントするコードをVision Assistantで作成する一連の流れ
②LabVIEW VIコードを作成し,実際にLabVIEW上でカウントするプログラムを実行する
上記の二点について主にご説明させていただきます。
大学でご研究されている学生様だけではなく,これから画像処理を進めていこうと志されている幅広い科学者・エンジニア向けの記事となりますので,ぜひ最後まで目を通していただけると幸いです!
---------
まずは①画像内の対象物をカウントするコードをVision Assistantで作成する一連の流れについて下記でご説明します。
まずVision Assistantとは何かを説明すると,NIのマシンビジョンソフトウェアの開発に必要なVision Development Moduleに含まれるソフトウェアの一つです。
Vision Development Moduleとは - National Instruments
https://www.ni.com/ja/shop/data-acquisition-and-control/add-ons-for-data-acquisition-and-control/wha...
今回は例として,下記の画像に含まれる細胞の数をカウントするコードをVision Assistant上で作成していきます!
赤色の部分が細胞核,緑色の部分が細胞壁にあたりますので,細胞の数をカウントするに当たり画像内の赤色の細胞核がいくつ存在しているのかをカウントするコードを作成することを目標としたいと思います。
<今回使用する画像>
ヒト臍帯静脈内皮細胞 (HUVEC) CD31 の免疫蛍光染色画像(①)
では実際にVision Assitant(使用したバージョン:2019)を使用して画像処理を始めていきましょう。
Vision Assitantを立ちあげて今回使用する画像を取り込むと下記のような様子になります。
<Vision Assistantで細胞画像を読み込み!>
上図で赤線で囲まれている部分については画像処理に関する様々な関数が用意されており,これらの関数を組み合わせていくことにより希望している画像処理を実現します。使用する関数については青線で囲まれている部分に追加され,画像処理のスクリプトを確認しながら進めて行くことができます。
今回は細胞の数をカウントすることが最終的なゴールですので,まずは赤色の細胞部分のみを画像から抽出していきます。
カラー画像について処理を行いますので「処理関数:カラー」に含まれる「カラープレーン抽出」関数を用いて赤色部分の情報を抽出します。
<カラープレーン抽出の処理をスクリプトに追加>
「カラープレーン抽出」関数を用いて赤色のプレーンについて抽出を行ったところ,元々の画像のうち赤色の部分(細胞の核部分)が強調されるようなグレースケール画像に変換されされました。またこちらの関数を使用すると自動的に「カラープレーン抽出」関数のスクリプトが追加されていることが確認できます。
次にこちらのグレースケール画像を2値化を行うことでバイナリ画像に変換してみましょう。「処理関数:グレースケール」に含まれる「2値化」関数を用いてグレースケール画像をバイナリ画像に変換することができますので,変換後の画像が下記のものになります。
<グレースケールからバイナリ画像に変換>
「さあ,それでは細胞の数をカウントしよう!」
・・・と進めたいところですが,細胞壁(緑色)だった部分の情報も赤色の細かい点として一部残ってしまっていますので,これでは適切に解析ができない可能性があります。そこで最後の仕上げとしてこの画像を細胞核部分のみに着目できるようにブラッシュアップしていきましょう。「処理関数:バイナリ」に含まれる「上級モフォロジー」関数を用いて,画像内の小さな点を取り除くことができますので下記で試してみましょう。
<バイナリ画像内の細かい点を消去!>
上記の画像では画像から不要な要素(小さな点)を取り除き,着目したい細胞核の部分のみを抽出することができました。
「処理関数:バイナリ」に含まれる「粒子解析」関数を用いると画像内の総素数をカウントするので,こちらの関数を使用して細胞数をカウントしてみましょう!
<細胞数をカウント!>
上記の画像からわかるように画像内の独立して存在している要素をカウントし,画像内に364個の細胞が存在していることをカウントしていることを計算することができました!!
(上記の画像では細胞同士が重なっている部分などについては適切にカウントできていない部分がありますが,細胞核同士が重なっている部分を別の細胞としてカウントできるようにさらに処理を加えることで実現可能です。)
このように取得される画像に応じてNI Vision Assitantの各関数を組み合わせることにより,簡単に細胞数をカウントするコードを作成することができました。
次に②LabVIEW VIコードを作成し,実際にLabVIEW上でカウントするプログラムを実行する方法について説明します。
LabVIEWコードを作成する方法については非常に簡単で,メニューバーのツールから「LabVIEW VIを作成...」を選択します。
<NI Vision AssistantからLabVIEW VIを作成>
NI Vision AssitantからLabVIEW VIを作成すると,下記のようなVIが作成されます。
このVIを応用することにより,複数枚の画像内の細胞数をカウントしたり,また収録している動画内に存在している細胞数をカウントするなど様々な処理の自動化を行うことができます。
<作成されたLabVIEW VIコード>
<LabVIEW VIで細胞カウントの画像処理を実行>
---------
ここまで記事をご覧いただき,ありがとうございました。
Vision Assistantが含まれるVision Development Module,また自動化を行うLabVIEWについては有償のソフトウェアとなりますが,新規でインストールしていただくと評価版として一定期間全機能を使用していただくことが可能ですので,ご興味を持っていただいた方は下記のダウンロードページからお手元のPCなどへインストールをして使用していただけると嬉しい限りです。
Vision Development Module Download - National Instruments
https://www.ni.com/ja/support/downloads/software-products/download.vision-development-module.html
LabVIEW Download - National Instruments
https://www.ni.com/ja/support/downloads/software-products/download.labview.html
また弊社では下記の記事のようにFPGAやGPUと組み合わせて使用することにより,処理の高速化を実現した実例など多くの画像アプリケーション作成に貢献した実績があります。ご作成したいアプリケーション・解決されたい課題などあればぜひお気軽にご相談ください。
<画像引用先>
①:正常ヒト初代培養細胞 - 臍帯関連 | Umbilical Cord Cell System | コスモ・バイオ株式会社
https://www.cosmobio.co.jp/product/detail/scr-20130304-4.asp?entry_id=10657
この記事を書いた人
米田 実紀
大阪生まれ,兵庫育ち,京都へ進学した生粋の関西人。
日本ナショナルインスツルメンツ(NI)にて,Technical Support Engineerとして幅広い業界のお客様への技術サポートやNIのソフトウェアトレーニング講師などを担当。
新しいもの好きで,昨日までなかった新しい技術の誕生を後押しするためにNIに入社。
現在の興味分野:機械学習,アグリテック,サッカー