精密実寸表示機能の概要とトラブルの対処

本記事は、VL-6xx系の精密実寸表示が正しく機能しない場合の対策について説明します。

実寸表示とは

実寸表示とは、ディスプレイ上で映し出される画像のサイズを、被写体と同じ大きさで表示する機能です。特に外科手術の分野では精度の高いオペを行うために必須ですが、当社ではそれ以外にも診察室におけるプレゼンにおいて、レントゲンと患者さんのサイズが近いほど違和感のない説明ができるものと考え、重要視しています。

実寸表示するには

2Dビューワーで右クリックした時に Actual size を選択します。

これを選択すると画面の左と下に表示されているメモリが正確に1cmになっていれば正解です。


OsiriX (最後のバージョンであるVer.5.9)でもこの"Actual size"、実寸表示機能は備わっていましたが、その後の環境の変化により以下のような問題が露呈しました。

そこでVLでは現場ごとの誤差を補正する機能をつけることにしました。

設定方法

priXmから「設定」→「OsiriX動作設定」とすると実寸表示のMagfactorを指定できます

※eVIDENSの場合はpriXmの画面は白地です


これで補正率を設定してください。

注意点

精密実寸表示はOsiriX VL6系とpriXmの対応バージョンがインストールされていないと設定することができません。

保守先ユーザーでVL-5xxから6xxへのアップグレードを行なっている場合、priXmのアップグレードも行わないと設定が反映されません。これは御指摘をいただきしたい修正します。

以下、オープンソース規定に基づく開示内容です。

精密実寸表示(機能番号4840)

VL6系ではマグファクタ(magfactor)という値を必ず掛け算してスケールが決定されています。

修正箇所: DCMView.m realSize

if( fabs( (f.width/r.size.width) - (f.height/r.size.height)) < 0.01) {

NSDictionary *viewerDict = [NSDictionary dictionaryWithContentsOfFile:@"/var/tmp/prixm/osirix/viewercontrol.xml"];
float hosei = [[[viewerDict valueForKey:@"ScaleFactor_Actual"] retain] floatValue];
if ( hosei ) {
[self setScaleValue: curDCM.pixelSpacingX / (f.width/r.size.width) * 2.0 * hosei ];
} else {
[self setScaleValue: curDCM.pixelSpacingX / (f.width/r.size.width) * 2.0 ];
}
}

特定のアプリケーションに利するコードであるため、Githubの本家ソースにはcommitしていません。

ソースコードに書かれている通り、この機能はviewercontrol.xmlという設定ファイルを読み込んでmagfactorが設定されていた場合に限り機能します。

priXm APIによる設定方法

レセコンなどからリモートAPIによる設定を行うこともできます。

以下のように実施します(例として1.02を設定する場合)

http://prixm.local:9999/prefs/2dviewer.meme?magfactor=1.02

手動で設定する方法

好ましくはありませんが、priXmがアップデートできない状況の場合、テキストエディタで以下のようなファイルを作成して、/var/tmp/prixm/osirix/viewercontrol.xmlに保存します。0.48とある所が倍率です。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>ScaleFactor_Actual</key>

<real>0.48</real>

</dict>

</plist>