(58)【調査した分野】(Int.Cl.,DB名)
前記画像解析部は、前記第3の投影画像に対して、眼球部の輪郭線抽出を行い、更に眼球部の重心点を設定し、前記算出された各ピーク点の位置を、画像解析のパラメータとして、前記重心点を基準とした極座標である重心からの距離と重心からピーク点方向の角度で算出することを特徴とする請求項6に記載の眼科疾患の画像解析装置。
前記画像解析部は、計測用重心点より前記眼球後極部頂点を結ぶ基準線に対して、計測用重心点を中心に+第2の角度および−第2の角度の方向の直線Cと直線Dを追加設定し、前記直線Cと前記基準線に囲まれた前記輪郭線の内部の面積Cと、前記直線Dと前記基準線に囲まれた前記輪郭線の内部の面積Dを追加算出し、面積Cと面積Dとの比率と前記面積Aと面積Bとの比率のいずれか大きい値を前記非対称性の度合いとすることを特徴とする請求項11に記載の眼科疾患の画像解析装置。
【発明を実施するための形態】
【0038】
本発明の実施の形態における強度近視の検査技術は、3次元トモグラフィー技術を用いて、眼球を含む複数の視点からの投影画像を取得し、この投影画像に基づいて、強度近視の診断を行うことを特徴とするものである。
【0039】
以下に、本発明の実施の形態による頭部MRI撮影データを用いた眼科疾患の画像解析技術について、強度近視を例にして詳細に説明する。
【0040】
まず始めに、強度近視診断の大まかな診断処理の流れについて、
図1のフローチャート図を参照しながら説明を行う。まず、ステップS1において、一般的な眼科診断機器による診断を行う。一般的な眼科診断とは、視力検査、屈折率検査、網膜の病変検査、視野の検査などである。ステップS2において、診断は確定したか否かを判定する。診断が確定していれば、治療方針も確定する(ステップS8へ)。
【0041】
ステップS2でNoの場合には、頭部MRI撮影及び眼球部位のレンダリング(左右眼球別々に)を行う。ステップS4において、上下左右前後の6方向の頭部の投影画像データを左右眼球別に生成する。次いで、2次元(2D)投影画像に対する画像解析処理を行う。ステップS6において、形状パラメータおよび強度近視タイプの分類処理を行う。ステップS6の結果より、治療方針の検討を行い(ステップS7)、ステップS8に進み治療方針が確定する。
【0042】
図2Aは、本実施の形態による、頭部MRI撮影データを用いた眼科疾患の画像解析技術を利用した強度近視診断手法の概要を示すフローチャート図である。
図2B(a)は、人体の頭部を撮影したMRIより眼球部位をスライスした断層画像の例を示し、更に頭部MRI撮影データより片側の眼球部を抽出した3次元ボクセル画像に対して、
図2B(b)は左から見た眼球の投影画像、
図2B(c)は上方から見た眼球の投影画像、
図2B(d)は後方から見た眼球の投影画像である。
【0043】
図2Aに示すように、まず、ステップS11で、頭部MRI撮影を行い、眼球部位のボクセルデータを左右眼球別に抽出する(特許第3049021号公報に記載の方法を用いることができる)。
【0044】
次いで、ステップS21において、左右別に、各眼球ボクセルデータに対し、上下方向または左右方向の2次元投影像をボリュームレンダリング(上下方向または左右方向に各1枚または2枚)して、投影画像を作成する(特許第4497965号公報に記載の方法を用いることができる)。
【0045】
次いで、ステップS31において、左右眼球別に2〜4枚の上下方向または左右方向の各投影画像に対し眼軸を設定する。任意に、後極の形状特徴を投影画像により計測する。
【0046】
さらに、ステップS51おいて、左右眼球別に各眼球ボクセルデータに対し、後方向の2次元投影像をレンダリングして投影画像(各1枚)を作成する。この投影画像を用いて、任意に、突出数を計測する。
【0047】
図2B(a)は、健常者の頭部MRIによる断層画像である。
図2B(b)の左から見た眼球の投影画像、
図2B(c)の上方から見た眼球の投影画像、
図2B(d)の後方から見た眼球の投影画像を用いている。
【0048】
図3(a)は、本発明の一実施の形態による画像解析装置の一構成例を示す機能ブロック図であり、
図3(b)は、投影画像解析部の構成例を示す機能ブロック図である。
【0049】
図3(a)に示す画像解析装置は、MRIにより取得した画像を入力する画像入力部1と、画像からボクセルデータを抽出するボクセル画像抽出部3と、ボクセルデータから投影画像を算出する投影画像算出部5と、この投影画像の画像解析を行う投影画像解析部7と、解析結果を出力する出力部11と、を有している。
図3(b)に示すように、画像解析部7は、非対称性を算出する非対称性算出部7−1と、尖鋭度合いを算出する尖鋭度合い算出部7−2と、後極突出部のピークを算出する後極突出部ピーク算出部7−3と、眼軸を自動で設定する眼軸自動設定部7−4と、頂点を補正する頂点補正部7−5と、を有している。
【0050】
図4は、本実施の形態によるMRIにより取得した投影画像を用いた強度近視の計測パラメータを示す図であり、例えば
図2Bの(b)から(d)までの投影画像より求める。
図4(a)は、眼軸に沿った眼の長さである眼軸長L1を上下・左右の投影画像より求める方法を示す図であり、例えば、眼軸長L1を、上下・左右方向の4つの投影画像による計測結果の平均値で判定する。
図2B(b)の投影画像でいえば、白で表示されている眼球部分の中で左側の小さな半円領域(水晶体)の左端部分から、眼球の右端部分まで水平方向(
図2B(b)の場合は若干右上向きに)に伸ばした線の長さを求める。
図4(b)は、後極先鋭度θを求める方法を示す図であり、C1を眼軸として計測用重心より後極方向に±θnの角度で伸ばした後極輪郭線との2つの交点と眼球後極部頂点とを結んだ線L
2、L
3のなす角度θ(後極尖鋭度θ)を、上下・左右方向の4つの投影画像による計測結果の平均値で判定する。
図4(c)は、左右対称性を求める方法を示す図であり、例えば、左右対称性を、上下方向の2つの投影画像による計測結果の平均値で判定する。具体的には、
図4(c)では、眼軸C1により区画された耳側領域(右目の場合:0〜+θ
W、左目の場合:0〜−θ
W)の後極の面積Eと鼻側領域(右目の場合:0〜−θ
W、左目の場合:0〜+θ
W)の後極の面積Nとの比を求める。実際には、後述するように、θ
Wより小さいθ
nを用いて面積Eと面積Nとの比を同様に求め、いずれか面積の比率の非対称度が大きい方を採用する。尚、この左右対称性は重症度との相関が高く重要なパラメータである。
図4(d)は、上下対称性を求める方法を示す図であり、例えば、上下対称性を眼軸C1により区画された上側領域T(0〜+θ
W)と下側領域B(0〜−θ
W)との比T/B面積比率を求め、上下の値の平均値を求める。実際には、後述するように、θ
Wより小さいθ
nを用いて面積Tと面積Bとの比を同様に求め、いずれか面積の比率が大きい方を採用する。
図4(e)は、後極突出数を後方向の投影画像より求めるものであり、後部ぶどう腫の数が複数個あるか否かを求める。
【0052】
表1は、MRIによる強度近視のタイプ分類の一例を示すものである。表1に示すように、4桁タイプの分類コード(0000〜2221までの全54通り)は、1の位が眼軸長であり、正常が“0”、異常が“1”である。10の位は、左右方向の対称性(上下の投影画像で後極左右方向θ
w度円弧の面積比で判定する)であり、0:対称、1:鼻寄り(面積比90%未満)、2:耳寄り(面積比110%以上)である。100の位は、上下方向の対称性であり、左右像で後極上下方向θ
w度円弧の面積比で判定する。0:対称、1:下寄り(90%未満)、2:上寄り(110%以上)とする。1000の位は、後極尖鋭タイプであり、上下左右の投影画像で後極先端中心の成す角で判定する。0:中間、1:紡錘型(140度未満)、2:樽型(150度以上)である。この4桁のコードにより、強度近視に関する病態等を分類して整理することができる。
【0053】
図5は、本実施の形態による、MRIによる強度近視診断手法の一例を示す図である。
図6は、眼球の前後左右上下方向の各投影画像(300×300画素)であり、前後方向の投影画像は解析に必須のものではないが、参照用に取得している。
【0054】
まず、ステップS11において、頭部MRI撮影を行う(眼球部位のボクセルデータを左右眼球別に抽出する)。その処理アルゴリズムとしては、例えば、特許第3049021号に記載の方法を用いることができる。左右眼球別に各眼球ボクセルデータに対し、上下、左右、前後6方向の2次元投影像をレンダリングする(全6枚)。その処理アルゴリズムとしては、例えば、特許第4497965号に記載の方法を用いることができる。
【0055】
より詳細には、上方向・下方向・左方向・右方向の4投影画像に対しては、後述する手法により眼軸を自動または手動で設定し、パラメータを算出する。後方向の投影画像については、後部ぶどう腫の突出の個数を自動または目視で判定するためのもので、複数個存在する場合に、後述する左右対称性または上下対称性の結果が適切に判定されない場合があるため、その結果を補足するために使用する。後部ぶどう腫の突出の個数を自動抽出する手法としては、上記特許文献8に記載の核医学画像よりピーク点を自動抽出するアルゴリズムにより実現できる。前方向の投影画像については解析対象としないが、自動設定される眼軸が適切か否かを読影医が判断するための参考にする。
【0056】
続いて、後述する
図7A(b)のように、4つの各投影画像ごとに設定された眼軸上に後極エッジ点Pbより所定の距離の位置に計測用重心Poを定義する。この計測用重心Poは、正常眼の場合は、眼軸Pf-Pbの中点あるいは眼球重心Pgに近くなるが、強度近視眼では眼球の後部側に偏る。これら設定された眼軸および計測用重心を基に、
図4で示される4つのパラメータを以下のように解析する。
【0057】
次いで、ステップS31−1において、上下または左右方向の4枚の投影画像に対し、眼軸を設定し、後極の形状特徴を画像計測する(4投影画像分、繰り返すが、少なくとも1枚の投影画像があれば処理は可能である)。次いで、ステップS31−2において、4枚の投影画像の計測結果を基に、左右方向の対称性、上下方向の対称性、後極尖鋭度を算出する。ここで、左右方向の対称性は上下方向の投影画像の計測結果の平均値を算出し、上下方向の対称性は左右方向の投影画像の計測結果の平均値を算出し、後極尖鋭度は4枚の投影画像の計測結果の平均値を算出する。次いで、ステップS51において、後方向の投影画像に対し、突出数を計測する。
上記の処理により、
図4に示したパラメータを実際の眼球に関して求めることができる。
【0058】
図7A、Bは、強度近視の形態解析パラメータの具体例を示す図である。
図7A・Bをもとに、各パラメータの解析方法の概略について説明する。
【0059】
(1)眼軸長: 眼軸長は
図7A(a)をもとに説明する。上方向・下方向・左方向・右方向の4方向の各投影画像ごとに設定された眼軸P
f−P
bの長さを個別に算出する。続いて、左方向または右方向の投影画像の眼軸P
f−P
bとX軸(水平線)とのなす角αを算出するとともに、上方向または下方向の投影画像の眼軸P
f−P
bとY軸(垂直線)とのなす角βを算出する。左方向または右方向の投影画像から算出される眼軸長に対しては、1/cosβを乗算して上下方向の傾き補正を行い、上方向または下方向の投影画像から算出される眼軸長に対しては、1/cosαを乗算して左右方向の傾き補正を行う。ただし、これらの補正係数による補正量はかなり微小であるため、実用上は省略しても影響ない。最後に、これら4方向の投影画像を基に算出された眼軸長L
1、L
2、L
3、L
4の平均値((L
1+L
2+L
3+L
4)/4)が、所定のしきい値(例.175画素)を超えるか否かで0(正常)または1(異常)と判定する。
【0060】
(2)後極尖鋭度: 後極尖鋭度は
図7A(b)をもとに説明する。上方向・下方向・左方向・右方向の4方向の各投影画像ごとに後極エッジ点P
bにおける曲率を算出する。ただし、曲率半径では固体差が生じにくいので、計測用重心P
0から後極エッジ点P
bを中心に左右または上下に所定の角度(例えば、±θ
n度)方向に延長した直線の後極輪郭線上の交点をP
+nとP
−nとし、2つの交点とPbとの3頂点のなす角P
+n−P
b−P
−nを算出し、この角度(360度単位)を後極尖鋭度と定義する。具体的には、
により算出できる。そして、4方向の画像を基に算出された後極尖鋭度θ
1、θ
2、θ
3、θ
4の平均値((θ
1+θ
2+θ
3+θ
4)/4)が、2つの下限しきい値(例.140度)と上限しきい値(例.150度)を設定し、両しきい値範囲であれば0(中間型)、下限しきい値未満は1(紡錘型)、上限しきい値を超えたら2(樽型)と判定する。
【0061】
(3)左右対称性: 左右対称性は、
図7B(c)を用いて説明する。上方向または下方向の投影画像の各計測用重心P
0から後極エッジ点P
bを中心に左右に大小2種類の角度(例えば、±θ
w度および±θ
n度)方向に延長した直線の後極輪郭線上の交点をP
+wとP
−wおよびP
+nとP
−nとする。そして、P
0−P
b−P
+wで囲まれた円弧の面積をS
+w、P
0−P
b−P
−wで囲まれた円弧の面積をS
−w、P
0−P
b−P
+nで囲まれた円弧の面積をS
+n、P
0−P
b−P
−nで囲まれた円弧の面積をS
-nとして、4領域の円弧面積を算出する。
続いて、右眼の場合はS
+w×100/S
−wを広領域E/N面積比率およびS
+n×100/S
−nを狭領域E/N面積比率とし、左眼の場合はS
−w×100/S
+wを広領域E/N面積比率およびS
−n×100/S
+nを狭領域E/N面積比率として算出する。そして、2種類の広領域E/N面積比率と狭領域E/N面積比率より100との差が大きい方のE/N面積比率を左右対称性の判定に採用し、上方向と下方向の投影画像を基に算出された2投影画像のE/N面積比率(耳側/鼻側比率)[%]の平均値を左右対称性とする。最後に、2つの下限しきい値(例.90%)と上限しきい値(例.110%)を設定し、両しきい値範囲であれば0(対称)、下限しきい値未満は1(鼻側非対称)、上限しきい値を超えたら2(耳側非対称)と判定する。
【0062】
尚、大小2種類の角度範囲でE/N面積比率を算出する理由は、後極部の拡張容積が比較的小さい場合には、後極エッジ点Pbがわずかに左右(通常は耳側)に偏移し、後極部の拡張容積が比較的大きい場合には、後極部が大きく左右(通常は鼻側)に偏移するという強度近視の病態進行上の特性によるものである。前者の場合は狭領域E/N面積比率で非対称性と判定されるが、広領域E/N面積比率では対称と判定されやすい。一方、後者の場合は狭領域E/N面積比率で非対称性(通常は耳側)と判定されるとともに、広領域E/N面積比率でも反対方向(通常は鼻側)に非対称と判定され、後者の非対称性の方が顕著であることを、見出した。
【0063】
(4)上下対称性:上下対称性は、
図7B(d)を用いて説明する。左方向または右方向の投影画像の各計測用重心Poから、上記左右対称性の算出手法と同様に、後極エッジ点Pbを中心に上下に大小2種類の角度(例えば、±θ
w度および±θ
n度)方向に延長した直線の後極輪郭線上の交点をP
+wとP
−wおよびP
+nとP
−nとする。そして、P
0−P
b−P
+wで囲まれた円弧の面積をS
+w、P
0−P
b−P
−wで囲まれた円弧の面積をS
−w、P
0−P
b−P
+nで囲まれた円弧の面積をS
+n、P
0−P
b−P
−nで囲まれた円弧の面積をS
−nとして、4領域の円弧面積を算出する。続いて、S
+w×100/S
−wを広領域T/B面積比率およびS
+n×100/S
−nを狭領域T/B面積比率として算出する。そして、2種類の広領域T/B面積比率と狭領域T/B面積比率より100との差が大きい方のT/B面積比率を上下対称性の判定に採用し、左方向と右方向の投影画像を基に算出された2つの投影画像のT/B面積比率(上側/下側比率)[%]の平均値を上下対称性とする。最後に、2つの下限しきい値(例.90%)と上限しきい値(例.110%)を設定し、両しきい値範囲であれば0(対称)、下限しきい値未満は1(下側非対称)、上限しきい値を超えたら2(上側非対称)と判定する。ただし、強度近視では上側非対称と判定される例は稀である。
【0064】
以上の解析を行うと、眼軸長は0(正常)または1(異常)の2通り、後極尖鋭度は0(中間型)、1(紡錘型)、2(樽型)の3通り、左右対称性は0(対称)、1(鼻側非対称)または2(耳側非対称)の3通り、上下対称性は0(対称)、1(下側非対称)、2(上側非対称)の3通りに分類され、強度近視の病態が理論上は正常眼を含めて全54通りにタイプ分類されることになる。
【0065】
以下に、前述した形態解析パラメータの算出を行うための、投影画像に対する具体的な前処理の内容を説明する。
【0066】
図8(a)、
図9(a)、
図10(a)は、ステップS31−1の、上下方向又は左右方向の投影画像の解析処理を示す図である。
図8(b)、
図9(c)、
図10(d)は、それぞれの処理に対応する画像の概要を示す図である。
【0067】
まず、ステップS32において、左右方向、上下方向のいずれかの投影画像に対し、投影画像の二値化処理と輪郭抽出する(
図8(b)参照)。次いで、ステップS33において、眼軸Cの自動設定処理を行う(ステップS33)。ステップS34において、設定された眼軸は適正か否かを判定し、Yesの場合には、ステップS36に、Noの場合にはステップS35に進む。ステップS35では、眼軸の修正処理を行う(
図8(d)参照)。ここでは、眼軸Cと眼球の輪郭との交点を上下させて眼軸をC’に修正する。
図9(a)に示すように、ステップS36で、決定された眼軸Cで眼軸長(前極側エッジ点から後極側エッジ点までの距離Da)を計測する(
図9(b): Da={(X2−X1)
2+(Y2−Y1)
2}
1/2)。
【0068】
ステップS37で、眼軸C上に後極側エッジ点より所定の距離位置(正常眼軸長/2)に計測用の重心点Po(X0,Y0)を追加する。ここで、X0=(X1−X2)Ds/Da+X2、Y0=(Y1−Y2)Ds/Da+Y2である(
図9(c)参照)。実施例では、Ds=87pixel(13.4mm)である。
【0069】
ステップS38において、後極側輪郭に、後極側エッジ点を中心に計測用重心点Poから正負θ
w・θ
n度の方向にエッジ点P
+w、P
+n、P
−w、P
−nを追加する(
図9(d)参照)。
【0070】
次いで、
図10に示すように、ステップS39において、後極部−θ
n(例えば22.5度を設定)〜0度および0度〜+θ
n度範囲で円弧面積比の算出(狭領域対称性)する(
図10(b)参照)。ステップS40で、後極部−θ
w(例えば45度を設定)〜0度および0度〜+θ
w範囲で円弧面積比の算出(広領域対称性)する(
図10(c)参照)。ステップS41で、狭領域面積比と広領域面積比のいずれか比率が大きい方を対称性パラメータとする。次いで、ステップS42において、後極部輪郭の−θ
n度、0度、+θ
n度の3つのエッジ点を結ぶなす角を算出する(
図10(d)参照: 尖鋭度θ)。
【0071】
図11(a)は、
図5のステップS51からの、後方向投影画像処理の流れを示すフローチャート図である。まず、ステップS52において、後方向(左右各1枚)の投影画像に対し、平滑化フィルタ処理(ノイズ除去)を行う(
図11(b)参照)。次いで、ステップS53において、更新された投影画像に対し、濃淡ピーク点Pn(n=1、2、…)をまず1つ抽出する。
図11(c)はピークP1を抽出した様子を示す図である。
図11(d)は、ピークP2を抽出した様子を示す図である。尚、ピークがない場合には、
図12(a)のステップS55に進む。ピークがある場合には、ステップS54に進み、抽出したピーク点Pnの周辺画素値を0にクリアする(
図11(e)、(f)参照)。
【0072】
図12(a)は、
図11(a)に続く処理を示す図である。ステップS54からステップS55に進み、原画像に対し、重心点Pg(Xg、Yg)を算出する(
図12(b)、
図12(c)より、
図12(d)を求める)。
【0073】
各ピーク点(Px1、Py1),(Px2,Py2)の重心Pg(Xg,Yg)からのオフセットと角度(γ1、γ2)を算出する。
【0075】
次に、レンダリング画像の前処理について
図13、
図14を参照しながら説明する。
図13(b)は左方向レンダリング画像の例で、画像サイズはW300×H300画素程度(症例によりフレームからはみ出すこともあるため、画像サイズは若干増減する)で、階調はモノクロ256階調である。これに対して、固定しきい値(例えば、0〜255値に対して25を設定)で二値化を行った結果が
図13(c)であり、眼球内部は1、背景は0で与えられる。この時、原画像の撮像状態により階調が均一でないと、右下部のように、二値化によりゴミ領域が残留する場合がある。数画素のゴミについては、上記特許文献8に記載のように、二値化処理の前に3×3の平均化マトリックス等を用いて、事前に平滑化を加えることで回避できる。比較的面積の大きいゴミ領域に対しては、二値画像から8近傍画素の連結性に基づいて閉領域を抽出する処理を行い、面積が所定のしきい値以下(例えば、200画素に設定)の閉領域を削除する処理を行う。その結果、眼球内部は2、背景は0で与えられる。最後に、眼球内部と背景との境界部分に輪郭画素を設定する。具体的には眼球内部に設定されている画素の8近傍画素のうち、4画素以上が背景画素になっている場合、輪郭画素として画素の値を1に変更する。その結果が
図13(d)であり、眼球内部は2、輪郭線上は1、背景は0で与えられる。
【0076】
より詳細に説明すると、
図13は、投影画像の二値化処理と輪郭抽出処理(S32)の詳細について説明するための図である。まず、ステップS32−1において、左右方向、上下方向のいずれかの投影濃淡画像に対し、平滑化フィルタ処理を行う(
図13(b)参照)。
ここで、ソース画像データ256階調であり、Image(x,y)=0〜255 (x=0,…,Xs-1; y=0,…,Ys-1)である。
【0077】
ステップS32−2において、投影画像の二値化処理を行う(
図13(b)参照)。
ここで、二値画像データは、
ImageM(x,y)={0:背景,1:内部}である。
【0078】
次いで、ステップS32−3において、近傍画素の連結処理、領域抽出処理を行う。
ここで、多値画像データは、
ImageM(x,y)={0:背景,2以上:内部} (x=0,…,Xs-1; y=0,…,Ys-1) である。
【0079】
次いで、
図14(a)のステップS32−4において、近傍領域の統合処理を行う(
図14(b)参照)。
ここで、多値画像データは、
ImageM(x,y)={0:背景,2以上:内部} (x=0,…,Xs-1; y=0,…,Ys-1)である。
【0080】
次いで、ステップS32−5において、微小面積領域の削除処理を行う(
図14(c)参照、3の領域が削除される)。
ここで、多値画像データは、
ImageM(x,y)={0:背景,2:内部} (x=0,…,Xs-1; y=0,…,Ys-1) である。
【0081】
次いで、ステップS32−6において、輪郭抽出処理を行う(
図14(d)参照)。
ここで、三値画像データは、
Image(x,y)={0:背景,1:輪郭,2:内部} (x=0,…,Xs-1; y=0,…,Ys-1) である。このようにして、眼球の投影画像を、背景、輪郭、内部の3値に区別できる。
【0082】
図15Aは、眼軸の自動設定アルゴリズムの概要を示す図である。
前述の通り、眼軸は後極の左右対称性や上下対称性などのパラメータを算出する際の基準になるもので、高精度に設定されることが要求される。しかし、病態により眼球の形状自体が大幅に変化する以上、画一的な眼球形状特徴を手がかりにして自動的に眼軸を設定することは困難である。強度近視では一般に後極側が非対称になっても、前極側は対称性が維持されるということを仮定し、前極の対称性を基に眼軸を自動設定する手法を提案する。そして、前極も非対称である場合など、この仮定が成立しない場合には、手動による対話型修正を加えて個別に対応するものとする。
【0083】
図14(d)の画像に対して、値が1となる画素のX方向の最小値X
1と最大値X
2を求め、各々最小最大をとるときのY方向の画素位置をY
1およびY
2とする。また、値が1以上となる画素のX座標の平均値をXg、Y座標の平均値をYgとする。これらの座標値を基に、
図15A(1)に示されるように、(X
1,Y
1)を前極エッジ点Pf、(X
2,Y
2)を後極エッジ点Pb、(Xg,Yg)を重心点Pgと定義する。この時、Pf−Pg−Pbが眼軸に対応するが、正常眼のように前極も後極も対称性をもつ眼球でない限り、この段階で仮設定される眼軸は適切な方向にならない。
【0084】
Pf, Pg, Pbの3点で最も信頼できる点はPgである。そこで、Pgを基準にしてPfを補正する。具体的には、
図15A(2)のように、前極エッジ点PfをPfのX座標がPgに近づかない範囲で、前極の輪郭線上に上下に微少量移動させる。移動させた各位置で、Pg−Pfの直線上にPcなる中間計測点を設定し、Pcより直線Pg−Pfと直交する上下方向に直線を延ばし、輪郭線との交点をP
+vおよびP
−vとし、距離Pc−P
+vとPc−P
−vとの差を計算する。この差が最小値をとるときのPfの位置を前極エッジ点に決定する。このとき、Pcは一箇所でなく、直線Pg−Pf上に所定の範囲で動かし(例えば、PcをPgからPf方向に2〜12画素の距離だけ動かす)、各々算出される距離Pc−P
+vとPc−P
−vとの差の総和が最小値をとるPfの位置を探索する。続いて、逆に決定されたPfを基準にしてPgを補正する。具体的には、
図15A(3)のように、重心点PgをPgのY座標が上下の輪郭線に近づかない範囲で、X座標Xgを固定にして上下に微少量移動させる。上記と同様に、移動させた各位置で、Pf−Pgの直線上にPcなる中間計測点を設定し、Pcより直線Pf−Pgと直交する上下方向に直線を延ばし、輪郭線との交点をP
+vおよびP
−vとし、距離Pc−P
+vとPc−P
−vとの差を計算する。この差が最小値をとるときのPgの位置を重心点に決定する。同様に、Pcは一箇所でなく、直線Pf−Pg上に所定の範囲で動かし(例えば、PcをPfからPg方向に2〜12画素の距離だけ動かす)、各々算出される距離Pc−P
+vとPc−P
−vとの差の総和が最小値をとるPgの位置を探索する。
【0085】
最後に、決定されたPfとPgを基準にして、Pf−Pg−Pbが一直線上に近づくようにPbを補正する。具体的には、
図15A(4)のように、後極側エッジ点PbをPbのX座標がPgに近づかない範囲で、後極の輪郭線上に上下に微少量移動させる。移動させた各位置で、重心点Pgから直線Pf−Pbに下ろした垂線と直線Pf−Pbとの交点と重心点Pgとの距離を算出する。この距離が最小値をとるときのPbの位置を後極エッジ点に決定する。
【0086】
以上の処理により、Pf−Pbを眼軸と決定できるが、眼軸位置を画面に表示して読影医による判断を仰ぎ、不適切な場合、2点PfとPbを画面上で対話形式に修正し、修正されたPfとPbの中点をPgに再設定する。また、パラメータ解析を行うため、
図7A(b)に示されるように、決定された眼軸上でPbより所定の距離(例えば、87画素)位置に計測原点Poを設定し、 Poから後極エッジ点Pbを中心に上下に大小2種類の角度(例えば、±θ
wおよび±θ
n)方向に延長した直線の後極輪郭線上の交点P
+wとP
−wおよびP
+nとP
−nを設定する。
【0087】
より詳細な処理内容を以下に説明する。
図15Bは、眼軸の自動設定処理(ステップS33)の詳細を示す図である。
図15B(a1)に示すように、ステップS33−1において、輪郭抽出後の投影画像に対し、前極側および後極側のエッジ点(X1,Y1)、(X2,Y2)と重心点(Xg,Yg)を算出する。左右方向の投影画像の場合(
図15B(a2))、X軸方向の最大最小エッジ点を前後極側のエッジ点とし、上下方向の投影画像の場合、Y軸方向の最大最小エッジ点を前後極側のエッジ点とする(ステップS33−2)。
図15B(b)から
図15B(e)までは、左右、上下方向の投影画像に関する処理を行った様子を示す図である。
【0088】
図16(a)は、
図15に続く処理の流れを示す図である。ここで、前極側は対称性が保持されていることを前提とする。ステップS33−3において、前極側エッジ点の補正と決定処理を行う(
図16(b)参照)。ここで、前極側エッジ点を輪郭線上で微少量動かし、重心点Pgから前極側エッジ点方向のベクトルから垂直方向に上下に輪郭線まで延ばした2つの距離(両矢印)が最も近くなるように、前極側エッジ点Pfを決定する。
【0089】
次いで、ステップS33−4において、重心点の補正と決定処理を行う(
図16(c)参照)。
重心点Pgを輪郭線内部で垂直方向に上下に動かし、既に決定されている前極側エッジ点Pfから重心点方向のベクトルから垂直方向に上下に輪郭線まで延ばした2つの距離(両矢印)が最も近くなるように、重心点Pg’を決定する。
【0090】
次に、
図17(a)に示すように、ステップS33−5において、後極側エッジ点の補正と眼軸の決定処理を行う(
図17(b)参照)。ここで、後極側エッジ点を輪郭線上で微少量動かし、既決定の前極側エッジ点Pfから重心点Pg’のベクトルの延長線上に最も近くなるように、後極側エッジ点Pbを決定する。
【0091】
図18(a)は、眼軸の修正処理の流れを示す図である。まず、ステップS35−1において、画面上で前極側エッジ点Pfまたは後極側エッジ点Pbのいずれかを選択する(
図18(b)参照)。
【0092】
次いで、ステップS35−2において、選択した前極側エッジ点Pfまたは後極側エッジ点Pbを画面上で所望の位置(Px)へ移動させる(
図18(c)参照)。
【0093】
次いで、移動させて設定したエッジ点Pxの輪郭線LR上への自動補正と重心点Pg’の自動補正を行う(
図18(d)参照)。エッジ点を最も近傍の輪郭線上の位置へ移動させ、更新したエッジ点ともう一方の更新しないエッジ点を結ぶ直線上に重心点を移動させる)。
【0094】
ステップS35−4において、適切な方向か否かを判定し、YESであれば、処理を終了し、Noであれば、ステップS35−1に戻る。
【0095】
図19(a)は、後極輪郭部における計測用エッジ点の作成処理(S38)の詳細を示す図である。
ステップS38−1において、計測用重心点(X0,Y0)より眼軸Cと直交する方向に上下の輪郭線LR上に90度および−90度計測用エッジ点(Xp9,Yp9)、(Xm9,Ym9)を追加する(
図19(b)参照)。
【0096】
ステップS38−2において、90度、0度、−90度計測用エッジ点をもとに、θ
wおよび−θ
w度計測用エッジ点(Xp4,Yp4)、(Xm4,Ym4)を追加する(
図19(c)参照)。
【0097】
ステップS38−3において、θ
w、0度、−θ
w計測用エッジ点をもとに、θ
nおよび−θ
n度計測用エッジ点(Xp2,Yp2)、(Xm2,Ym2)を追加(
図19(d)参照)。
このようにして後極部に計測用エッジ点を作成する。
【0098】
図20(a)は、平滑化フィルタ処理(
図11(a):S52)の流れを示すフローチャート図である。
図20(b)は、平滑化フィルタの例を示す図である。
【0099】
フィルタ演算は、マトリックスを画像データに対して掛け合わせて処理するものである。処理する注目する画素の近傍を領域を複数個選んで参照する(例えば3×3、上下左右)。この値(1/9)を画素の値に乗算して、加算する処理により平均値を取る(3×3の9画素の総和の平均値をとる)。
【0100】
図20(b)に示すように、3×3の平滑化フィルタ・マトリックスを、M(i,j)の例として示す図である。ステップS52−1において、
図20(b)に示す3×3の平滑化マトリックスを定義する。次いで、ステップS52−2において、x=y=1,i=j=−1、一時的な変数(画素値の一時的な変数)v=0として初期化の定義とを行う。vはx,yは、画素をスキャンするx方向のアドレスとy方向のアドレス(トータルXs、Ys個の画素)の先頭を決める。i、jは、マトリックスを演算するために加える変位であり、入力の投影画像は、Image(x、y)であり、x=(0,1,…,Xs−1)、y=(0,1,…,Ys−1)で定義できる。iとjとは、−1から+1の範囲の整数値を取る。
【0101】
ステップS52−3で、v←v+Image(x+i,y+j)・M(i,j)とする。ステップS52−4で、iを1ずつインクリメントし、ステップS52−5で、iと+1とを比較し、i>1になれば、1つの3×3のフィルタによる処理を終えて、ステップS52−6に進み、jに+1を行い、同様の処理を行うことで、3×3のマトリックスを乗算する処理を終える。そして、ステップS52−9、ステップS52−11で、全ての画素に関する演算が行われたか否かを判定し、処理を終了する(End)。このようにして、3×3の平滑化マトリックスを入力投影画像上で動かすことにより、3×3の平滑化フィルタにより、投影画像の画素値の平滑化を行うことができる。
【0102】
図21は、投影画像に対する濃淡ピーク点の抽出処理(
図11(a):S53参照)の流れを示すフローチャート図である。xとyとでループ処理を行う点は、
図20と同様である。但し、Xs、Ysまでの処理を行う。画素Image(x,y)は、0〜255までの値を持っている。投影画像の中で局所的にピークをもつローカルピークを見い出す処理である。画素が0から255までの値をもっており、ステップS53−1において、初期値の例として128より小さくない値としてVm=128に設定し、ピーク座標(Px,Py)として、初期値(−1,−1)を、設定する。また、濃淡画像Image(x,y)をコピーした一時的なコピーImage2(x,y)をバックアップとして持つとともに、初期値としてx=y=0を設定する。ステップS53−2において、Image2(x,y)と濃淡のピークVmとを比較する。Image2(x,y)>Vmであれば、ステップS53−3に進み、Vm=Image2(x,y)とし、Px=x,Py=yを保存する。以下、全ての画素において処理を行うと、ピーク点が求まる。すなわち、Image2(x,y)<=Vmであれば、ステップS53−3をスルーし、ステップS53−4で、xを1だけインクリメントする。画像の水平方向の末端にあたるまで(x=Xs)処理を繰り返し(ステップS53−5)、次いで、yについても処理を行う(ステップS53−6、7)。ステップS53−8で、Xp<0かつYp<0であるか否かを判定し、Yesであれば、濃淡のピークが存在しないとして(ピーク点無し)、例えば初期値を再設定する。Noであれば、ピークあり(Xp,Yp)、このピーク(Xp,Yp)を出力する。
【0103】
次いで、
図22に進む。
図22は、
図21の処理で抽出できたピーク点の周辺画素のクリア処理の流れを示すフローチャート図である(
図11のステップS54)。
図21のピーク出力から、ステップS54−1において、ピーク座標(Xp,Yp)で、x=y=0としてリセットする。ステップS54−2において、ピーク点(Xp,Yp)までの距離rを
r={(x-Px)
2+(y-Py)
2}
1/2
により算出する。ステップS54−3において、距離rと、そのしきい値(例えば50画素)とを比較する。rがSr以下であれば、ステップS54−4に進み、Image2(x,y)=0として、rがSrより大きい場合とともに、ステップS54−5でxを1だけインクリメントし、ステップS54−6において、xとXsとを比較する。x<Xsであれば、ステップS54−2に戻る。xがXs以上であれば、ステップS54−7に進み、yについても同様の処理を行い、クリア処理を終了する。これにより、ピーク点(Xp,Yp)から半径Srの範囲の領域における画素値をクリア処理することができる。
【0104】
図23は、原画像に対する重心点の算出処理を示すフローチャート図である(
図12(a):ステップS55)。ここでは、画素の平均値を取ることで、重心点を求めている。
【0105】
まず、ステップS55−1で、重心座標(Xg,Yg)において, Xg=Yg=0, 重み総和V=0, x=y=0と初期化する。次いで、ステップS55−2において、
Xg←Xg+Image(x,y)・x, Yg←Yg+Image(x,y) ・y, V←V+ Image(x,y)
として、ステップS55−3からステップS55−6までの処理により、画素の平均値を計算し、ステップS55−7で、
Xg←Xg/V, Yg←Yg/V
と、原画像に対する重心点を求めることができる(
図12(d)参照)。
【0106】
図24は、画素の二値化処理(ステップS32)の詳細を示すフローチャート図である。画素値0〜255を0か1かのいずれかに変換する。すなわち、Sl(エル)よりも大きければ“1”にして、そうでなければ“0”にする。
【0107】
まず、ステップS32−2−1において、二値画像データImageM(x,y)=0(初期値は全画素0),x=y=1を設定する。ステップS32−2−2において、Image(x,y)をしきい値Sl(エル)と比較する。しきい値Slは、例えば25である。Image(x,y)がしきい値Slより大きい場合には、ステップS32−2−3に進み、二値画像データImageM(x,y)=1とし、Image(x,y)がしきい値Sl(エル)以下である場合とともに、ステップS32−2−4に進み、xを1だけインクリメントし、ステップS32−2−5に示すように、xがXs−1になるまで上記の処理を繰り返す。xがXs−1より大きくなると、ステップS32−2−6に進み、yについて1だけインクリメントし、yがYs−1より大きくなるまで処理を繰り返す。yがYs−1以上になると、処理が終了する。これにより、Sl(エル)よりも大きければ“1”にして、そうでなければ“0”にする画像の二値化処理をすることができる(
図13(c)参照)。
【0108】
図25(a)は、近傍画素の連結処理、領域抽出処理の流れを示すフローチャート図である(ステップS32−3、
図13(d)参照)。
図25(b)は、8近傍画素のうちの4つの近傍画素を示す図である。0、1で2値化した場合に、例えば、対象画素の値が1で、2以上の値(領域Id)を持ったものが対象画素の4つの近傍画素のいずれかに存在するかをみる。2以上の値をもつ近傍画素が存在する場合、対象画素の値を当該近傍画素のIdに設定するとともに、当該近傍画素のIdに対応する領域テーブル内の面積値(領域内の画素の個数)を1だけインクリメントする。2以上の値をもつ近傍画素が存在しない場合、対象画素に新規な領域Id(初期値は2)を割り当てるとともに、当該Idに対応する領域テーブルに新規なレコードを登録し、その初期面積値を1に設定するする。このような処理を繰り返すことにより、0、1で2値化された画像の中で1をもつ全画素に2以上の領域Idが割り当てられ、N個の領域に分割されるとともに、領域テーブルに各領域の面積算出結果が格納される。
【0109】
まず、ステップS32−3−1において、Id: 領域Id (初期値:1), 領域テーブルTb(id):初期値0, n:領域数(初期値n=0)、x=y=1を設定する。ステップS32−3−2において、対象画素(x、y)が眼球内部にあるか否か、即ち、ImageM(x,y)と0とを比較する。眼球内部にある場合、即ち、0より大きい場合には、ステップS32−3−3において、4つの8近傍画素(x-1,y-1), (x,y-1), (x+1,y-1), (x-1,y)を確認する。すなわち、自分のアドレスよりもアドレスが小さい4つの画素について、背景(0)と眼球内部(2以上、アドレスが小さい既処理画素では値1は存在しない)のうち、内部と指定されているものがあるか否かを確認する。即ち、ステップS32−3−4において、2以上の値Idpをもつ画素があるか否かを判定する。
【0110】
Yesの場合は近傍画素のIdpを自己の画素の領域Idとして流用し、Noの場合には、ステップS32−3−6に進み、新規領域Idの割り当てを行い、Id←Id+1, Idp=Id, n←n+1とし、Yesの場合とともに、ステップS32−3−5に進み、テーブルの値(2番)に画素のカウント値(初期値0)に1を加算して1とし、同時に領域番号Idp(=2)として画像データを更新する。
Tb(Idp)←Tb(Idp)+1, ImageM(x,y)=Idp
【0111】
次いで、ステップS32−3−7に進み、xを1だけインクリメントし、ステップS32−3−8において、xとXs−1とを比較し、輪郭まで処理を繰り返し、次いで、yについても同様の処理を行う。これにより、近傍画素の連結処理、領域抽出処理を終了する(End:
図13(d)参照)。これにより、領域分割と各領域の面積計算が完成する。しかし、領域Id割り当て時に、4近傍画素しか参照していないため、本来同一Idが割り当てられるべき近傍の領域に異なる領域Idが割り当てられ、過剰に領域分割されがちになる。そこで、近傍領域を統合する補正処理を行う。
【0112】
図26(a)は、近傍領域の統合処理の流れを示すフローチャート図である(
図14、ステップS32−4、
図14(b)参照)。
図26(b)は、8近傍画素の例を示す図である。領域テーブルが完成した状態で、8近傍画素全部を見て抽出した領域を整理する処理であり、全画素の領域番号が再割り当てされて整理される。
【0113】
上記処理を行った結果、多値画像データは、
ImageM(x,y)={0:背景,2以上:内部} (x=0,…,Xs; y=0,…,Ys)
になっており、2以上の値をもつ画素をできるだけ小さい値(2以上の範囲で)になるように統合する。
【0114】
まず、ステップS32−4−1で、x=y=1とし、ステップS32−4−2において、対象画素(x、y)が領域内部にあるか否か、即ち、ImageM(x,y)が正か0かを判定する。正の場合には、ステップS32−4−3に進み、8近傍画素(x-1,y-1), (x,y-1), (x+1,y-1), (x-1,y), (x+1,y), (x-1,y+1), (x,y+1), (x+1,y+1)を確認する。すなわち、ステップS32−4−4において、ImageM(x+i,y+j)< ImageM(x,y)となる近傍の異なる領域内画素が存在するか否かを判定する。即ち、2以上の値が入っていて、自分のID番号よりも若い番号の付けられている近傍の画素を調べる。Yesの場合には、ステップS32−4−5に進み、領域Id更新処理を行い、Noの場合、ステップS32−4−2でImageM(x,y)が0の場合と同様に、ステップS32−4−6に進み、xを1だけインクリメントし、処理を継続する。xがXs−1になると、yに関して同様の処理を行い、y=Ys−1になると、処理を終了する(End)。
【0115】
次いで、
図27に示すように、自分のID番号よりも若い番号の付けられている近傍の画素を調べて若い番号が付いている場合には、自分の画素を若い番号の方に入れ直す(若いグループに入れる)。自分の領域idを周辺画素(x+i,y+j)のIdpに入れ替える場合、画像データ全体に渡って、自分と同一の領域idをもつ全画素をIdpに変更する。そうすると、当該領域idの値をもつ画素が無くなるため、当該領域idの値より大きい値をもつ全ての画素の値を1だけ減少させる。これにより、使用される領域idの種類Nが1だけ減少し、本処理を繰り返すことにより、領域が順次統合されNが小さくなる。
【0116】
領域ステップS32−4−11において、
id= ImageM(x,y), Idp=ImageM(x+i,y+j), u=v=1を設定し、ステップS32−4−12において、ImageM(u,v)とidとを比較する。ImageM(u,v)が0の場合には、ステップS32−4−15に進む。ImageM(u,v)がidの場合には、ステップS32−4−13に進み、ImageM(u,v)=Idpとし、ステップS32−4−15に進む。ImageM(u,v)>idの場合には、ステップS32−4−14に進み、ImageM(u,v)←ImageM(u,v)-1とし、ステップS32−4−15に進む。ステップS32−4−15においては、uを1だけインクリメントし、ステップS32−4−15においてuとXs−1とを比較し、u≧Xs-1であれば、ステップS32−4−17に進み、u<Xs-1であればステップS32−4−12に戻る。ステップS32−4−17においては、u=1, v←v+1として、ステップS32−4−18において、vとYs−1とを比較する。v≧Ys-1の場合には、ステップS32−4−19に進み、v≧Ys-1の場合にはステップS32−4−12に戻る。ステップS32−4−19においては、領域テーブルTbに関して、領域idをIdpに統合させ、idを0クリアする。即ち、
Tb(Idp)←Tb(Idp)+Tb(id), Tb(id)=0, id←id+1
とし、ステップS32−4−20において、idとn+2とを比較し、id≧n+2であれば、ステップS32−4−22に進み、id<n+2であれば、ステップS32−4−21に進む。ステップS32−4−21では、全ての領域のid番号を1だけ減少させる。即ち、
Tb(id-1)←Tb(id), id ← id+1
として、ステップS32−4−20に戻る。最終的にid≧n+2になると、ステップS32−4−22において、nを1だけデクリメントして処理を終了する。これにより
図14(b)に示すような、近傍領域の統合処理を行うことができる。
【0117】
図28は、周辺のごみのような微小面積を削除して、眼軸の決定における間違いを低減するための、微小面積領域の削除処理(ステップS32−5)を示すフローチャート図である(
図14(c)参照)。まず、ステップS32−5−1においてid=2とし、ステップS32−5−2において、Tb(id)とStとを比較する。ここで、Stは、面積の下限しきい値であり、例えば200である。Tb(id)>=Stであれば、ステップS32−5−10に進む。Tb(id)<Stであれば、ステップS32−5−3に進み、画像データ中の全てのidという値をもつ画素を背景画素に設定する。ステップS32−5−3において、変数u、vを1とし、ステップS32−5−4において、ImageM(u,v)と領域番号idとを比較する。ImageM(u,v)=idであれば、ステップS32−5−5において、ImageM(u,v)=0として領域内の画素を背景領域にしていき、ステップS32−5−6に進む。ImageM(u,v)がidと等しくなければ何もせずに、ステップS32−5−6に進む。
【0118】
ステップ32−5−6において、uを1だけインクリメントし、ステップ32−5−7において、uとXs-1とを比較する。u<Xs-1であればステップS32−5−4に戻り、u>=Xs-1であればステップS32−5−8において、u=1, v←v+1とする。
【0119】
次いで、ステップS32−5−9において、vとYs-1とを比較し、v≧Ys-1であればステップS32−5−4に戻り、v≧Ys-1であればステップS32−5−10に進み、Idを1だけインクリメントし、ステップS32−5−11において、idとn+2とを比較する。id<n+2であれば、ステップS32−5−4に戻り、id≧n+2であれば、ステップS32−5−12に進む。
【0120】
このように、前の処理で面積の小さい領域を削除した後に、まだ領域番号3以上の値が残った場合に、無条件に3以上の値を2に変更する(3値化する、
図14(c)参照)。すなわち、ステップS32−5−12においてu=v=1として、ステップS32−5−13において、ImageM(u,v)と2との大小を比較し、ImageM(u,v)>2であれば、ステップS32−5−14に進み、ImageM(u,v)=2とし、ImageM(u,v)<=2の場合とともに、ステップS32−5−15において、uを1だけインクリメントする。これにより、
図14(c)の3以上の領域を2に変更する。ステップS32−5−16において、uとXs-1とを比較しu<Xs-1であれば、ステップS32−5−13に戻り、u>=Xs-1であれば、ステップS32−5−17に進み、u=1, v←v+1とする。次いで、ステップS32−5−18において、vとYs-1とを比較し、v<Ys-1であれば、ステップS32−5−13に戻り、v>=Ys-1であれば、処理を終了する。これにより、あるしきい値Stよりも小さい領域を削除する(
図14(b)の3番の領域を背景(0)に置き換える処理を行うこと、すなわち微小面積の領域を削除することができる。
【0121】
図29は、輪郭抽出処理の流れを示すフローチャート図である(
図14(d)参照)。自分自身も含めて8近傍の合計9つの画素において、2(内部)になっている画素の数を数え、それが3番から7番の値であれば輪郭として、“1”に変更する処理である。ステップS32−6−1において、x=y=1を設定する。次いで、画素カウンタにおいて、c=0、i=j=−1を設定する。ステップS32−6−3において、対象画素(x、y)の8近傍画素(x+i,y+j)が領域内部にあるか否か、即ち、ImageM(x+i,y+j)と0とを比較し、ImageM(x+i,y+j)>0であれば、ステップS32−6−4において、cを1だけインクリメントし、ステップS32−6−3において、=0の場合とともに、ステップS32−6−5において、iを1だけインクリメントする。次いで、iと1とを比較し、i≦1であれば、ステップS32−6−3に戻る。iと1とを比較し、i>1であれば、ステップS32−6−6に進み、iを1だけインクリメントする。ステップS32−6−6において、iと+1とを比較し、i≦1であればステップS32−6−3に戻り、i>1であれば、ステップS32−6−7において、i=-1, j←j+1とする。
【0122】
次いで、ステップS32−6−8において、jと+1とを比較し、j≦1であれば、ステップS32−6−3に戻り、j>1であれば、ステップ32−6−9において、カウントした領域内部にある近傍画素の個数cの値を基に対象画素が輪郭になるかを判定する。例えば、3≦c≦7であるか否か(8近傍画素の数が3から7の範囲に入っているかで輪郭と判定する。yesの場合には、ステップS32−6−10において、ImageM(x,y)=1と輪郭設定し、noである場合とともに、ステップS32−6−11において、xを1だけインクリメントする。次いで、ステップS32−6−12において、xとXs−1を比較し、x<Xs-1であればステップS32−6−2に戻る。x≧Xs-1であれば、ステップS32−6−13に進み、x=1, y←y+1とし、ステップS32−6−14において、yとYs-1とを比較し、y≧Ys-1であればステップS32−6−2に戻る。y≧Ys-1になると、処理を終了することで、輪郭を抽出することができる。
【0123】
図30は、前極側および後極側エッジ点と重心点の算出処理の流れを示すフローチャート図である(S33−1:
図15B)。前述する重心を求める処理と同様であるが、0から255までの階調画像ではなく、0、1、2の3つの値のみをとる。
【0124】
まず、ステップS33−1−1において、重心座標(Xg,Yg), Xg=Yg=0, 重み総和V=0, x=y=0、前極側エッジ点(X1,Y1), X1=Y1=-1,後極側エッジ点(X2,Y2), X2=Y2=-1を設定する。
【0125】
次いで、ステップS33−1−2において、対象画素(x、y)が領域内部または輪郭にあるか否か、即ち、ImageM(x,y)と0とを比較する。ImageM(x,y)=0の場合には、ステップS33−1−13に進む。ImageM(x,y)>0の場合には、ステップS33−1−3に進み、Xg←Xg+x, Yg←Yg+y, V←V+1とする。次いで、ステップS33−1−4において、左右方向の投影画像であるか否かを判定する。Yesの場合には、ステップS33−1−5に、Noの場合にはステップS33−1−9に進む。
【0126】
ステップS33−1−5において、X1<0 or x<X1であるか否かを判定し、Yesの場合には、ステップS33−1−6においてX1=x, Y1=y(最小値候補)とし、Noの場合とともにステップS33−1−7に進み、X>X2であるか否かを判定し、Yesの場合にはX2=x, Y2=yとし。Noの場合と共に、X2=x, Y2=y(最大値候補)とする。このようにして、x方向で最小と最大を見つける処理である。
【0127】
ステップS33−1−4でNoの場合には、上下方向についても同様に、ステップS33−1−9に進み、Y1<0 又は y<Y1であるか否かを判定し、Yesの場合にはステップS33−1−19に進み、X1=x, Y1=yとし、Noの場合とともに、ステップS33−1−11において、y>Y2であるか否かを判定する。Yesの場合には、ステップS33−1−12において、X2=x, Y2=yとし、Noの場合とともに、ステップS33−1−13において、xに1をインクリメントする。ステップS33−1−14において、xとXsとを比較し、x<Xsであれば、ステップS33−1−2に戻り、x≧XsであればステップS33−1−15においてx=0, y←y+1とし、ステップS33−1−16において、yとYsとを比較する。y≧Ysであれば、ステップS33−1−2に戻り、y≧Ysであれば、ステップS33−1−17において、Xg←Xg/V, Yg←Yg/Vとして、ステップS33−1−18において、右・下方向投影であるか否かを判定し、Noであれば、そのまま終了し、Yesであれば上下左右をひっくり返して、ステップS33−1−19において、X1≪X2, Y1≪Y2として処理を終了する。これにより、X1、X2、Y1、Y2を求めることができる。
仮決定された点に順番に補正する。
【0128】
図31は、前極側エッジ点の補正と決定処理の流れを示すフローチャート図である(S33−3、
図16参照)。ステップS33−3−1において、X1、Y1を補正するために、(X1,Y1)と(Xg,Yg)より、後述する方法により距離差dを算出する。まず、ステップS33−3−2において、前極側エッジ点(x1,y1)、初期値x1=X1, y1=Y1、最小距離差dm=d, x=y=0を設定する。
【0129】
ステップS33−3−3において、対象画素(x、y)が輪郭上にあるか否か、即ち、ImageM(x,y)と1とを比較し、異なれば、輪郭上の点でないと判断しステップS33−3−8に進み、同じであれば、輪郭上の点であると判断しステップS33−3−4に進み、
左方向:x<{X1*(Sw-1)+Xg}/Sw
右方向:x>{X1*(Sw-1)+Xg}/Sw
上方向:y<{Y1*(Sw-1)+Yg}/Sw
下方向:y>{Y1*(Sw-1)+Yg}/Sw
を満たすか否かを判定する。ここで、Swは、走査重みであり、例えば16である。ここで、候補にある点の範囲を決めておく。
【0130】
ここで、Noであれば、ステップS33−3−8に進む。Yesであれば、ステップS33−3−5において、(x,y)と(Xg,Yg)より距離差dを算出する(
図16(b)参照)。ここで、ステップS33−3−6において、d<dmであるか否かを判定する。Yesの場合には、ステップS33−3−7に進み、x1=x, y1=y, dm=d(前極側エッジ点候補)と更新して、Noの場合とともに、ステップS33−3−8に進む。このような処理を繰り返すことにより、前極側のエッジ点が決まる。
【0131】
ステップS33−3−8では、xを1だけインクリメントする。次いで、ステップS33−3−9において、xとXsとを比較し、x<Xsの場合には、ステップS33−3−3に戻る。x≧Xsの場合には、ステップS33−3−10に進み、yとYsとを比較し、y≧Ysの場合には、ステップS33−3−3に戻る。y≧Ysの場合には、ステップS33−3−12に進みX1←x1, Y1←y1として、前極側エッジ点の補正処理を終了する。
【0132】
図32は、
図31のステップS33−3−1およびS33−3−5の処理である前極側エッジ点と重心点方向の距離差算出処理の流れを示すフローチャート図である(
図16、ステップS33−4)。尚、
図32では本処理を前極側エッジ点の補正だけでなく、後述する重心点の補正にも流用するため、前極側エッジ点に対して前方エッジ点、重心点に対して後方エッジ点という汎用化した表記にしている。
図31のステップS33−3−1の(X1,Y1)およびS33−3−5の(x,y)はいずれも、
図32の前方エッジ点(Xs,Ys)に対応し、
図31のステップS33−3−1およびS33−3−5の(Xg,Yg)はいずれも、
図32の後方エッジ点(Xe,Ye)に対応する。距離差の算出は、まず、ステップS33−4’−1において、
前方エッジ点(Xs,Ys),後方エッジ点(Xe,Ye)とし、
前方エッジ点から後方エッジ点の方向の単位ベクトル
dx=(Xe-Xs)/L, dy=(Ye-Ys)/Lを求める。
【0133】
但し、L={(Xe-Xs)
2+ (Ye-Ys)
2}
1/2
前極側エッジ点P
fからの距離r(初期値:2, 上限:12)を定義し、
出力距離差の初期値=0として、r=2から=12まで11回計算する。
【0134】
ステップS33−4’−2において、
xc=dx×r+Xs, yc=dy×r+Ysの計測用中間点を規定し(前方エッジ点から後方エッジ点に向かう軸上に規定される計測用中間点 (xc,yc)が求まる。)、前記計測用中間点より前方エッジ点から後方エッジ点に向かう軸と直交する上方向に直線を延ばし、眼球領域の上側の輪郭上の交点(xc1,yc1)を以下のように算出する。
【0135】
ステップS33−4’−3において、xc1=yc1=-1, t=0.5(0.5画素単位)を代入して変数を初期化し、ステップS33−4’−4において、
x= -dy×t+xc, y=dx×t+ycで表される直線、すなわち、前方エッジ点から後方エッジ点に向かう軸と直交する方向の単位ベクトルを、tという値で変化させて上側に移動させる。tを増していきながら線を上方向に延ばして輪郭とぶつかったところを探す、すなわち、ステップS33−4’−5に示すように、
x<Xs, y<Ys, ImageM(x,y)=1であるか否かを判定することで見つける。
【0136】
Yesの場合には、ステップS33−4’−6において、上方向に延ばした線と輪郭とが交わった点を(
図16(b))
xc1=x, yc1=yとし、
Noの場合には、ステップS33−4’−7でtに0.5を足してステップS33−4’−4に戻る。
【0137】
次は、前記計測用中間点より前方エッジ点から後方エッジ点に向かう軸と直交する下方向に直線を延ばし、眼球領域の下側の輪郭上の交点(xc2,yc2)を同様に算出する。ステップS33−4’−6からステップS33−4’−8に進み、xc2=yc2=-1, t=-0.5とする。次いで、ステップS33−4’−9において、
x= -dy×t+xc, y=dx×t+ycとする。
【0138】
次いで、ステップS33−4’−10において、
x<Xs, y<YsでImageM(x,y)=1であるか否かを判定し、Noの場合には、ステップS33−4’−12においてtから0.5を減算し、ステップS33−4’−9に戻る。Yesの場合には、ステップS33−4’−11において、延ばした線と輪郭とが交わった点を(
図16(b))
xc2=x, yc2=y
として、ステップS33−4’−13において、前記計測用中間点より上側の輪郭上の交点までの距離と前記計測用中間点より下側の輪郭上の交点までの距離との距離差を以下のように算出して距離差の総和値dに加算する。
d←d+|(xc1-xc)
2+(yc1-yc)
2-(xc2-xc)
2-(yc2-yc)
2|
とし(ここで、求めたdは、点(xc,yc)を基準にして、(xc1,yc1)と(xc2,yc2)との間の距離、の総和である。)、ステップS33−4’−14でrをセンター方向(重心点)に動かし、ステップS33−4’−15で
r<上限値(12)
であるか否かを判定することで、計測用中間点(xc,yc)を動かしながら複数個所にわたって上下方向の距離差を求めて、その総和をdとし、dが出力される。
【0139】
Yesの場合には、ステップS33−4’−2に戻り、Noの場合には、処理を終了する(End)。この処理により、前極側エッジ点と重心点方向の距離差dを算出することができる。
【0140】
図33は、重心点の補正と決定処理(S33−4)の流れを示すフローチャート図である(
図16(c)参照)。基本的な考え方は
図31と同様であり、
図31は重心点を仮決めし、仮の重心点から前極側エッジ点を求めた。そして、距離差dが最も小さくなるときが前極側エッジ点となる。異なる点は、
図31では輪郭線上を通るのに対して、重心は内部で変動する点が異なる。ステップS33−4−1において、(Xg,Yg)と(X1,Y1)より距離差dを算出する。(Xg,Yg)はいずれも、
図32の前方エッジ点(Xs,Ys)に対応し、(X1,Y1)は
図32の後方エッジ点(Xe,Ye)に対応させ、同様なロジックで距離差dを算出する。ここで、ステップS33−4−2において、重心点(xg,yg)、初期値xg=Xg, yg=Yg, 最小距離差dm=dを設定する。次いで、ステップS33−4−3において、左右方向であるか否かを判定する。Noの場合(上下方向)には、ステップS33−4−11に進み、Yesの場合(左右方向)にはステップS33−4−4に進む。
【0141】
ステップS33−4−4(左右方向)においては、重心をy軸方向に移動させる(x軸方向は動かさない(xgは初期値のまま変更しない)。
Ymin={Yg*(100-Sw)+Y1*Sw}/100
Ymax={Yg*(100-Sw)+Y2*Sw}/100, y=Ymin
とする。これにより、動かす範囲を決めて、不要な範囲を動かさないようにする。ここで、Sw:走査重みは例えば30である。
【0142】
次いで、ステップS33−4−5において、Y方向に関して、(Xg,y)と(X1,Y1)より距離差dを算出する。(Xg,y)はいずれも、
図32の前方エッジ点(Xs,Ys)に対応し、(X1,Y1)は
図32の後方エッジ点(Xe,Ye)に対応させ、同様なロジックで距離差dを算出する。
【0143】
まず、ステップS33−4−6において、d<dmであるか否かを判定する。Yesの場合には、ステップS33−4−7において、
yg=y, dm=d(重心候補)
とし、Noの場合とともに、ステップS33−4−8において
y←y+1
とし、ステップS33−4−9において、y>Ymaxを判定する。
【0144】
Noの場合には、ステップS33−4−6に戻り、Yesの場合には、ステップS33−4−10において
Yg=ygとする。
【0145】
一方、ステップS33−4−11において、Swは走査重み(例30)である。これにより、上下方向の動かす範囲を決めて、不要な範囲を動かさないようにする。
Xmin={Xg*(100-Sw)+X1*Sw}/100
Xmax={Xg*(100-Sw)+X2*Sw}/100, x=Xmin
【0146】
ステップS33−4−12において、
X方向に関して、(x,Yg)と(X1,Y1)より距離差dを算出する。(x,Yg)はいずれも、
図32の前方エッジ点(Xs,Ys)に対応し、(X1,Y1)は
図32の後方エッジ点(Xe,Ye)に対応させ、同様なロジックで距離差dを算出する。
【0147】
次いで、ステップS33−4−13において、d<dmを判定する。Noの場合には、ステップS33−4−13に戻り、Yesの場合には、ステップS33−4−17に進み、Xg=xgとすることでXgが求まる。
これにより、
図16(c)に示すように、重心点の補正と決定処理が終了する。
【0148】
次に、
図34は、後極側エッジ点の補正と眼軸の決定処理の流れを示すフローチャート図である(
図17の眼軸の自動設定処理S33)。Pf、Pg’が決まったため、次いで、Pf、Pg’の延長線上に来るようにPbを求める。まず、ステップS35−5−1において、(X1,Y1)-(Xg,Yg)-(X2,Y2)より直線性dの判定処理を行う。ステップS35−5−2において、後極側エッジ点(x2,y2)、初期値x2=X2, y2=Y2、最小判定値dm=d、 x=y=0を設定する。ステップS33−5−3において、ImageM(x,y)と1とを比べる。ImageM(x,y)が1でない場合には、ステップS33−5−8に進み、ImageM(x,y)が1の場合には、ステップS33−5−4に進む。ここで、x、yの値が以下の条件で示される所定の範囲に含まれるか否かを確認する。
左方向:x>{X2*(Sw-1)+Xg}/Sw
右方向:x<{X2*(Sw-1)+Xg}/Sw
上方向:y>{Y2*(Sw-1)+Yg}/Sw
下方向:y<{Y2*(Sw-1)+Yg}/Sw
を満たすか?
を確認する(Sw: 走査重み(例は4))。
【0149】
Noの場合には、ステップS33−5−8に進む。Yesの場合には、ステップS33−5−5において、(X1,Y1)-(Xg,Yg)-(x,y)より直線性dを判定する処理を行う。
【0150】
まず、制約を決めるため、ステップS33−5−6において、d<dmを判定する。Noの場合には、ステップS33−5−8に進む。Yesの場合には、
x2=x, y2=y, dm=d(後極側エッジ点候補)
となる。次いで、ステップS33−5−8において、
x←x+1
とし、ステップS33−5−9において、xとXsとを比較する。ここで、x<Xsの場合には、ステップS33−5−3に戻る。x≧Xsの場合には、
x=0, y←y+1として、ステップS33−5−11においてyとYsとを比較する。y≧Ysの場合には、ステップS33−5−3に戻り、y≧Ysの場合にはステップS33−5−12において、
X2←x2, Y2←y2
として、処理を終了する(End)。これにより、X2、Y2を補正することができる(
図17(b)参照)。
【0151】
図35は、
図34のS33-5-1と、S33-5-5の処理内容の具体的な例である3頂点の直線性の判定処理の流れを示すフローチャート図である(
図17(b)参照)。
図34のS33-5-1における(X1,Y1)は
図35における(xs,ys)に、(Xg,Yg)は
図35における(xm,ym)に、(X2,Y2)は
図35における(xe,ye)に対応し、S33-5-5における(X1,Y1)は
図35における(xs,ys)に、(Xg,Yg)は
図35における(xm,ym)に、(x,y)は
図35における(xe,ye)に対応する。まず、ステップS33−5−1−1において、与えられた3頂点を(xs,ys), (xm,ym), (xe,ye)とする。また、dx=xe-xs, dy=ye-ys、出力判定値d=0とする。
【0152】
ステップS33−5−1−2において、|dx|>|dy|を判定する。Noの場合(上下方向)には、ステップS33−5−1−4に、Yesの場合(左右方向)にはステップS33−5−3に進む。
【0153】
ステップS33−5−1−3において、d=|dy×(xm-1)/dx+ys-ym|により、dを求め、ステップS33−5−1−4において、d=|dx×(ym-1)/dy+xs-xm|によりdを求め、処理を終了する(End:
図17(b)参照))。
ここまでが、眼軸の設定処理である。
【0154】
以降は、手動の調整を行う。
図36は、手動設定エッジ点の輪郭線上への自動補正処理(S35−3)を示すフローチャート図である。
図18の輪郭線上の点を見つける処理である。
【0155】
まず、ステップS35−3−1において、
補正対象の前極側エッジ点を(x1,y1)、補正後の前極側エッジ点を(X1,Y1)、重心点を(Xg,Yg)とし、後極側エッジ点(X2,Y2)は固定とする。尚、具体的な説明は省略するが、逆に、前極側エッジ点(X1,Y1)を固定とし、補正対象の後極側エッジ点を(x2,y2)、補正後の後極側エッジ点を(X2,Y2)、重心点を(Xg,Yg)とする方法も同様に実現できる。補正前の前極側エッジ点を用いて眼軸方向の単位ベクトルを以下のように定義する。
L={(x1-X2)
2+ (y1-Y2)
2}
1/2
dx=(x1-X2)/L, dy=(y1-Y2)/L
t=0.5
補正後の前極側エッジ点を(x,y)とし、初期値をx=x1、y=y1とする。
【0156】
ステップS35−3−2において、対象画素(x、y)が輪郭上にあるか否か、即ち、ImageM(x,y)=1であるか否かを判定する。Yesの場合には、ステップS35−3−10に進み、Noの場合には、ステップS35−3−2に進み、
x=dx×t+x1, y=dy×t+y1
と変更する。次いで、ステップS35−3−4において、対象画素(x、y)が輪郭上にあるか否か、即ち、
ImageM(x,y)=1
であるか否かを判定し、Yesの場合にはステップS35−3−10に進み、Noの場合には、ステップS35−3−に進み、
x=-dx×t+x1, y=-dy×t+y1
と変更する。次いで、ステップS35−3−7において、対象画素(x、y)が輪郭上にあるか否か、即ち、ImageM(x,y)=1であるか否かを判定する。Yesの場合には、ステップS35−3−10に進み、Noの場合には、ステップS35−3−8に進み、t←t+0.5とする。次いで、ステップS35−3−9において、
t<L/2であるか否かを判定し、
Noの場合には、ステップS35−3−3に戻り、Yesの場合には、Error(補正不可)となる。ステップS35−3−10においては、
X1=x, Y1=y
Xg=(X1+X2)/2
Yg=(Y1+Y2)/2
として、処理を終了する(End)。これにより、手動設定されたエッジ点の輪郭線上への自動補正処理が行われる。
【0157】
図37は、既に決定された眼軸と直交する方向に90度および−90度エッジ点の追加を行う処理(ステップS38−1、
図19(a)参照)の流れを示すフローチャート図である。まず、ステップS38−1−1において、前極側エッジ点を基点にした後極方向への眼軸上の単位ベクトルを求める。
図36までのXg,Ygは、眼軸の自動設定を行うために導入した眼球の幾何学的な重心であり、
図37、
図38のXo,Yoは、計測用重心であり、人為的に設定した眼軸上の後極点から一定距離離れた値であるため、両者では値がかわってくる(ただし、正常眼ではほぼ一致するように計測用重心を設定する)。眼軸上の単位ベクトルは、
dx=(X2-X1)/L, dy=(Y2-Y1)/L
ただし、L={(X2-X1)
2+ (Y2-Y1)
2}
1/2
とする。
【0158】
ステップS38−1−2において、t=0.5とする。ステップS38−1−3において、計測用重心より上記単位ベクトルの方向に伸ばした点として、
x=-dy×t+X0, y=dx×t+Y0
を定義する。
【0159】
次いで、ステップS38−1−4において、上方向にスキャンし、輪郭線にぶつかる点を求める。対象画素(x、y)が輪郭上にあるか否か、即ち、
x<Xs, y<Ys, ImageM(x,y)=1
を判定し、Noの場合には、ステップS38−1−5において、
t¬t+0.5
とし、ステップS38−1−3に戻る。
【0160】
Yesの場合には、ステップS38−1−6に進み、
Xp9=x, Yp9=y
とする。
ステップS38−1−7において、t=0.5とする。
【0161】
次いで、ステップS38−1−8において、下方向にスキャンし、輪郭線にぶつかる点を求める。
x= -dy×t+X0, y=dx×t+Y0とし、
ステップS38−1−9において、対象画素(x、y)が輪郭上にあるか否か、即ち、
x<Xs, y<Ys, ImageM(x,y)=1であるか否かを判定する。Noの場合には、ステップS38−1−10に進み、t¬t-0.5とした後、ステップS38−1−8に戻る。
【0162】
Yesの場合には、ステップS38−1−11において、
Xm9=x, Ym9=y
とする。
これにより計測用エッジ点を追加することができる。
【0163】
図38は、θ
w度および−θ
w度の計測用エッジ点(±第1の角度)の追加処理の流れを示すフローチャート図である(ステップS38−2、
図19(a)、(c)参照)。ここでは、θ
wが45度の例を示すが、第1の角度は、90度より狭く、後述する第2の角度よりも広い角度である(40度から90度)。
【0164】
まず、ステップS38−2−1(プラス45度の計測用エッジ点)で、θ
w度方向の単位ベクトルを計算する。本実施例では、以下dx、dyは45度方向の単位ベクトルである。
dx={(X2-X0)/L+(Xp9-X0)/Lp}/2
dy={(Y2-Y0)/L+(Yp9-Y0)/Lp}/2
ただし、L={(X2-X0)
2+ (Y2-Y0)
2}
1/2、Lp={(Xp9-X0)
2+ (Yp9-Y0)
2}
1/2である。
【0165】
次いで、ステップS38−2−2で、t=0.5とする。ステップS38−2−3で、計測用重心より上記単位ベクトルの方向に伸ばした点として
x=dx×t+X0, y=dy×t+Y0を定義する。次いで、ステップS38−2−4において、対象画素(x、y)が輪郭上にあるか否か、即ち、x<Xs, y<Ys, ImageM(x,y)=1であるか否かを判定する。ここでNoであれば、ステップS38−2−5において、tに0.5を加算する。Yesの場合には、ステップS38−2−6において、Xp4=x, Yp4=yと計測用エッジ点が求める(End)。
【0166】
また、ステップS38−2−11において(マイナスθ
wの計測用エッジ点)、−θ
w度方向の単位ベクトルを計算する。本実施例では、以下dx、dyは−45度方向の単位ベクトルである。
dx={(X2-X0)/L+(Xm9-X0)/Lm}/2
dy={(Y2-Y0)/L+(Ym9-Y0)/Lm}/2
ただし、L={(X2-X0)
2+ (Y2-Y0)
2}
1/2 、Lm={(Xm9-X0)
2+ (Ym9-Y0)
2}
1/2である。
次いで、ステップS38−2−12で、t=0.5とする。ステップS38−2−13で、計測用重心より上記単位ベクトルの方向に伸ばした点として
x=dx×t+X0, y=dy×t+Y0を定義する。次いで、ステップS38−2−14において、対象画素(x、y)が輪郭上にあるか否か、即ち、x<Xs, y<Ys, ImageM(x,y)=1であるか否かを判定する。ここでNoであれば、ステップS38−2−15において、tに0.5を加算する。Yesの場合には、ステップS38−2−16において、Xmp4=x, Ym4=yと計測用エッジ点が求める(End)。
以上により、θ
w度及び−θ
w度の計測用エッジ点を追加することができる。
【0167】
図39は、θ
n度および−θ
n度の計測用エッジ点(±第2の角度)、の追加処理の流れを示すフローチャート図である(ステップS38−3、
図19(a)、(d)参照)。ここでは、第2の角度が22.5度の例を示すが、第2の角度は、上記第1の角度よりも狭い角度である(10度から40度)。
【0168】
ステップS38−3−1において、以下のように、+22.5度方向の単位ベクトルを定義する。
dx={(X2-X0)/L+(Xp4-X0)/Lp}/2
dy={(Y2-Y0)/L+(Yp4-Y0)/Lp}/2
ただし、L={(X2-X0)
2+ (Y2-Y0)
2}
1/2 、Lm={(Xm4-X0)
2+ (Ym4-Y0)
2}
1/2である。
【0169】
次いで、ステップS38−3−2で、t=0.5とする。ステップS38−3−3で、計測用重心より上記単位ベクトルの方向に伸ばした点として
x=dx×t+X0, y=dy×t+Y0を定義する。次いで、ステップS38−3−4において、対象画素(x、y)が輪郭上にあるか否か、即ち、x<Xs, y<Ys, ImageM(x,y)=1であるか否かを判定する。ここでNoであれば、ステップS38−3−5において、tに0.5を加算する。Yesの場合には、ステップS38−3−6において、Xp2=x, Yp2=yとエッジ点が求める(End)。
【0170】
また、ステップS38−3−11において、以下のように、−22.5度方向の単位ベクトルを定義する。
dx={(X2-X0)/L+(Xm4-X0)/Lm}/2
dy={(Y2-Y0)/L+(Ym4-Y0)/Lm}/2
ただし、L={(X2-X0)
2+ (Y2-Y0)
2}
1/2 、Lm={(Xm4-X0)
2+ (Ym4-Y0)
2}
1/2である。
【0171】
次いで、ステップS38−3−12で、t=0.5とする。ステップS38−3−13で、計測用重心より上記単位ベクトルの方向に伸ばした点として
x=dx×t+X0, y=dy×t+Y0を定義する。次いで、ステップS38−3−14において、対象画素(x、y)が輪郭上にあるか否か、即ち、x<Xs, y<Ys, ImageM(x,y)=1であるか否かを判定する。ここでNoであれば、ステップS38−3−15において、tに0.5を加算する。Yesの場合には、ステップS38−3−16において、Xm2=x, Ym2=yと計測用エッジ点が求める(End)。
【0172】
次に、後極部における円弧面積の算出方法を説明する。面積比率は、−θ
w度から+θ
w度の範囲の広領域での算出と、−θ
n度から+θ
n度の範囲の狭領域での算出の2段階で行われるが、始めに、広領域での算出方法について説明する。
【0173】
図40(a)は左方向投影画像の場合の図であり、
図40(b)は、求めた広領域での面積値を基に比率を算出する方法を示す表である。
【0175】
図41は、
図40で説明した後極部における円弧面積の算出処理例を示すフローチャート図である。まず、ステップS40c−1において、上部面積Ap=0、v=0と初期化し、ステップS40c−2でu=0と初期化する。次いで、ステップS40c−3において、
x=(Xp4-X0)×u/Lup+(X2-X0)×v/Lv
y=(Yp4-Y0)×u/Lup+(Y2-Y0)×v/Lv
の式により、+45度方向と0度方向に囲まれた領域内のxとyを求める。
【0176】
ステップS40c−4において、(x、y)が面積の算出対象領域内にあるか否か、即ち、ImageM(x,y):0を判定する。
0でない場合には、同一画素が既に重複してカウントされていないかをBuff(x,y):0で確認し、Buff(x,y)=0の場合のみBuff(x,y)=1、Ap¬Ap+1を代入して、ステップS40c−7に進み、u¬u+0.5とする。ステップS40c−8で、uとLupの大小を比較し、u<Lupであれば、ステップS40c−3に戻り、u
3Lupであれば、ステップS40c−9に進む。vについて判定をし、その結果、u
3Lupであれば、上部面積Apが決定される。同様に処理によりS40c−11以降の処理でAmについて求める。Amの算出において、Apの算出と異なる点は、S40c−15、S40c−16の処理で、Apの算出において同一画素が既に重複してカウントされている場合は、ApとAmの双方に重複する境界領域であることを示すため、Am側で二重カウントを抑止するだけでなく、S40c−16の処理で、Ap側に既にカウントされた当該1画素を取り消す処理を行う。このようにして、
図20に示す後極部における円弧面積を求めることができる。
【0177】
続いて狭領域での算出方法について説明する。
図42(a)は、後極部における円弧面積の算出方法(狭領域)を示す図である。この図は、左方向投影画像の場合の例である。上記で求めたXp2、Yp2と、Xm2、Ym2を用いて算出を行う。
図42(b)に示すように、左方向画像、右方向画像、上方向画像、下方向画像におけるE/N比率、T/B比率を求めることができる。
【0178】
図43は、後極部における円弧面積の算出方法(狭領域)を示すフローチャート図である。前述した広領域と同様に計算できる。単位ベクトルは、上記において定義したものである(数1)。
【0179】
ここで、+22.5度方向、−22.5度方向、0度方向に対して、単位ベクトルUp→=(Xp2-X0,Yp2-0Y)/Lup、Um→=(Xm2-X0,Ym2-0Y)/Lum、V→=(X2-X0,Y2-Y0)/Lvを求める。
ただし、Lup={(Xp2-X0)
2+ (Yp2-Y0)
2}
1/2、Lum={(Xm2-X0)
2+ (Ym2-Y0)
2}
1/2、Lv={(X2-X0)
2+ (Y2-Y0)
2}
1/2
【0180】
輪郭抽出後の投影画像データをImageM(x,y)={0:背景,1:輪郭,2:内部} (x=0,…,Xs; y=0,…,Ys) Xs=Ys=300 [pixel]とし、併せて同サイズの画像バッファBuff(x,y)を定義し、画像バッファの初期値は全て0にする。画像バッファBuff(x,y)は、同じ画素を2回カウントするのを防止する。
【0181】
上部面積をAp2、下部面積をAm2とし、初期値は各々0とする。算出されたAp2とAm2を用いて、面積比率を算出する。
【0182】
まず、ステップS39−1において、Ap2=0, v=0を設定し、ステップS39−2において、u=0とする。v,uは媒介変数である。ステップS39−3において
図20(a)の後極部における左右の上側の円弧面積の算出を以下の式により計算する。+22.5度方向と0度方向に囲まれた領域内のxとyを求める。
x= (Xp2-X0)×u/Lup+ (X2-X0)×v/Lv
y= (Yp2-Y0)×u/Lup+ (Y2-Y0)×v/Lv
【0183】
ステップS39−4で、(x、y)が面積の算出対象領域内にあるか否か、即ち、ImageM(x,y):0であるか否かを計算する。Noの場合には、ステップS39−5で同一画素が既に重複してカウントされていないかをBuff(x,y):0で確認し、0であれば、ステップS39−6でバッファに同じ値Buff(x,y)=1を格納し、左右方向上側の面積Ap2に1を加算する。そして、ステップS39−4でImageM(x,y)=0である場合とともに、ステップS39−8において、uに0.5を加算し、ステップS39−8でuとLupとを比較する。ここで、u<Lupであれば、ステップS39−2に戻り、u
3Lupであれば、ステップS39−9に進み、vに0.5を加算する。そして、ステップS39−10に進み、vとLvとを比較し、v<LvであればステップS39−2に戻り、v
3Lvであれば、ステップS39−11において、Am2=0、v=0とし、ステップS39−12でu=0とする。これで、Ap2が求まる。
【0184】
次いで、ステップS39−13において、−22.5度方向と0度方向に囲まれた領域内のxとyを求める。
x= (Xm2-X0)×u/Lum+ (X2-X0) ×v/Lv
y= (Ym2-Y0)×u/Lum+ (Y2-Y0)×v/Lv
により、
図20(a)の後極部における左右の下側の円弧面積の算出を行う。
【0185】
次いで、ステップS39−14において、(x、y)が面積の算出対象領域内にあるか否か、即ち、ImageM(x,y)が0か否かを判断し、ImageM(x,y)>0であれば、ステップS39−15に進み、同一画素が既に重複してカウントされていないかをBuff(x,y):0で確認する。Buff(x,y)が0であれば、ステップS39−17に進み、
Buff(x,y)=2
Am2←Am2+1
とし、
Buff(x,y)が0でなければ、ステップS39−16に進み、
Buff(x,y)=2
Ap2←Ap2-1
とする。これで、上側において既にカウントされる境界部分のカウントを除く。
【0186】
そして、ステップS39−18でuに0.5加算し、ステップS39−19でuとLumとを比較する。u<Lumであれば、ステップS39−12に戻り、u
3Lumであれば、ステップS39−20でvに0.5を加算する。そして、ステップS39−21において、vとLvとを比較し、v<LvであればステップS39−12に戻る。v
3Lvであれば、処理を終了する。これで、Am2が求まる。これにより、
図20の後極部における円弧面積をAp2とAm2として重複しないように画素をカウントして算出することができる。
【0187】
図44は、後極部3エッジ点(尖鋭度)の成す角の算出方法の一例を示す図である。
【0189】
尚、前述の面積比率の算出と異なり、上記なす角の算出は、狭領域の面積に対応する領域のみで行う。
以上で、解析処理のアルゴリズムについての説明を行った。
【0190】
次に、実際に得られる投影画像及び測定結果について説明する。
図45は、解析対象の6方向投影画像例であり、左右、上下、前後の6方向からの投影画像が得られていることがわかる。
図46は、解析における解析パラメータの設定画面の例を示す図である。設定パラメータとしては、二値化しきい値(0〜255の範囲、通常の設定値:25)、削除スポット面積(単位:画素、通常の設定値:200)、探索範囲重み(前極、後極、通常の設定値:16と4)、水晶体エッジの測定範囲(
図15A(2)(3)においてPcを移動させる範囲、通常の設定値:2〜12)、重心探索範囲(
図15A(3)においてPgを移動させる範囲、単位%、通常の設定値:30)、計測の原点(=計測用重心、後極側エッジ点からの距離、通常の設定値:87画素)、対称性算出角度(広領域の面積算出角度範囲、通常の設定値:45度)、尖鋭度算出角度(尖鋭度算出および狭領域の面積算出角度範囲、通常の設定値:22度)、解析眼球が左眼であるか右眼であるか、標準眼軸長上限(単位:画素、通常の設定値:175画素)、左右対称性下限値(%、通常の設定値:90%)、上限値(%、通常の設定値:110%)、上下対称性下限値(%、通常の設定値:90%)、上限値(%、通常の設定値:110%)、後極尖鋭度下限値(通常の設定値:140度)、上限値(通常の設定値:150度)を設定することができるが、一般的には、解析眼球が左眼であるか右眼であるのみを設定すれば良い。
【0191】
図47は、解析結果の一例を示す図である。上記解析処理に基づく解析結果を一画面で見ることができる。例えば、L(左方向投影像)、R(右方向投影像)、T(上方向投影像)、B(下方向投影像)について、眼軸長(単位:画素)、後極尖鋭度(0〜360度)、狭領域面積比率(%)、広領域面積比率(%)、面積比率(T/B、E/N、狭領域または広領域面積比率のいずれかの値、100との差が大きい値)、後極ピーク位置(座標値、画素単位)、左右方向の対称性(耳寄り、左右対称、鼻寄りのいずれかの判定結果)、上下方向の対称性(上寄り、左右対称、下寄りのいずれかの判定結果)、後極尖鋭タイプ(樽型、中間、紡錘型のいずれかの判定結果)、タイプ分類(表1の4桁)が表示されるようになっている。タイプ分類は2000であり、後極尖鋭タイプが2の樽型であり、その他の眼軸長、左右方向の対称性、上下方向の対称性は正常である。この画面より、解析結果と、病態とが一目でわかるようになっている。
【0192】
図48は、
図45に対応する図であり、解析時の補助線設定状況の確認画面の一例を示す図である。
図48においては、上下左右前後の眼球の投影画像において、眼軸について修正を行うための補助線(計測用重心から各種計測用エッジ点を結ぶ直線)を示している。この確認画面において、眼軸を修正し、指示した補助線で再解析を行うことができる。
【0193】
以上は、正常な場合の例であるが、以下に、強度近視の場合の例について示す。
図49は、強度近視の場合の解析対象の6方向投影画像の例を示す図である。
図45に示す画像とは、形状がかなり異なっていることがわかる。
図50は、解析パラメータの設定画面例を示す図であり、この画面は、
図46と同様である。同じ設定において、解析を行った結果の例について
図51を例にして説明する。
図46とは、解析結果がかなり異なっていることがわかる。特に、眼軸長、後極尖鋭度、左右方向の対称性、上下方向の対称性、後極尖鋭度のタイプなどが異なっている。タイプ分類において、表1において、タイプ分類が11であり、眼軸長が異常、左右方向の対称性が鼻寄り(90%未満)であることがわかる。
図52は、解析時の補助線設定状況の確認画面が示される。
図52においては、上下左右前後の眼球の投影画像において、眼軸について修正を行うための補助線を示している。この確認画面において、眼軸を修正し、指示した補助線で再解析を行うことができる。
【0194】
図53は、解析対象の6方向投影画像(軽症)の6方向投影画像の例を示す図である。
図49と比較すると、やや
図45に近い投影画像になっていることがわかる。この場合には、
図54に示すように、左眼を解析対象としている。その結果が、
図55であり、タイプ分類をみると、121であり、眼軸長が異常、左右方向の対称性が耳寄り(110%以上)、上下方向の対称性が下寄り(90%未満)であることがわかる。
【0195】
図56は、解析時の補助線設定状況の確認画面の例を示す図である。
図56に示すように、眼軸自動設定については、画面の平行・垂直方向とはずれており、明らかに不適切であることがわかる。
図57は、解析時の補助線設定状況の確認画面であって、眼軸の修正(この例では手動修正)を付加した様子を示す図である。
図57に示すように、眼軸の補助線は、画面の平行・垂直方向と一致しており、正しく修正されていることが確認できる。
【0196】
図58は、解析パタメータの設定画面であり、例えば
図54に示す設定画面から設定値が変更されていないが、設定値を画面で確認することができる。
【0197】
図59は、修正後の再解析結果の一例を示す図である。
図55と比較して、左右方向の対称性が耳寄りから左右対称に変化しており、後極尖鋭度は中間型から紡錘型に変化しており(正常眼は
図47に示される通り樽型)、タイプ分類は121から1101に変化している。このように、眼軸を変更した後に解析結果を得ることで、正しい値を得ることができる。
【0198】
上記の実施の形態において、添付図面に図示されている構成等については、これらに限定されるものではなく、本発明の効果を発揮する範囲内で適宜変更することが可能である。その他、本発明の目的の範囲を逸脱しない限りにおいて適宜変更して実施することが可能である。上記眼球部MRIの画像処理方法をコンピュータに実行させるためのプログラム、当該プログラムを記録するコンピュータ読み取り可能な記録媒体であっても良い。
【0199】
(まとめ)
本発明によれば、患者に負担をかけずに「強度近視」の早期診断に寄与でき、読影医の主観に依存しない客観性のある診断データを提供することができる。
【0200】
また、安価な汎用パーソナルコンピュータのソフトウェアで実現することができ、GPU(Graphics Processing Unit)など特殊なグラフィックスボードの増設も必要とないため、安価な診断サービスを提供できる。
【0201】
また、画像入力系も新規に眼科専用設備を導入することなく、既存のポピュラーなMRI機器を流用し、放射線を使用しないので被爆の問題が無く、定期的に繰り返し診断を行うことができ、眼科向けのカスタマイズも必要としない。即ち、本願発明は、新規なハードウェア設備の投資をすることなく、安価のシステムを構築することができる。
【0202】
(付記)
本発明は、以下の発明を含む。
(1)眼科診断機器による診断を行う第1のステップと、
前記第1のステップで診断ができない場合に、頭部のMRI撮影及び眼球部位の3次元ボクセル画像を抽出するステップと、
前記眼球部位の3次元ボクセル画像を基に、上下/左右/前後の6方向のいずれかの方向の投影画像データを左右眼球別にレンダリングするステップと、
前記投影画像に対して、画像解析による眼球の形状パラメータである、眼軸長、後極先鋭度、左右対称性、上下対称性、後極突出数の少なくともいずれか1のパラメータに基づいて、強度近視を診断するステップと、
を有することを特徴とする強度近視の診断方法。
(2)前記形状パラメータ毎に、強度近視のタイプの分類処理を行うステップを有することを特徴とする(1)に記載の強度近視の診断方法。
【0203】
このように、一般的な眼科診断で強度近視の診断が確定しない場合に、本実施の形態による、頭部MRI撮影データを用いた眼科疾患の画像解析技術を用いると良い。