以下、本発明の実施の形態に係る液滴測定システム、液滴測定方法、及びプログラムについて、図面を参照しながら説明する。なお、これらの実施の形態によって本発明が限定されるものではない。また、各図面の記載において、同一部分には同一の符号を付して示している。
以下の説明において参照する図面は、本発明の内容を理解し得る程度に形状、大きさ、及び位置関係を概略的に示しているに過ぎない。即ち、本発明は各図で例示された形状、大きさ、及び位置関係のみに限定されるものではない。また、図面の相互間においても、互いの寸法の関係や比率が異なる部分が含まれている場合がある。
(液滴測定システムの構成)
図1は、本発明の一実施形態に係る液滴測定システムの概略構成を示す図である。図1においては、本実施形態に係る液滴測定システム10を、輸液バッグ2に充填された液体(点滴液)点滴する点滴装置1に適用した例を示している。点滴装置1は、輸液バッグ2に接続された中間チューブ3、点滴筒4、及び輸液チューブ5を含み、点滴筒4内には
ノズル6が取り付けられている。液滴測定システム10は、このノズル6の先端部(以下、ノズル先端部ともいう)6aから滴下する液滴7の体積を測定すると共に、測定した体積をもとに点滴の流量を制御する。
もっとも、本実施形態に係る液滴測定システム10は、点滴装置1に限らず、例えば、所定量の液体を吐出するピペットなど、ノズルの先端から液滴を滴下する種々の機器に適用することが可能である。
図1に示すように、輸液バッグ2は、薬液や栄養剤等の点滴液が充填された容器であり、点滴中には支持台等に吊り下げられて保持される。中間チューブ3は、一端において輸液バッグ2の排液ポート2aと接続され、他端において点滴筒4の上蓋4aに取り付けられたノズル6の一端と接続されている。このノズル6の他端は、点滴筒4内に突出するように設けられている。
輸液チューブ5は弾性材料によって形成されている。この輸液チューブ5の途中には、輸液チューブ5を径方向に押圧可能なクレンメ8と、クレンメ8を駆動するアクチュエータ9とが設けられている。
アクチュエータ9は、電気的な制御の下でクレンメ8を駆動することにより、クレンメ8による輸液チューブ5に対する押圧力を変化させる。それにより、輸液チューブ5の内径が変化(開閉)し、輸液チューブ5内を流通する点滴液の流量を調節することができる。それに伴い、点滴筒4の内圧が変化し、ノズル6から滴下する液滴7の滴下周期、言い換えると単位時間あたりの液体の流量が変化する。
液滴測定システム10は、ノズル先端部6aの近傍を照明する光源11と、ノズル先端部6aの近傍を撮像して画像データを生成するカメラ12と、カメラ12が生成した画像データに基づいて液滴の体積を算出する情報処理装置100とを備える。また、液滴測定システム10は、液滴の体積の算出結果等を表示する表示装置13や、点滴筒4に取り付けられた傾きセンサ14をさらに備えても良い。
光源11は、例えばLED(Light Emitted Diode)等の発光素子と、該発光素子から出射した光が平行光となるように配光制御するフィルタやレンズ等の光学系とを備える。光源11は、カメラ12の視野と対向するように設置され、液滴が滴下するノズル先端部6aの近傍を、液滴7の背後から照明する。
カメラ12は、CCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)等の撮像素子12aを有し、所定の撮像フレームレートで動画又静止画の撮像が可能な撮像装置である。撮像素子12aは、カメラ12に入射し、光学系により結像させられた光(被写体像)を受光面において受光し、光電変換を行うことにより電気信号を生成する。カメラ12は、この電気信号に対し、増幅、A/D変換等の所定の信号処理を施すことにより画像データを生成して出力する。
カメラ12のスペックは、測定対象とする点滴装置1に応じて適宜構成することができる。一例として、点滴装置1が医療分野において一般的に用いられる装置である場合、点滴筒4を近距離から撮像することができ、且つユーザによる点滴操作の邪魔にならないように、カメラモジュールの外径が数mm~十数mm程度、且つ、焦点距離が数mm~数十mm程度の小型カメラを用いると良い。
撮像素子12aとしては、トータルの画素数が50万画素以下の汎用の製品を用いることができる。詳細には、長手方向の画素数が480~800程度、短手方向の画素数が320~600程度であって、縦横比が1以上であれば良い。後述するように、本実施形態においては、撮像素子12aの長手方向が鉛直方向、短手方向が水平方向となるようにカメラ12を設置する。そのため、以下においては、撮像素子12aの長手方向を縦方向、短手方向を横方向という。
カメラ12の撮像フレームレートは、30~120fps(フレームレート/秒)程度の範囲であれば良い。ローコストを重視する場合、30fps程度のフレームレートであっても良い。この場合、設定された点滴の流量が高いとき(即ち、滴下周期が短いとき)には測定が困難になることもあるが、一般的な点滴において設定される流量であれば十分に対応可能であり、以下に説明するアルゴリズムは、低フレームレートによる精度の低下をカバーし得るものとなっている。また、特に精度を重視する場合や、高流量の点滴を測定する場合には、フレームレートを60fps以上としても良い。この場合、カメラのコストは高くなるが、フレームレートが高いほど性能の向上が期待できる。好ましくは、上記範囲内で撮像フレームレートが可変であると良い。
カメラ12は、ノズル先端部6a及び該ノズル先端部6aから下方の所定範囲を視野に収めるように設置される。具体的には、滴下する直前にノズル先端部6aに垂下している液滴の全体が視野に収まれば良い。この際、ノズル先端部6aから離れて落下中の液滴については、その一部又は全部が視野から外れても良い。ノズル先端部6aに垂下する液滴の大きさは、ノズルの径、液体の粘度、滴下周期等の条件によって変化するため、ワークディスタンスWD(被写体からカメラ12のレンズ先端までの距離)を調節することにより、カメラ12の視野に収める被写体の範囲を決定すると良い。例えば、1mLを20滴で滴下するための大人用ノズル(20滴/mL用)を用いる場合、垂下する液滴は比較的大きくなるので、ワークディスタンスWDを長めにすると良い。また、1mLを60滴で滴下するための小児用ノズル(60滴/mL用)を用いる場合、垂下する液滴は比較的小さくなるので、ワークディスタンスWDは短めでも良い。
好ましくは、カメラ12に対物側テレセントリックレンズを設けても良い。ここで、点滴筒4内におけるノズル6の位置や傾きは個体によって異なることがあるため、点滴筒4とカメラ12との標準的な距離を定めておいたとしても、実際のワークディスタンスWDが変化してしまうことがあり得る。このような場合、通常の集光レンズを介して撮像素子12aに光を入射させると、撮像素子12aの受光面における被写体像のサイズが変動してしまい、液滴7の体積算出処理において誤差が生じるおそれがある。これに対し、テレセントリックレンズを介して撮像素子12aに光を入射させることにより、ワークディスタンスWDが変化した場合であっても、受光面における被写体像のサイズの変動を抑制することができる。なお、カメラ12に結像側テレセントリックレンズを設けても良いが、必須ではない。
図2は、情報処理装置100の概略構成を示すブロック図である。情報処理装置100としては、液滴測定システム10専用に構成した機器の他、パーソナルコンピュータ(PC)やノートPC等の汎用の情報処理装置を用いることができる。図2に示すように、情報処理装置100は、入出力部101と、操作入力部102と、記憶部103と、演算部104とを備える。
入出力部101は、カメラ12や表示装置13等の各種外部機器との間で画像データや種々の信号の入出力を行う外部インタフェースである。
操作入力部102は、入力ボタン、スイッチ、キーボード、マウス、タッチパネル等の入力デバイスによって構成され、ユーザによりなされた操作に応じた信号を演算部104に入力する。操作入力部102に対してなされる操作には、カメラ12に撮像を開始させる操作又は終了させる操作や、点滴(ノズル6からの液滴の滴下)を開始させる操作又は終了させる操作や、点滴の流量の設定値を入力する操作等が挙げられる。
記憶部103は、ディスクドライブや、ROM、RAM等の半導体メモリなどのコンピュータ読取可能な記憶媒体を用いて構成される。記憶部103は、複数の物理デバイスを1つの論理デバイスにマッピングして構築しても良いし、1つの物理デバイスを複数の論理デバイスにマッピングして構築しても良い。記憶部103は、オペレーティングシステムプログラムやドライバプログラムの他、情報処理装置100に所定の動作を実行させるためのプログラムや、該プログラムの実行中に使用される各種データ及び設定情報等を記憶する。
詳細には、記憶部103は、ノズル6から滴下する液滴の体積を測定するための液滴測定プログラムを記憶するプログラム記憶部111と、カメラ12から出力され、液滴の体積測定に用いられた画像の画像データを記憶する画像データ記憶部112と、液滴の体積測定に用いられる各種設定値を記憶する設定値記憶部113と、液滴の体積の測定値を記憶する測定値記憶部114と、画像データを一時的に記憶するバッファ記憶領域として設けられた滴下検出用画像バッファ115及び体積算出用画像バッファ116とを含む。滴下検出用画像バッファ(第1のバッファ記憶領域)115は、カメラ12から出力され、後述する画像生成部131により所定の画像処理が施された画像の画像データを一時的に記憶する。体積算出用画像バッファ(第2のバッファ記憶領域)116は、滴下検出用画像バッファ115に記憶された画像データのうち、液滴の体積測定に用いられる画像の画像データを一時的に記憶する。
演算部104は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)等のハードウェアを用いて構成され、プログラム記憶部111に記憶されているプログラムを読み込んで実行することにより、情報処理装置100の各部へのデータ転送や指示を行い、情報処理装置100の動作を統括的に制御する。また、演算部104は、プログラム記憶部111に記憶された液滴測定プログラムを実行することにより、カメラ12から取得した画像データに基づいて、ノズル6から滴下する液滴の体積を測定する演算処理を実行する。詳細には、演算部104が液滴測定プログラムを実行することにより実現される機能部には、撮像制御部121と、流量制御部122と、画像処理部123とが含まれる。
撮像制御部121は、カメラ12に対する撮像の開始及び終了を制御すると共に、所定の撮像フレームレートで撮像を実行するようにカメラ12の動作を制御する。また、撮像制御部121は、撮像素子12aの撮像領域を制限する制御を行っても良い。例えば、画素数が800×600画素の撮像素子12aに対し、実効的な撮像領域を(480~800)×(320~600)画素の範囲において可変で設定可能とし、設定された撮像領域内に配置された画素のみから画像信号を取得するように制御する。このように、撮像領域を可変とすることで、ノズルの径や点滴される液体の粘度や滴下周期等の条件によらず、ノズル6に垂下する液滴全体を視野に収めつつ、画像信号に対する処理の負荷を軽減することができる。
流量制御部122は、操作入力部102から入力される信号に応じてアクチュエータ9の動作を制御することにより、ノズル6からの液滴の滴下を開始及び終了させると共に、後述する画像処理部123により算出される液滴の体積に基づいて、予め設定された流量となるようにアクチュエータ9の動作を制御する。
画像処理部123は、画像生成部131と、エラー判定部132と、流量推定部133と、滴下検出部134と、体積算出部135とを有し、カメラ12から入力された画像データに対して所定の処理を行い、ノズル6から滴下する液滴の体積を算出する。
詳細には、画像生成部131は、カメラ12から順次入力される画像データに対してデモザイキング、ホワイトバランス処理、ガンマ補正等の所定の画像処理を施すことにより、ノズル6から液滴が滴下する様子が写った画像を時系列順に生成する。
エラー判定部132は、画像におけるノズル先端部6aの像の位置に基づいて、ノズル6に対するカメラ12の相対的な位置が適性であるか否かを判定する。
流量推定部133は、画像におけるノズル先端部6aの像の形状と太さとの少なくともいずれかに基づいて、ノズル6から滴下する液滴の標準的な流量を推定する。ここで、標準的な流量とは、20滴/mL、60滴/mLといったノズルの種類ごとに設定可能な流量値(範囲)のことである。
滴下検出部134は、画像生成部131により時系列順に生成される画像において、液滴がどのような状態にあるのかを判定することにより、ノズル6から液滴が離れて滴下し始めた状態を写した画像である滴下開始画像を検出する。詳細には、滴下検出部134は、滴下待機判定部141及び滴下開始判定部142を含む。
滴下待機判定部141は、画像生成部131により順次生成される画像に対し、ノズル先端部6aが写った位置から所定の距離だけ下方の位置に、所定の大きさを有する矩形領域を設定し、該矩形領域内を監視することにより、ノズル先端部6aに液滴が垂下している状態(滴下待機状態)を写した画像である滴下待機画像を検出する。滴下開始判定部142は、滴下待機画像が検出された後、画像生成部131により順次生成される画像における上記矩形領域内を監視することにより、ノズル6に垂下していた液滴がノズル6から離れて落下し始めた状態を写した画像である滴下開始画像を検出する。以下、滴下待機判定部141及び滴下開始判定部142が画像に設定する矩形領域のことを、監視領域という。
体積算出部135は、滴下開始画像を含む連続する複数フレームの画像のうち、滴下開始画像の所定フレーム前の画像及び所定フレーム後の画像を用いて、滴下開始画像に写った(即ち、落下中の)液滴の体積を算出する。詳細には、体積算出部135は、滴下開始画像の所定フレーム前の画像に写った液滴の像の領域を抽出する領域抽出部143と、抽出された領域を回転体の投影像とみなし、該回転体をスライスした円の面積を算出する円面積算出部144と、算出された円の面積を積算する積算部145とを含む。また、体積算出部135は、算出された液滴の体積を補正する誤差補正部146と、液滴の流量の設定値に応じて液滴の体積算出アルゴリズムを調整する高流量調整部147とをさらに含んでも良い。
なお、演算部104のハードウェア構成は上述したものに限定されず、FPGA(Field Programmable Gate Array)などの回路を用いて、演算部104の各機能構成を実現しても良い。
表示装置13は、液晶ディスプレイや有機ELディスプレイ等によって構成され、情報処理装置100の制御の下、情報処理装置100から出力された制御信号や、情報処理装置100により生成された画像や、液滴の測定値等を表示する。
傾きセンサ14は、例えば、ジャイロセンサや加速度センサによって構成され、鉛直方向の軸に対する点滴筒4の傾きを検出する。ここで、ノズル6は点滴筒4に固定されているため、点滴筒4の傾きはノズル6の傾きとほぼ等しいと考えて良い。
(液滴測定システムの動作)
次に、液滴測定システム10の動作について説明する。図3は、液滴測定システム10の動作を示すフローチャートである。
点滴開始に先立って、ユーザは、点滴筒4の近傍に光源11及びカメラ12を設置する(図1参照)。この際、ユーザは、情報処理装置100を操作してカメラ12に撮像を実行させることにより画像を表示装置13に表示させ、画像を見ながら、ノズル先端部6a及びノズル先端部6aの下方の所定範囲が撮像素子12aの視野に入るように、光源11、点滴筒4、及びカメラ12の位置関係を調整すると良い。
ステップS10において、情報処理装置100は、操作入力部102から入力された信号に基づいて、ノズル6から滴下させる液滴7の流量を設定する。
続くステップS20において、情報処理装置100は、点滴装置1の初期設定を行う。図4は、初期設定の1つとして実行されるノズルの位置出し処理を示すフローチャートである。図5及び図6は、ノズルの位置出し処理を説明するための模式図である。
ここで、カメラ12とノズル先端部6a(液滴の排出口)との相対位置が不定である場合、ノズル6から液滴7が離れて落下し始めたタイミングの検知が困難になる、液滴7の体積の測定精度が低下する、といった問題が生じるおそれがある。そのため、図5の(a)に示すように、カメラ12の画角のほぼ中心に液滴7の中心が位置するようにノズル6を配置する必要がある。それにより、図5の(b)に示すように、画像m10に、ほぼ正面から見たノズルの端部m12が写ると共に、液滴の像m11の形状の歪を極力低減できるからである。これに対し、図6の(a)に示すように、ノズル先端部6aがカメラ12の画角の端部に位置していると、ノズル6を斜め上から見ている状態になり、ノズル6から液滴7が離れる瞬間を明確に捉えることができなくなってしまう。また、図6の(b)に示すように、画像m13において、液滴の像m14の形状が大きく歪んでしまう。
そこで、本実施形態においては、図4に示すように、点滴装置1をセットした後、点滴を開始する前の段階で、情報処理装置100がカメラ12に撮像を実行させ(ステップS101)、ノズル6が写った画像を生成する。
これに応じて、エラー判定部132は、生成された画像におけるノズルの下端の位置を検出する(ステップS102)。続いて、エラー判定部132は、ノズルの下端の位置が画像の所定範囲r1内にあるか否かを判定する(ステップS103)。
ノズルの下端の位置が所定範囲r1内にある場合(ステップS103:Yes、図5参照)、エラー判定部132は、流量制御部122に対し、滴下開始を許可する(ステップS104)。その後、処理はメインルーチンに戻る。この場合、ユーザが操作入力部102を用いて点滴開始の操作を行うと、流量制御部122が設定された流量でアクチュエータ9の動作を開始させる。
他方、ノズルの下端の位置が所定範囲r1内にない場合(ステップS103:No、図6参照)、エラー判定部132はエラー信号を出力し(ステップS105)、その後、処理はステップS101に戻る。この場合、ユーザが点滴開始の操作を行っても、流量制御部122はアクチュエータ9の動作を開始させない。これにより、カメラ12とノズル先端部6aとの位置関係が不適切な状態で点滴が開始されるというエラーを防ぐことができる。この場合、ユーザはカメラ12とノズル6との相対位置を調整する必要がある。
図7は、もう一つの初期設定(図3のステップS20)として実行されるノズル検知処理を示すフローチャートである。図8及び図9は、ノズル検知処理を説明するための模式図である。
ここで、一般的な点滴装置としては、20滴/mL用と60滴/mL用との2種類が存在しており、点滴装置の種類ごとに、設定可能な流量の範囲(最低流量及び最高流量)が規定されている。流量の設定は、通常、ユーザが手動で行うが、設定された流量が規定範囲から外れる場合、正確な流量制御が困難となってしまう。
そこで、本実施形態においては、図4に示すノズルの位置出し処理を実行し、カメラ12とノズル先端部6aとの位置関係が適正に調整された後、図7に示すように、再び情報処理装置100がカメラ12に撮像を実行させ(ステップS111)、ノズル6が写った画像を生成する。
これに応じて、エラー判定部132は、生成された画像からノズルの像を検出し、この像に基づいて、ノズルの先端部近傍の太さを測定する(ステップS112)。或いは、ノズルの先端部近傍の太さの代わりに、若しくは、太さと共に、先端部近傍の形状を検出しても良い。続いて、エラー判定部132は、ノズルの先端部近傍の太さ(及び/又は形状)に基づいて、ノズルを含む点滴装置に対して規定された流量の範囲(規定範囲)を取得する(ステップS113)。
例えば、図8に示す画像m20におけるノズルの像m21は、20滴/mL用のノズルを表している。また、図9に示す画像m22に写ったノズルの像m23は、60滴/mL用のノズルを表している。20滴/mL用のノズルと60滴/mL用のノズルとでは、太さ及び形状が異なっており、後者の方が細く、ストレートな形状となっている。そこで、画像m20、m22におけるノズルの像m21、m23の太さw1~w4を測定することにより、セットされたノズル6の太さや形状を検知し、用途(20滴/mL用、60滴/mL用など)を把握することが可能となる。
続いて、エラー判定部132は、ステップS10(図3参照)において設定された流量が、ステップS113において取得された規定の流量の範囲内であるか否かを判定する(ステップS114)。流量の設定値が規定範囲内である場合(ステップS114:Yes)、エラー判定部132は、流量制御部122に対し、滴下開始を許可する(ステップS115)。その後、処理はメインルーチンに戻る。この場合、ユーザが操作入力部102を用いて点滴開始の操作を行うと、流量制御部122が設定された流量でアクチュエータ9の動作を開始させる。
他方、流量の設定値が規定範囲外である場合(ステップS114:No)、エラー判定部132はエラー信号を出力し(ステップS116)、その後、処理はステップS111に戻る。この場合、ユーザが点滴開始の操作を行っても、流量制御部122はアクチュエータ9の動作を開始させない。これにより、不適切な流量で点滴を開始するというエラーを防ぐことができる。この場合、ユーザは、規定の流量の範囲内となるように流量を設定し直すか、又は、点滴装置1を交換する必要がある。
再び図3を参照すると、ステップS20に続くステップS30において、情報処理装置100はカメラ12に撮像を開始させる。それにより、カメラ12から情報処理装置100に画像データが順次に入力される。情報処理装置100において、画像生成部131は、入力された画像データに基づく画像に対して所定の画像処理を施した上で、画像データを滴下検出用画像バッファ115に一時的に保存させる。
続くステップS40において、情報処理装置100は、操作入力部102から入力される信号に従ってアクチュエータ9を制御することにより、液滴の滴下(点滴)を開始させる。
ステップS50において、情報処理装置100は、カメラ12から順次入力される画像データに基づいて、液滴の体積を測定する。ステップS50においては、滴下検出部134による液滴の滴下状態の判定処理と、体積算出部135による体積算出処理とが並列に実行される。
図10は、液滴体積の測定処理(図3のステップS50)のうち、滴下状態の判定処理を示すフローチャートである。まず、滴下検出部134は、滴下検出用画像バッファ115から画像データを取り込み(ステップS131)、滴下待機判定部141に、取り込んだ画像データに基づく画像が、ノズルに液滴が垂下している状態を写した画像であるか否かを判定させる(ステップS132)。この判定は、判定対象の画像に対し、ノズルの先端が写った位置から所定の距離だけ下方の位置に、所定の大きさを有する矩形の監視領域を設定し、該監視領域を監視することにより行われる。以下、ノズルに液滴が垂下している状態のことを滴下待機状態といい、この状態を写した画像のことを滴下待機画像ともいう。
判定対象の画像が滴下待機画像でない場合(ステップS133:No)、処理はステップS131に戻る。この場合、判定済みの画像の次のフレームの画像に対し、同様の処理(ステップS131~S133)が実行される。他方、判定対象の画像が滴下待機画像である場合(ステップS133:Yes)、滴下検出部134は、現在は滴下待機状態であると認識する(ステップS134)。
続いて、滴下検出部134は、ステップS132における判定対象の画像の次のフレームの画像データを滴下検出用画像バッファ115から取り込み(ステップS135)、滴下開始判定部142に、取り込んだ画像データに基づく画像が、ノズルに垂下していた液滴がノズルから離れて落下している状態を写した画像であるか否かを判定させる(ステップS136)。この判定も、ステップS132と同様に設定される領域を監視することにより行われる。以下、ノズルに垂下していた液滴がノズルから離れて落下している状態を写した画像のことを滴下画像ともいう。また、ノズルに垂下していた液滴がノズルから離れて落下し始めた状態のことを滴下開始状態といい、この状態を写した画像のことを滴下開始画像ともいう。
判定対象の画像が滴下画像でない場合(ステップS137:No)、処理はステップS135に戻る。この場合、判定済みの画像の次のフレームの画像に対し、同様の処理(ステップS135~S137)が実行される。他方、判定対象の画像が滴下画像である場合(ステップS137:Yes)、滴下検出部134は、滴下待機状態から滴下開始状態に遷移したと認識し(ステップS138)、当該滴下画像を滴下開始画像とする。
続いて、滴下検出部134は、滴下検出用画像バッファ115に保存された画像データのうち、体積算出に用いられる画像の画像データを、体積算出用画像バッファ116にコピーする(ステップS139)。体積算出に用いられる画像は、滴下開始画像の所定フレーム前及び所定フレーム後の画像である。しかしながら、滴下検出部135は、体積算出に用いられる画像の画像データに加えて、滴下開始画像の画像データも体積算出用画像バッファ116にコピーしても良いし、滴下待機画像から滴下開始画像の所定フレーム後の画像に至る一連の画像の画像データをコピーしても良い。
その後、滴下検出部134は、撮像が終了したか否かを判断する。具体的には、操作入力部102に対して撮像終了を指示する操作が行われた、画像生成部131により生成される画像からノズル6の像が検出されなくなった、画像生成部131により生成される画像において、所定フレーム以上連続して液滴の像が検出されなくなった、といった場合に、滴下検出部134は、撮像が終了したと判断する。撮像が終了したと判断されない場合(ステップS140:No)、処理はステップS131に戻る。他方、撮像が終了したと判断された場合(ステップS140:Yes)、処理はメインルーチンに戻る。
図11は、液滴体積の測定処理(図3のステップS50)のうち、体積算出処理を示すフローチャートである。まず、体積算出部135は、体積算出用画像バッファ116から画像データを取り込み(ステップS151)、取り込んだ画像データに基づく画像から、液滴の像の領域を抽出する(ステップS152)。続いて、体積算出部135は、画像から抽出された領域を回転体の投影像とみなすことにより、該領域(回転体)の体積を算出する(ステップS153)。
さらに、体積算出部135は、画像におけるノズルの像の画素数と実際のノズルのサイズとの比や、カメラ12における光学系の倍率及びワークディスタンス(ノズル6とカメラ12との距離)WD等に基づいて、画像から抽出された領域の体積を実際のスケールに換算することにより液滴の体積を算出し、出力する(ステップS154)。この際、体積算出部135は、算出した液滴の体積をそのまま、滴下開始画像に写った液滴の体積として出力しても良いし、今回算出した液滴の体積と、過去の所定回にわたって算出した体積との平均値を、当該滴下開始画像に写った液滴の体積として出力しても良い。出力された液滴の体積は、測定値記憶部114に記憶されると共に、表示装置13に表示される。
その後、体積算出部135は、撮像が終了したか否かを判断する(ステップS155)。体積算出部135は、例えば、体積算出用画像バッファ116に新たな画像データが保存されなくなると、撮像が終了したと判断する。撮像が終了したと判断されない場合(ステップS155:No)、処理はステップS151に戻る。他方、撮像が終了したと判断された場合(ステップS155:Yes)、処理はメインルーチンに戻る。
再び図3を参照すると、ステップS50における液滴体積の測定処理、即ち、滴下検出部134による液滴の滴下状態の判定処理と、体積算出部135による体積算出処理とが終了すると、液滴測定システム10は動作を終了する。
以上説明したように、本実施形態によれば、液滴の滴下を開始する前にノズルの位置出し処理を実行するので、ノズル6から液滴7が離れて落下し始めたタイミングを確実に検知できるようになると共に、液滴の体積の測定精度を向上させることが可能となる。
また、本実施形態によれば、液滴の滴下を開始する前に流量の設定値のエラー判定を行うので、点滴開始後に流量制御が不能になるという事態を防ぐことが可能となる。
また、本実施形態によれば、撮像を繰り返しながら順次生成される画像データに基づいて滴下待機状態を認識し、滴下待機状態に入った後で滴下画像を判定する処理を実行するので、ノズルから液滴が滴下したタイミングを効率良く、且つ、正確に検出することができる。
さらに、本実施形態によれば、滴下検出用画像バッファ115及び体積算出用画像バッファ116を使い分け、液滴の滴下状態の判定処理と、液滴体積の測定処理とを並列で行うので、ノズルから順次滴下する個々の液滴の体積を高速且つリアルタイムに測定することが可能となる
(滴下状態の判定処理の変形例)
図12は、本発明の実施形態における滴下状態の判定処理の変形例を示すフローチャートである。なお、図12のステップS161~S164における処理は、上記実施形態において説明した図10のステップS131~S134における処理と同様である。上記実施形態においては、滴下画像が最初に検出された際に滴下開始状態に遷移したと認識したが、本変形例においては、滴下画像が複数回検出された場合に、滴下開始状態に遷移したと認識する。
即ち、ステップS164に続いて、滴下検出部134は、滴下画像の検出回数を表すカウンタkを初期化(k=0)する(ステップS165)。続いて、滴下検出部134は、ステップS162における判定対象の画像の次のフレームの画像データを滴下検出用画像バッファ115から取り込み(ステップS166)、滴下開始判定部142に、取り込んだ画像データに基づく画像が、滴下画像であるか否かを判定させる(ステップS167)。
判定対象の画像が滴下画像でない場合(ステップS168:No)、処理はステップS165に戻る。他方、判定対象の画像が滴下画像である場合(ステップS168:Yes)、滴下開始判定部142は、カウンタkをインクリメントする(ステップS169)。
続いて、滴下開始判定部142は、カウンタkが所定の閾値k0以上であるか否かを判定する(ステップS170)。カウンタkが閾値k0未満である場合(ステップS170:No)、処理はステップS166に戻る。他方、カウンタkが閾値k0以上である場合(ステップS170:Yes)、滴下検出部134は、滴下開始状態に遷移したと認識し(ステップS171)、カウンタk=0のときに(つまり最初に)検出された滴下画像を滴下開始画像とする。その後のステップS172~S173は、図10のステップS139~S140と同様である。
本変形例によれば、滴下待機状態になった後、滴下画像が複数回検出されたことをもって滴下開始状態に遷移したと判断するので、滴下開始状態の誤認識を低減することが可能となる。
(監視領域の設定)
次に、滴下待機画像の判定処理(図10のステップS132参照)及び滴下画像の判定処理(図10のステップS136及び図12のステップS167参照)を実行する際に設定される監視領域について詳細に説明する。図13~図16は、監視領域の設定方法を説明するための模式図である。
まず、監視領域の垂直方向における最大範囲の設定方法を説明する。図13に示す画像m31~m33は、滴下開始画像の直前フレームの画像、即ち、滴下待機状態の最後の画像である。画像m31~m33の間では、滴下させる液体の種類や流量等の条件を変えているため、ノズルに垂下する液滴の像の大きさ(高さh1~h3)も異なっている。
監視領域Rの上端は、ステップS20(図3参照)において位置出しされたノズルの像の先端位置よりも下方に設定される。他方、監視領域Rの下端は、滴下開始画像の直前フレームの画像においてノズルに垂下する液滴の像の下端よりも上方に設定される。つまり、少なくとも液滴が滴下する直前では、液滴の像が監視領域Rの上端から下端全体にかかるようにする。ここで、画像m31~m33に示すように、同じノズルを用いる場合であっても、液体の種類や流量等の条件を変化させると、ノズルに垂下する液滴の大きさが変わってくる。そのため、好ましくは、条件を変えた場合であっても共通の監視領域Rを利用できるように、当該ノズルを用いる場合に変化し得る液滴の像の高さh1、h2、h3のうち最も小さい高さh1を超えないように、監視領域Rの上端位置及び下端位置を設定すると良い。
次に、監視領域の垂直方向における最小範囲の設定方法を説明する。図14に示す画像m34~m36は、滴下開始画像である。画像m34~m36の間では、滴下させる液体の種類や流量等の条件を変えているため、ノズルに付着する液滴の像の下端部とノズルから離れて落下する液滴の像の上端部との隙間d1~d3が異なっている。
監視領域Rは、ノズルに付着する液滴の像の下端部とノズルから離れて落下する液滴の像の上端部との隙間を含む範囲に設定される。ただし、画像m34~m36に示すように、同じノズルを用いる場合であっても、条件を変化させると上記隙間が変わってくる。そのため、条件を変えた場合であっても共通の監視領域Rを利用できるように、当該ノズルを用いる場合に変化し得る隙間d1、d2、d3の間で共通する領域dが存在する場合には、その共通する領域dを包含するように、監視領域Rを設定すると良い。図14においては、画像m36の隙間d3の上端と、画像m34の隙間d1の下端との隙間dが、監視領域Rの垂直方向における最小範囲となる。従って、この隙間dを包含するように、監視領域Rの上端位置及び下端位置を設定すると良い。
次に、監視領域の垂直方向における最小範囲の別の設定方法を説明する。図15に示す画像m37~m39は、滴下開始画像である。画像m37~m39の間では、滴下させる液体の種類や流量等の条件の変化により、ノズルに付着する液滴の像の下端部とノズルから離れて落下する液滴の像の上端部との隙間d4~d6が異なっている。これらの隙間d4~d6の間では、条件によっては共通する領域が存在しない場合がある。そのような場合には、条件を変えた際にも共通の監視領域Rを利用できるように、ノズルに垂下する液滴の像の下端部が最も低い位置と、ノズルから離れて落下する液滴の像の上端部が最も高い位置との隙間d’を包含するように、監視領域Rを設定すると良い。図15においては、画像m39の隙間d6の上端と、画像37の隙間d4の下端との隙間d’を包含するように、監視領域Rの上端位置及び下端位置が設定される。
次に、監視領域の水平方向における最小範囲の設定方法を説明する。図16に示す画像m40~m42は、滴下開始画像の直前フレームの画像である。画像m40~m42の間では、滴下させる液体の種類や流量等の条件の変化により、ノズルに垂下する液滴の幅w5~w7が異なっている。
監視領域Rは、ノズルに垂下する液滴の像の幅を含む範囲に設定される。ただし、画像m40~m42に示すように、同じノズルを用いる場合であっても、条件を変化させると液滴の幅が変わってくる。そのため、条件を変えた場合であっても共通の監視領域Rを利用できるように、当該ノズルを用いる場合に変化し得る幅w5、w6、w7のうち、最も大きい幅w7を包含するように、監視領域Rの左端位置及び右端位置を設定すると良い。ただし、監視領域Rの幅が大きすぎると、監視領域Rに対する探索量が増えるため、最も大きい幅w7を包含しつつも、なるべく幅を小さく設定すると良い。
監視領域のサイズの具体例として、20滴/mL用のノズルを用いる場合、ノズルの像の先端から監視領域の上端までの距離を、画像におけるノズルの先端の幅の0.4倍~2.0倍程度、監視領域の水平方向の幅を同0.7倍~3.0倍程度、監視領域の垂直方向の長さを同0.3倍~1.5倍程度にすると良い。また、60滴/mL用のノズルを用いる場合、ノズルの像の先端から監視領域の上端までの距離を、画像におけるノズルの先端の幅の0.4倍~2.0倍程度、監視領域の水平方向の幅を同1.0倍~3.0倍程度、監視領域の垂直方向の長さを同1.0倍~3.0倍程度にすると良い。
以上のように管理領域Rを設定し、時系列順に生成される画像の管理領域R内を監視することより、滴下待機画像及び滴下画像を確実且つ高速に検出することが可能となる。
(滴下待機画像の判定処理)
次に、滴下待機画像の判定処理(図10のステップS132参照)について詳細に説明する。図17は、本実施形態における滴下待機画像の判定処理を示すフローチャートである。図18は、本実施形態における滴下待機画像の判定処理を説明するための模式図である。図18に示す画像m50~m53は、ノズルに垂下する液滴が徐々に大きくなる様子を時系列順に写した画像を表している。画像m50~m52においては、監視領域R内の探索済みの領域にグレーの網掛けを付している。
まず、滴下待機判定部141は、判定対象の画像に設定された監視領域に対して二値化処理を施す(ステップS201)。本実施形態においては、画素の階調が0~255階調であるものとし、液滴の像の少なくとも輪郭領域の画素の階調が0階調(即ち、黒色)、液滴の像の背景領域の画素の階調が255階調(即ち、白色)となるように、二値化処理における閾値を設定する。
続いて、滴下待機判定部141は、判定対象の画像に監視領域を設定し、該監視領域における画素の行を表すカウンタi(i=1~imax)を1に設定する(ステップS202)。本実施形態においては、監視領域の上端の行を1行目とする。
続いて、滴下待機判定部141は、監視領域内のi行目の画素を水平方向に探索し(ステップS203)、i行目に0階調の画素が存在するか否かを判定する(ステップS204)。
i行目に0階調の画素が存在しない場合(ステップS204:No)、即ち、当該行に液体の像の領域が存在しない場合、判定対象の画像は滴下待機画像ではないと判定し、処理はメインルーチンに戻る。例えば、図18に示す画像m50及び画像m51においては、i行目の画素が全て白色となっている。従って、画像m50及び画像m51は滴下待機画像ではないと判定される。
他方、i行目に0階調の画素が存在する場合(ステップS204:Yes)、滴下待機判定部141は、当該i行目は液滴存在行であると判定する(ステップS205)。
続いて、滴下待機判定部141は、探索中の行(i行目)が、監視領域の最終行(imax行)に至ったか否かを判定する(ステップS206)。最終行に至っていない場合(ステップS206:No)、滴下待機判定部141はカウンタiをインクリメントし(ステップS207)、その後、処理はステップS203に戻る。
他方、探索中の行が最終行に至った場合(ステップS206:Yes)、滴下待機判定部141は、滴下待機画像を検出したものと判定し(ステップS208)、処理はメインルーチンに戻る。例えば、画像m52においては、監視領域Rの全ての行が液滴存在行であるため、滴下待機画像であると判定される。
次に、滴下待機画像の判定処理の変形例について説明する。図19は、本発明の実施形態における滴下待機画像の判定処理の変形例を説明するための模式図である。
ここで、図1に示すように、点滴筒4内においてノズル6から液滴を滴下させる場合、点滴筒4内に溜まった液体が跳ねて点滴筒4の内壁に付着し、内壁に付着した液体の像が監視領域Rに写ってしまうことがある。このような場合、0階調の画素が1つでも存在する行を液滴存在行として判定すると(図17のステップS204参照)、監視領域Rにおける液体の像の位置によっては、滴下待機画像の誤検出が生じてしまうおそれがある。
例えば、図19に示す画像m50’、m51’は、画像に写った液滴の成長過程としては図18に示す画像m50、m51と同程度であるが、監視領域Rの下端を含む領域に、飛び跳ねた液体の像m54が写っている。この場合、画像m51’の段階で滴下待機画像と判定されてしまう。
そこで、本変形例においては、監視領域Rのi行目の探索を行う際に、0階調の画素が所定数以上連続して存在する行を液滴存在行として判定する。連続する画素の数は、滴下する液体の種類、ワークディスタンス、画像のスケール等に基づき、点滴筒4の内壁に付着する液体の像の平均的なサイズよりも大きく、ノズルに垂下する液滴の像の平均的なサイズよりも小さくなるよう、適宜設定すれば良い。
本変形例によれば、滴下待機画像の誤検出を抑制することが可能となる。
(滴下画像の判定処理)
次に、滴下画像の判定処理(図10のステップS136、図12のステップS167参照)について詳細に説明する。図20は、本発明の実施形態における滴下画像の判定処理を示すフローチャートである。図21は、本発明の実施形態における滴下画像の判定処理を説明するための模式図である。図21に示す画像m55~m58は、滴下待機画像が検出された後の画像を時系列順に示している。
まず、滴下開始判定部142は、判定対象の画像に設定された監視領域に対して二値化処理を施す(ステップS301)。本処理においても、液滴の像の少なくとも輪郭領域の画素の階調が0階調(即ち、黒色)、液滴の像の背景領域の画素の階調が255階調(即ち、白色)となるように、二値化処理における閾値を設定する。
続いて、滴下開始判定部142は、判定対象の画像に監視領域を設定し、該監視領域における画素の行を表すカウンタi(i=1~imax)を1に設定する(ステップS302)。
続いて、滴下開始判定部142は、監視領域内のi行目の画素を水平方向に探索し(ステップS303)、i行目の全ての画素が255階調の画素であるか否かを判定する(ステップS304)。言い換えると、i行目に0階調の画素が存在するか否かを判定する。
i行目に0階調の画素が1つでも存在する場合(ステップS304:No)、続いて滴下開始判定部142は、探索中の行(i行目)が、監視領域の最終行(imax行)に至ったか否かを判定する(ステップS305)。最終行に至っていない場合(ステップS305:No)、滴下開始判定部142はカウンタiをインクリメントし(ステップS306)、その後、処理はステップS303に戻る。例えば、画像m55のi行目には0階調の画素が存在し、且つ、探索中の行がまだ最終行に至っていないため、さらに次の行に対する探索が行われる。
他方、探索中の行が監視領域の最終行に至った場合(ステップS305:Yes)、処理はメインルーチンに戻る。この場合、判定対象の画像は滴下画像ではないと判定され(図10のステップS137:No、図12のステップS168:No)、次のフレームの画像に対して引き続き滴下画像の判定処理が行われる。例えば画像m55及び画像m56の監視領域Rの全ての行には0階調の画素が存在するため、画像m55及び画像m56は滴下画像ではない。
また、i行目の全ての画素が255階調である場合(ステップS304:Yes)、言い換えると、0階調の画素が1つも存在しない場合、滴下開始判定部142は、滴下画像を検出したと判定する(ステップS307)。その後、処理はメインルーチンに戻る。例えば、画像m57においては、ノズルに残留する液滴の像と落下する液滴の像との間に、全ての画素が白色となる行(液切れ行)が発生している。このような液切れ行が1行検出されると、判定対象の画像は滴下画像と判定される。
このような本実施形態によれば、ノズルに垂下していた液滴が切れて落下し始めた瞬間を写した画像を、高精度に検出することが可能となる。
次に、滴下画像の判定処理の第1の変形例について説明する。
上記実施形態においては、液切れ行が1行でも検出されると、判定対象の画像は滴下画像であると判定した(図19のステップS304、S307参照)。しかしながら、液切れ行が連続する複数行にわたって検出された場合に、判定対象の画像は滴下画像であると判定しても良い。判定基準とする液切れ行の行数(閾値)は、滴下する液体の種類、ワークディスタンス、画像のスケール等に基づいて適宜設定すれば良い。
本変形例によれば、ノズルに垂下していた液滴が確実に切れた状態をもって滴下画像と判定することが可能となる。
次に、滴下画像の判定処理の第2の変形例について説明する。図22は、本発明の実施形態における滴下画像の判定処理の第2の変形例を示すフローチャートである。図23は、本発明の実施形態における滴下画像の判定処理の第2の変形例を説明するための模式図である。図23に示す画像m60~m63は、滴下待機画像が検出された後の画像を時系列順に示している。なお、図22に示すステップS301~S306における処理は、上記実施形態において図20を参照しながら説明した処理と同様である。
ここで、ノズルに垂下する液滴は振動することがあるため、画像m60~m62に示すように、時系列順に取得された画像であっても、液滴の像の下端の位置が上下に変動する場合がある。そのため、一旦、滴下待機状態と判定され(画像m60参照)、滴下開始判定部142が滴下画像の判定処理を開始した後で、監視領域R内において液滴の像の下端が上方に移動すると(画像m61参照)、液切れ行が誤検出されてしまうことがある。
そこで、本変形例においては、探索中の行(i行)の全ての画素が255階調であると判定すると(ステップS304:Yes)、滴下開始判定部142は続いて、当該i行が監視領域Rの下端の行(imax行)であるか否かを判定する(ステップS311)。当該i行が監視領域Rの下端の行である場合(ステップS311:Yes)、処理はそのままメインルーチンに戻る。この場合、判定対象の画像は滴下画像ではないと判定される。他方、当該i行が監視領域Rの下端の行でない場合(ステップS311:No)、滴下開始判定部142は、滴下画像を検出したと判定する(ステップS312)。その後、処理はメインルーチンに戻る。
本変形例によれば、液滴の振動に起因する滴下画像の誤検出を防ぐことが可能となる。なお、本変形例においても、上記第1の変形例と同様に、連続する複数行にわたって液切れ行が検出されたか否かを判定しても良い。この場合、連続する複数の液切れ行が監視領域Rの下端の行を含むとき、判定対象の画像は滴下画像ではないと判定される。
次に、滴下画像の判定処理の第3の変形例について説明する。図24は、本発明の実施形態における滴下画像の判定処理の第3の変形例を示すフローチャートである。図25~図27は、本発明の実施形態における滴下画像の判定処理の第3の変形例を説明するための模式図である。図25に示す画像m64~m67、図26に示す画像m68~m71、及び、図27に示す画像m72~m75はそれぞれ、滴下待機画像が検出された後の画像を時系列順に示している。
まず、滴下開始判定部142は、判定対象の画像に設定された監視領域Rのうち、下端を含む複数行、即ち、(imax-x)行目~imax行目における0階調(黒色)の画素の画素数Nkをカウントする(ステップS321)。
続いて、滴下開始判定部142は、カウントした画素数Nkと、直前フレームの画像の同じ領域における0階調の画素の画素数Nk-1との差ΔN=Nk-1-Nkが所定の閾値Shよりも大きいか否かを判定する(ステップS322)。
ここで、滴下待機状態になった後、ノズルに垂下していた液滴が落下するまでの間、液滴は徐々に大きくなりつつ、形状を様々に変化させたり、振動したりする。そのため、図25~図27に示すように、監視領域R内の液滴の像の領域(即ち、0階調の画素の画素数)は増減する。これに対して、液滴がノズルから離れて落下すると、監視領域R内の下端付近((imax-x)行目~imax行目のx行の領域)における液滴の像の領域は激減する。ステップS322において用いられる閾値Shは、この下端付近の画素数がゼロ近傍まで大きく減少する場合を捉えるように、滴下する液体の種類、ワークディスタンス、画像のスケール等に基づいて適宜設定される。
差ΔN=Nk-1-Nkが所定の閾値Sh以下である場合(ステップS322:No)、滴下開始判定部142は、画素数Nkを保存する(ステップS323)。その後、処理はメインルーチンに戻る。この場合、判定対象の画像は滴下画像ではないと判定され(図10のステップS137:No、図12のステップS168:No)、次のフレームの画像に対して引き続き滴下画像の判定処理が行われる。
他方、差ΔN=Nk-1-Nkが所定の閾値Shよりも大きい場合(ステップS322:Yes)、即ち、監視領域Rの下端近傍に存在する0階調の画素の画素数が激減した場合、滴下開始判定部142は、判定対象の画像は滴下画像であると判定する(ステップS324)。その後、処理はメインルーチンに戻る。
本変形例によれば、監視領域Rの下端付近における液滴の像の領域の変化を、0階調の画素の画素数をカウントすることにより定量的に検出するので、滴下画像であるか否かを高精度に判定することが可能となる。従って、例えば図26に示すように、液滴が振動することにより、監視領域R内における液滴の像の領域が大きく変化する場合であっても、誤判定を抑制することができる。また、図27に示すように、点滴筒の内壁に付着した液体が画像内に写っている場合であっても、このような液体の像の存在が判定に影響を及ぼすことはほとんどなくなるので、滴下画像の判定精度を向上させることが可能となる。
(液滴の像の抽出処理)
次に、画像に写った液滴の像の抽出処理(図11のステップS152参照)について詳細に説明する。図28は、図2に示す体積算出部135のうち領域抽出部143が実行する液滴の像の領域の抽出処理を示すフローチャートである。図29は、時系列順に生成された滴下開始画像前後の画像を示す図である。図30~図32は、本実施形態における液滴の像の領域の抽出処理を説明するための模式図である。
図29に示すように、滴下開始画像M2において落下している液滴の体積は、滴下開始画像M2の直前フレーム、即ち、滴下待機状態の最後の画像M1においてノズルに垂下している液滴の体積とほぼ等しいといえる。画像M2に写る液滴の像を抽出する方法としては、画像M1からノズルが写った画像を差し引くことにより差分画像を生成し、さらに、二値化処理、穴埋め処理、ブロブ(blob)処理を施す手法が考えられる。
ここで、光源11とカメラ12(図1参照)との間に位置する液滴は、あたかも凸レンズのように、当該液滴の中心に入射する光をほぼ真っ直ぐに透過させ、液滴の周縁部に入射する光を大きく屈折・散乱させる。液滴の像の領域は、この液滴の周縁部において光が屈折・散乱することにより形成される輪郭を検出することで抽出される。図30に示すように、差分画像DF1に二値化処理を施した二値画像BN1においては、液滴の像の中心部近傍の明るい部分に相当する領域が抜けた状態になる。そこで、二値画像BN1に対し、モフォロジー処理などの公知の手法を利用した穴埋め処理(孤立点除去処理)を行い、さらに、ブロブ処理を行うことにより、1つの面積塊として、液滴の像に相当する領域を抽出することができる。
画像M1から差し引く画像として、具体的には、点滴を開始する前(例えば、ノズルの位置出し完了時)の画像や、滴下開始画像M2の所定フレーム後の画像(例えば、1フレーム後の画像M3又は2フレーム後の画像M4)が挙げられる。
しかしながら、点滴を開始する前の画像を用いる場合、点滴筒の内壁に付着した液体の像など、画像M1に写った液滴以外の不要な像をキャンセルすることができないという問題がある。また、滴下開始画像M2の直後フレームの画像M3は、フレームレートなどの条件にもよるが、画像M1に写った液滴の像と、画像M3において落下する液滴の像の一部の位置が重なってしまうことがあり、この場合、画像M1に写った液滴の像のうち当該一部の領域がキャンセルされてしまう。そのため、限定はされないが、滴下開始画像M2の2フレーム後の画像M4を用いることがより好ましいといえる。
他方、滴下する液滴の流量が高い場合(言い換えると、液滴の滴下周期が短い場合)には、ノズルに垂下する液滴の成長も速くなる。そのため、画像M1と画像M4のように、フレーム間隔が若干開いた画像を用いる場合には、次のような問題が生じることがある。即ち、図30に示すように、画像M1から画像M4を差し引いた差分画像DF1においては、画像M1における液滴の像のノズル端近傍の領域が、画像M4において成長し始めた液滴の像の領域にキャンセルされてしまう。そのため、差分画像DF1を二値化し、さらに、二値画像BN1に対して穴埋め処理及びブロブ処理を施すと、それによって得られたブロブ画像BL1においては、画像M1に写った液滴の像のうち、本来抽出されるべきノズル端近傍の領域(領域Δy参照)がカットされた状態になってしまう。その結果、ブロブ画像BL1において抽出された領域に基づいて液滴の体積を算出すると、誤差が大きくなってしまう。
そこで、本実施形態においては、本来抽出されるべき領域がカットされる前の画像(二値画像BN1)と、該領域がカットされた後の画像(ブロブ画像BL1)とに基づいて、カットされた領域を特定し、該カットされた領域を画像M1から再抽出することにより、画像M1に写った液滴の像全体の領域を再現する。
詳細には、図28に示すように、まず、領域抽出部143は、滴下待機状態の最後の画像M1と滴下開始画像の2フレーム後の画像M4との差分画像DF1を生成する(ステップS401)。続いて、領域抽出部143は、この差分画像DF1に対して二値化処理を施す(ステップS402)。続いて、領域抽出部143は、二値画像BN1に対して穴埋め処理及びブロブ処理を施す(ステップS403)。
続いて、領域抽出部143は、図31に示すように、二値画像BN1及びブロブ画像BL1に基づいて、滴下待機状態の最後の画像M1に対して矩形領域R2を設定する(ステップS404)。この矩形領域R2は、二値画像BN1に残った液滴の領域E1の上端部(言い換えると、画像M1におけるノズルの下端部)を上端とし、ブロブ画像BL1において抽出された領域E2の上端部を下端とし、ブロブ画像BL1において抽出された領域E2の最大幅と同じ幅を有する領域である。
続いて、領域抽出部143は、滴下待機状態の最後の画像M1に設定された矩形領域R2に二値化処理を施す(ステップS405)。それにより得られた二値画像BN2においては、画像M1に写った液滴の像のうち、画像M4との差分を取ることによりキャンセルされてしまった領域E3が抽出されている。
続いて、領域抽出部143は、図32に示すように、ステップS403において得られたブロブ画像BL1と、ステップS405において得られた二値画像BN2とをマージし(ステップS406)、さらに、穴埋め処理及びブロブを施す(ステップS407)。このようにして得られた合成画像ME1においては、画像M1に写った液滴の像の全体の領域E4が抽出されている。その後、処理はメインルーチンに戻る。
このような本実施形態によれば、滴下待機状態の最後の画像M1に写った液滴の像の領域を不足なく抽出することができるので、液滴体積の測定誤差を低減することが可能となる。
なお、上記実施形態においては、滴下開始画像の直前フレームの画像を用いて液滴の体積を算出することとしたが、例えば滴下周期に対してフレームレートが高いといった条件によっては、滴下開始画像の数フレーム(例えば2フレーム)前の画像を用いることも可能である。滴下開始画像の後の画像についても同様であり、条件によっては、滴下開始画像の2フレーム後の画像の代わりに、直後フレームの画像や、3フレーム後の画像を用いることも可能である。
(抽出された領域の体積の算出処理)
次に、滴下待機状態の最後の画像から抽出された領域の体積の算出処理(図11のステップS153参照)について詳細に説明する。図33は、図2に示す体積算出部の135のうち、円面積算出部144及び積算部145が実行する抽出された領域の体積の算出処理を示すフローチャートである。
本実施形態において、体積算出部135は、抽出された領域(図32の合成画像ME1における領域E4参照)を、画像の垂直方向の軸を回転軸とする回転体の投影像とみなすことにより、回転体の体積を算出する。即ち、図33に示すように、円面積算出部144は、抽出された領域の各行について、画素数を直径とする円の面積を算出する(ステップS411)。続くステップS412において、積算部145は、算出された円の面積を積算する。その後、処理はメインルーチンに戻る。
(抽出された領域の体積の算出処理の第1の変形例)
次に、抽出された領域の体積の算出処理の第1の変形例について説明する。図34は、抽出された領域の体積の算出処理の第1の変形例を示すフローチャートである。図35は、時系列順に生成された滴下開始画像前後の画像を示す図である。図36及び図37は、抽出された領域の体積の算出処理の第1の変形例を説明するための模式図である。
本変形例においては、領域抽出部143により、図37の(a)に示す領域E7が抽出されたものとして説明する。領域E7は、図36に示す滴下開始画像M11の直前フレームの画像M10(滴下待機状態の最後の画像)から、滴下開始画像M11の所定フレーム(ここでは2フレーム)後の画像M13を差し引いた差分画像DF3に基づいて抽出された領域E5と、滴下待機状態の最後の画像に対して矩形領域(図28のステップS404参照)を設定することにより直接抽出された領域E6とを合成したものである。
ここで、点滴を開始してからある程度の時間が経過すると、点滴筒内に溜まった液体が跳ねて、点滴筒の内壁に付着することがある。そのような場合、図35の画像M10~M13に示すように、ノズル及び液滴の像の他、点滴筒の内壁に付着した液体の像が画像内に写り込んでしまう。そのような状態で、滴下開始画像M11の直前フレームの画像M10(滴下待機状態の最後の画像)から、滴下開始画像M11の所定フレーム後の画像(例えば画像M13)を差し引くと、図36の差分画像DF3に示すように、直前フレームの画像M10における液滴の像のうち、背景の液体の像と重なる部分がキャンセルされてしまう。このような差分画像DF3に二値化処理を施すと、二値画像BN3においては多くの欠けが発生してしまうので、穴埋め処理及びブロブ処理を施しても、最終的に得られるブロブ画像BL3において欠けた部分を補うことは困難である。
そこで、円面積算出部144は、図37の(a)に示すように、領域抽出部143により抽出された領域E7のうち、差分画像DF3に基づいて抽出された領域E5(図36参照)については、この領域E5に外接する矩形領域R4を設定する(ステップS421)。
続いて、円面積算出部144は、図37の(b)に示すように、矩形領域R4の垂直方向に伸びる中心線L1により、差分画像DF3に基づいて抽出された領域E5の各行を左右に分割する(ステップS422)。
続いて、円面積算出部144は、上記領域E5の各行について、中心線L1の左右のうち画素数が多い側の画素数の2倍のサイズを直径とする円の面積を算出する(ステップS423)。例えば、図37に示すn行目においては、中心線L1の左側の画素数PLよりも右側の画素数PRの方が多い。そのため、当該行については、2×PR画素を直径とする円の面積が算出される。
他方、円面積算出部144は、滴下待機状態の最後の画像M10から直接抽出された領域E6の各行について、画素数を直径とする円の面積を算出する(ステップS424)。
積算部145は、ステップS423、S424において算出された円の面積を積算する(ステップS425)。それにより、図37の(c)に示すように、画像M10においてノズルに垂下していた液滴の像に相当する領域E7’を回転体とみなした場合の体積を取得することができる。
本変形例によれば、液滴の像の領域を抽出する際の画像処理により、領域の一部が欠けてしまった場合であっても、当該欠けた部分が補間された状態で、回転体の体積を算出することが可能となる。
(抽出された領域の体積の算出処理の第2の変形例)
次に、抽出された領域の体積の算出処理の第2の変形例について説明する。図38は、抽出された領域の体積の算出処理の第2の変形例を示すフローチャートである。図39は、抽出された領域の体積の算出処理の第2の変形例を説明するための模式図である。
本変形例においては、領域抽出部143により、図39に示す領域E7が抽出されたものとして説明する。領域E7は、上記第1の変形例と同様、滴下待機状態の最後の画像と滴下開始画像の所定フレーム後の画像との差分画像に基づいて抽出された領域E5と、滴下待機状態の最後の画像から直接抽出された領域E6とを合成したものである。なお、図39においては、理解を助けるために、ノズルの像E8を図示しているが、領域E5、E6が抽出される画像において、ノズルの像E8は表示されない。
まず、円面積算出部144は、滴下待機状態の最後の画像に写ったノズルの像の下端の中心を通る垂直線を基準として分割線を設定する(ステップS431)。ここで、ノズルの像の下端は、滴下待機状態の最後の画像から直接抽出された領域E6の上端と一致するとみなせる。そこで、領域E6の上端ラインの中心P1を通る垂直線を分割線L2とする。
続いて、円面積算出部144は、分割線L2を中心として、抽出された領域の各行を左右に分割する(ステップS432)。続くステップS433~S435における処理は、図34のステップS423~S425と同様である。
(抽出された領域の体積の算出処理の第3の変形例)
次に、抽出された領域の体積の算出処理の第3の変形例について説明する。図40は、抽出された領域の体積の算出処理の第3の変形例を説明するための模式図である。
本変形例においては、領域抽出部143により、図40に示す領域E11が抽出されたものとして説明する。領域E11は、滴下開始画像の直前フレームの画像(滴下待機状態の最後の画像)と滴下開始画像の所定フレーム後の画像との差分画像に基づいて抽出された領域E9と、滴下待機状態の最後の画像に対して矩形領域(図28のステップS404参照)を設定することにより直接抽出された領域E10とを合成したものである。なお、図40の(a)においては、理解を助けるために、ノズルの像E12を図示しているが、領域E9、E10が抽出される画像において、ノズルの像E12は表示されない。
ここで、液滴を滴下するノズル6(図1参照)が鉛直方向に対して傾いている場合、ノズルの像の下端の中心を通る垂直線は、必ずしも、領域E11の中心軸を通るわけではない。そこで、本変形例においては、図40の(a)に示すように、ノズルの像の下端(即ち、領域E12の上端ライン)の中心P2を通る垂直線L3を設定し、傾きセンサ14から入力された検出値に基づいて、中心P2を通り、且つ、垂直線L3をノズル6の傾きに応じた角度だけ傾けた線を分割線L4として設定する。そして、領域E11を回転体の投影像とみなし、分割線L4と直交する方向にスライスした円の面積を算出して積算する。
この際、図40の(b)に示すように、領域E9については、分割線L4と直交する方向において分割線L4の両側に並ぶ画素の画素数のうち、数が多い方の画素数の2倍を直径として円の面積を算出する。他方、領域E10については、分割線L4と直交する方向に並ぶ画素の画素数を直径として円の面積を算出する。そして、領域E9について算出された面積と、領域E10について算出され体積とを積算する。それにより、図40の(c)に示すように、滴下待機状態の最後の画像においてノズルに垂下していた液滴の像に相当する領域E9’を回転体とみなした場合の体積を取得することができる。
本変形例によれば、ノズル6の傾きに起因する体積の算出誤差を精度良く補正することが可能となる。
(抽出された領域の体積の算出処理の第4の変形例)
次に、抽出された領域の体積の算出処理の第4の変形例について説明する。図41及び図42は、抽出された領域の体積の算出処理の第4の変形例を説明するための模式図である。上記第3の変形例においては、傾きセンサ14から出力された検出値に基づいて、領域11の分割線L4(図40参照)を設定することとした。しかしながら、傾きセンサ14が設けられていない場合には、抽出された領域の形状に基づいて分割線を設定することも可能である。
例えば、図41に示すように、ノズルの像の下端の中心P2、即ち、領域E11の上端ラインの中心から領域E11の輪郭上の各点までの距離のうち、距離が最も離れた点P3を通る線L5を分割線としても良い。或いは、図42に示すように、ノズルの像の下端の中心P2と、領域E11のうち水平方向における画素数が最も多い(即ち、最も幅が広い)行の中心P4とを通る線L6を分割線としても良い。
本変形例によれば、ノズル6の傾きを検出するセンサが設けられていない場合であっても、ノズル6の傾きに起因する体積の算出誤差を精度良く補正することが可能となる。
(液滴体積の算出処理)
次に、画像から抽出された領域について算出された体積に基づいて液滴の体積を算出する処理(図11のステップS154参照)について説明する。
上述したように、体積算出部135は、画像から抽出された領域の体積を画素数のスケールで算出し(ステップS153)、算出した値をスケール変換することにより、実際の液滴の体積を求める(ステップS154)。この際、体積算出部135は、スケール変換した値(体積算出値)を液滴の体積としてそのまま出力しても良いし、スケール変換した値(体積算出値)を複数回分蓄積し、これらの平均値を液滴の体積として出力しても良い。
図43は、液滴体積の算出処理の一例を説明するための模式図である。図43に示すように、体積算出部135は、滴下検出部134により滴下開始画像が検出されるごとに、当該滴下開始画像の直前フレームの画像を用いて体積算出値v1、v2、…を算出し、さらに、過去の所定回(図43においては計5回)分の体積算出値の平均値を算出して、この平均値を液滴体積として出力する。具体的には、体積算出部135は、体積算出値v5を算出すると、体積算出値v1~v5の平均値を算出し、この平均値を次の体積算出タイミングt6において液滴体積vout6として出力し、続いて、体積算出値6を算出すると、体積算出値v2~v6の平均値を算出し、この平均値を次の体積算出タイミングt7において液滴体積vout7として出力する、という動作を順次実行する。なお、点滴開始直後で、平均値の算出に必要な数の体積算出値が得られていないときには、算出された体積算出値をそのまま出力することとしても良い。例えば、図43の場合、体積の算出タイミングt1~t5においては、体積算出値v1~v5がそのまま液滴体積vout1~vout5として出力される。
図44は、液滴体積の算出処理の別の例を説明するための模式図である。体積算出部135は、体積算出値v1、v2、…の平均値を一定間隔で算出することとしても良い。例えば図44の場合、体積算出部135は、体積算出値v5を算出すると、体積算出値v1~v5の平均値を算出し、続く体積の算出タイミングt6~t10において体積算出値v6~v10を算出しつつ、この平均値を液滴体積vout6~vout10として出力し、体積算出値v10を算出すると、体積算出値v6~v10の平均値を算出し、続く体積の算出タイミングt11~t15において体積算出値v11~v15を算出しつつ、この平均値を液滴体積vout11~vout15として出力する、という動作を順次実行する。なお、図43の場合と同様、点滴開始直後で、平均値の算出に必要な数の体積算出値が得られていないときには、算出された体積算出値をそのまま出力することとしても良い。
(誤差補正部の動作)
次に、図2に示す誤差補正部146の動作について説明する。
液滴の滴下を開始してから時間が経過すると、点滴筒4(図1参照)内において液体が飛び跳ね、ノズル6に付着することにより液滴体積の測定誤差が生じたり、振動等により一時的にイレギュラーな状態となり、想定外の測定値が算出されたりすることがある。誤差補正部146は、このような異常値が算出される場合に備えて、点滴開始後の所定時間(例えば、数分~十数分間)に測定した液滴の体積を基準値として、適正な体積の範囲の上限値及び下限値を設定しておく。そして、誤差補正部146は、設定範囲を外れた異常値が算出された場合に、この異常値の代わりに暫定値を挿入する。暫定値としては、例えば、設定範囲を定める際に使用された基準値、この際に測定された液滴の体積の平均値、或いは、過去の所定時間内に測定された液滴の体積の平均値等を用いることができる。
本変形例によれば、液滴の体積の測定誤差や、一時的にイレギュラーな状態となった際に算出された異常値が一連の液滴の体積測定に与える影響を抑制することができる。
(高流量調整部の動作)
次に、図2に示す高流量調整部147の動作について説明する。
上述したように、液滴体積の測定値としては、過去複数回にわたって算出された体積算出値1、2、…の平均値が用いられることがある。高流量調整部147は、この平均値を算出する際に用いられる体積算出値の数を、流量制御部122に対して設定された流量に応じて調整する。詳細には、高流量調整部147は、流量の設定値が所定値以上である場合に、平均値の算出に用いられる体積算出値の数を増加させる。
ここで、液滴の流量が多くなると、カメラ12のフレームレートや撮像タイミングによっては、液滴体積の測定誤差が生じ易くなり、1滴あたりの体積のばらつきが大きくなる。そこで、平均を取る回数を増やすことで、個々の体積算出値のばらつきに起因する液滴体積の変動を抑制することができる。
また、高流量調整部147は、設定された流量が高い場合に、誤差補正部146が判定に用いる設定範囲を調整しても良い。具体的には、流量の設定値が所定値以上である場合に、設定範囲の下限値を引き上げることにより、当該範囲を狭くする。ここで、液滴の流量が高い場合には、液滴体積が過小に算出されるという測定誤差が多くなる。そこで、設定の下限値を引き上げ、設定範囲の下限値を下回る異常値が算出された場合には暫定値を挿入することにより、異常値が一連の液滴体積の測定に与える影響を低減することができる。
(実施例)
ノズルから液滴を1時間にわたって連続して滴下し、画像に基づいて算出された液滴の体積と、実際に滴下された液滴の体積との誤差を算出する実験を行った。実験の条件は以下のとおりである。
<実施例1>
ノズルの種類:20滴/mL
液滴の像の領域の抽出方法:滴下待機状態の最後の画像と滴下開始画像の2フレーム後の画像との差分画像に基づいて抽出した第1の領域と、滴下待機状態の最後の画像に矩形領域を設定することにより抽出した第2の領域とを合成した(図28参照)。
体積算出方法:第1及び第2の領域の各行の画素数を直径とする円の面積を算出し、これらの円の面積を積算した(図33参照)。
<実施例2>
ノズルの種類:20滴/mL
液滴の像の領域の抽出方法:実施例1と同じ。
体積算出方法:第1の領域については、外接する矩形領域の垂直方向の中心線により左右に分割し、画素数が多い側の2倍のサイズを直径とする円の面積を算出し、積算した。第2の領域については、抽出された領域の各行の画素数を直径とする円の面積を算出し、積算した(図34参照)。
<実施例3>
ノズルの種類:60滴/mL
液滴の像の領域の抽出方法:実施例1と同じ。
体積算出方法:実施例1と同じ。
<実施例4>
ノズルの種類:60滴/mL
液滴の像の領域の抽出方法:実施例1と同じ。
体積算出方法:実施例2と同じ。
<比較例1>
ノズルの種類:20滴/mL
液滴の像の領域の抽出方法:滴下待機状態の最後の画像から滴下開始画像の2フレーム後の画像を差し引いた差分画像に対し、二値化処理及びブロブ処理を施した。
体積算出方法:実施例1と同じ。
<比較例2>
ノズルの種類:60滴/mL
液滴の像の領域の抽出方法:比較例1と同じ。
体積算出方法:実施例1と同じ。
また、実施例1、2及び比較例1においては、図45に示すように、20滴/mL用のノズルの像m90の下方に設定した監視領域R10を監視することにより、滴下待機状態及び滴下開始状態を判定した。監視領域R10の実際のサイズは以下のとおりである。
画像内におけるノズルの先端の幅:125px
ノズルの先端から監視領域までの距離:119px(ノズルの幅の約0.95倍)
監視領域の横幅:181px(ノズルの幅の約1.45倍)
監視領域の縦の長さ:81px(ノズルの幅の約0.65倍)
また、実施例3、4及び比較例2においては、図46に示すように、60滴/mL用のノズルの像m91の下方に設定した矩形領域R11を監視することにより、滴下待機状態及び滴下開始状態を判定した。監視領域R11の実際のサイズは以下のとおりである。
画像内におけるノズルの先端の幅:33px
ノズルの先端から監視領域までの距離:29px(ノズルの幅の約0.9倍)
監視領域の横幅:81px(ノズルの幅の約2.45倍)
監視領域の縦の長さ:81px(ノズルの幅の約2.45倍)
図47は、実施例1、2及び比較例1の実験結果を示すグラフである。図48は、実施例3、4及び比較例2の実験結果を示すグラフである。図47及び図48において、横軸は、流量の設定値を示し、縦軸は、画像に基づく液滴体積の測定値の誤差の比率(真値に対する誤差値(=測定値-真値)の比率)を示す。ここで、液滴体積の真値は、ノズルから滴下した液滴の重量を電子天秤で測定し、この重量を液滴の比重に基づいて体積に換算することにより求めた。
図47に示すように、20滴/mL用のノズルにおいては、流量が低い場合(約30mL/h、約80mL/h)、実施例1、2及び比較例1のいずれにおいても誤差は小さく、実施例1、2と比較例1との間であまり差はない。しかしながら、流量が高い場合(約630mL/h)には、実施例2の誤差が小さく抑えられているのに対し、比較例1の誤差は大幅に拡大している。また、実施例1の誤差は、低流量の場合と比べると大きくはなっているが、比較例1の誤差よりも大幅に小さい。
図48に示すように、60滴/mL用のノズルにおいては、流量が低い場合(約10mL/h、約27mL/h)、実施例3、4及び比較例2のいずれにおいても誤差は小さく、実施例3、4と比較例2との間でそれほど変わらない。しかしながら、流量が高い場合(約140mL/h)には、実施例3、4に対し、比較例2の誤差が大きくなっている。
以上より、実施例1~4においては、誤差の少ない、精度の良い液滴体積を測定できることがわかった。また、実施例1~4においては、点滴の流量が高くなっても比較例1、2に対して液滴体積の誤差が小さく抑えられており、点滴の流量が高くなるほど顕著な効果が得られることがわかった。
以上説明した本発明は、上記実施形態及び変形例に限定されるものではなく、上記実施形態及び変形例に開示されている複数の構成要素を適宜組み合わせることによって、種々の発明を形成することができる。例えば、上記実施形態及び変形例に示した全構成要素からいくつかの構成要素を除外して形成しても良いし、上記実施形態及び変形例に示した構成要素を適宜組み合わせて形成しても良い。