Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

measureSharpness

Imatest eSFR チャートを使用した空間周波数応答の測定

説明

sharpnessTable = measureSharpness(chart) は、Imatest® 拡張 eSFR チャート [1] のすべての傾斜したエッジ関心領域 (ROI) での空間周波数応答 (SFR) を測定します。sharpnessTable には、応答が初期値およびピーク値の 50% に低下する各 ROI の周波数が含まれます。

sharpnessTable = measureSharpness(chart,Name,Value) は、追加のパラメーターを指定して、指定されたすべての傾斜したエッジ ROI における SFR を測定します。

[sharpnessTable,aggregateSharpnessTable] = measureSharpness(___) は、前の構文のいずれかの入力引数を使用して、垂直および水平 ROI の平均 SFR も返します。

すべて折りたたむ

eSFR チャートのイメージをワークスペースに読み取ります。

I = imread('eSFRTestImage.jpg');

esfrChart オブジェクトを作成し、ROI 注釈を含むチャートを表示します。60 個の傾斜したエッジ ROI には緑色の数字でラベル付けされています。

chart = esfrChart(I);
displayChart(chart,'displayColorROIs',false,...
    'displayGrayROIs',false,'displayRegistrationPoints',false)

ROI 25 ~ 28 のエッジの鮮鋭度を測定し、測定値を sharpnessTable で返します。名前と値のペアの引数 'percentResponse' を指定して MTF70 および MTF30 の測定値を含めます。

sharpnessTable = measureSharpness(chart,'ROIIndex',25:28,'PercentResponse',[70 30])
sharpnessTable=4×9 table
    ROI    slopeAngle    confidenceFlag        SFR           comment                          MTF70                                           MTF70P                                        MTF30                                       MTF30P                 
    ___    __________    ______________    ____________    ____________    ____________________________________________    ____________________________________________    ________________________________________    ________________________________________

    25       4.2391          true          {88x5 table}    {0x0 double}    0.060224    0.058884    0.051757    0.058482    0.060224    0.058884    0.051757    0.058482    0.10732    0.11267    0.11185    0.11178    0.10732    0.11267    0.11185    0.11178
    26       5.0254          true          {88x5 table}    {0x0 double}     0.18561     0.18597     0.18667     0.18597     0.18561     0.18597     0.18667     0.18597    0.26028    0.26236    0.26224    0.26241    0.26028    0.26236    0.26224    0.26241
    27       4.7131          true          {88x5 table}    {0x0 double}    0.070042    0.069599    0.066239     0.06951    0.070042    0.069599    0.066239     0.06951     0.2169    0.21863    0.22086    0.21904     0.2169    0.21863    0.22086    0.21904
    28       4.8996          true          {88x5 table}    {0x0 double}     0.19485     0.20418     0.19669     0.20168     0.19485     0.20418     0.19658     0.20168    0.26447    0.27531    0.26004    0.27188    0.26447    0.27531    0.25998    0.27188

ROI 28 に対応する、鮮鋭度テーブルの 4 番目の行を選択します。ROI の SFR プロットを表示します。

idx = 4;
plotSFR(sharpnessTable(idx,:))

ROI の MTF70 および MTF30 測定値を出力します。測定値をプロットと比較します。

赤および青のカラー チャネルの MTF70 測定値は 0.2 よりわずかに小さくなり、緑および輝度のチャネルの MTF70 測定値は 0.2 よりわずかに大きくなります。これらの測定値は、ピクセルあたり 0.2 ライン ペア前後の空間周波数で 0.7 の SFR 値が生じるような SFR プロットの目視検査と一致します。

mtf70 = sharpnessTable.MTF70(idx,:)
mtf70 = 1×4

    0.1949    0.2042    0.1967    0.2017

青のチャネルの MTF30 測定値は、他のカラー チャネルの MTF30 測定値よりも顕著に小さくなります。この測定値は、青のチャネルの SFR 曲線が他のチャネルよりも迅速に低下するような SFR プロットの目視検査と一致します。

mtf30 = sharpnessTable.MTF30(idx,:)
mtf30 = 1×4

    0.2645    0.2753    0.2600    0.2719

入力引数

すべて折りたたむ

eSFR チャート。esfrChart オブジェクトとして指定します。

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: measureSharpness(myChart,'ROIIndex',2) は、ROI 2 の鮮鋭度のみを測定します。

測定に含める ROI インデックス。'ROIIndex' および範囲 [1, 60] の整数スカラーまたは整数ベクトルから構成されるコンマ区切りのペアとして指定します。インデックスは、displayChart で表示された ROI 番号と一致します。

メモ

measureSharpness は、'ROIIndex''ROIOrientation' によって指定された ROI の交点を使用します。

例: 29:32

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

ROI の方向。'ROIOrientation''both''vertical'、または 'horizontal' から構成されるコンマ区切りのペアとして指定します。関数 measureSharpness は、ROI について指定された方向でのみ測定を実行します。

メモ

measureSharpness は、'ROIIndex''ROIOrientation' によって指定された ROI の交点を使用します。

例: 'vertical'

データ型: char | string

対応する空間周波数を報告する周波数応答の値。'PercentResponse' と範囲 [1, 100] の整数スカラーまたは整数ベクトルから構成されるコンマ区切りのペアとして指定します。

PercentResponse の各値は、2 つの列を sharpnessTableaggregateSharpnessTable 出力引数に追加します。列は、初期値とピーク値の指定されたパーセントまで SFR が低下する周波数を示します。たとえば、PercentResponse の値が 50 の場合、両方の出力テーブルには MTF50 列と MTF50P 列が含まれます。これらの列は、初期値とピーク値のそれぞれ 50% まで SFR が低下する周波数を示します。

例: 30

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string

出力引数

すべて折りたたむ

エッジの SFR 測定値。m 行 n 列のテーブルとして返されます。m は、サンプリングされた ROI の数です。n は PercentResponse に基づいて値を変更します。最初の 5 列は常に存在し、以下の変数を表します。

変数説明
ROIサンプリングされた ROI のインデックス。ROI の値は範囲 [1, 60] の整数です。
slopeAngle傾斜したエッジと純粋な垂直方向または水平方向の間の角度。ROI の方向によって異なります。角度は度単位で測定され、double 型のスカラーとして返されます。
confidenceFlag

鮮鋭度の測定が信頼できるかどうかを示す boolean フラグ。測定が信頼できる場合、confidenceFlagtrue です。以下の条件のために測定値が信頼できない場合、confidenceFlagfalse です。

  • slopeAngle が 3.5 度未満であるか 15 度を超えます。

  • ROI 内のコントラストが 20% 未満です。

傾斜したエッジの ROI のコントラストは、100 * (IHigh - ILow)/(IHigh + ILow) として定義されます。ここで、IHighILow は、エッジ全体の高強度および低強度領域の推定平均強度です。コントラストは、赤のチャネルのみについて計算されます。

SFR

ROI におけるエッジの空間周波数応答。SFR は f 行 5 列の table です。5 つの列は、周波数値と、その周波数に対応する赤、緑、青、および輝度値を表します。f は MTF の周波数サンプルの数です。

輝度 (Y) は、以下の式に基づいて、赤 (R)、緑 (G)、青 (B) チャネルを線形結合したものです。

Y = 0.213R + 0.715G + 0.072B

commentconfidenceFlagfalse の場合、comment は測定が信頼できない理由について説明します。confidenceFlagtrue の場合、comment は空のベクトル [] です。

PercentResponse の各値は、初期値とピーク値の指定されたパーセントまで SFR が低下する周波数を示す 2 つの列を追加します。列の各エントリの形式は、1 行 4 列のベクトルです。4 つの要素は、赤、緑、青、および輝度チャネルにそれぞれ対応しています。

垂直方向および水平方向エッジの平均 SFR 測定値。1 行または 2 行のテーブルとして返されます。サンプリングされたすべての ROI の方向が同じ場合、aggregateSharpnessTable は 1 行が含まれます。サンプリングされた ROI の方向が混在している場合、2 行が含まれます。aggregateSharpnessTable は、sharpnessTable よりも 3 列少なくなります。

aggregateSharpnessTable の最初の 2 つの列は常に存在し、以下の変数を表します。

変数説明
Orientation平均化された SFR の方向。Orientation の値は、'horizontal' または 'vertical' のいずれかです。
SFR

含まれる ROI のすべてのエッジの平均空間周波数応答。方向は Orientation によって指定します。

SFR は s 行 5 列のテーブルです。5 つの列は、周波数値と、その周波数に対応する赤、緑、青、および輝度の平均値を表します。s は MTF の周波数サンプルの数です。

輝度 (Y) は、以下の式に基づいて、赤 (R)、緑 (G)、青 (B) チャネルを線形結合して計算されます。

Y = 0.213R + 0.715G + 0.072B

PercentResponse の各値は、初期値とピーク値の指定されたパーセントまで SFR が低下する周波数を示す 2 つの列を追加します。列の各エントリの形式は、1 行 4 列のベクトルです。4 つの要素は、赤、緑、青、および輝度チャネルにそれぞれ対応しており、同じ方向のすべてのサンプリングされた ROI の平均です。

ヒント

  • 適切に配向されたチャート上の傾斜したエッジは、水平方向または垂直方向から 5 度の角度になります。エッジの方向が 5 度から大幅に外れると、鮮鋭度の測定値は正確ではありません。

  • 鮮鋭度は、撮像領域の中心に向かって高く、周辺に向かって低くなります。水平方向の鮮鋭度は、通常、垂直方向の鮮鋭度よりも高くなります。

アルゴリズム

SFR 測定のアルゴリズムは、Peter Burns の研究に基づいています[2][3]。まず、measureSharpness が、ROI 内の各 "走査線"、またはエッジに垂直なピクセルの行または列のエッジの位置をサブピクセル解像度で決定します。たとえば、ピクセルの各行は、垂直に近いエッジの走査線です。次に、measureSharpness が走査線の位置を合わせて平均化し、オーバーサンプリングされたエッジの強度プロファイルを作成します。この関数は、強度プロファイルの微分を取得し、ウィンドウ処理関数を適用します。返される SFR 測定値は、ウィンドウ処理された微分係数をフーリエ変換した絶対値です。

参照

[2] Burns, Peter. "Slanted-Edge MTF for Digital Camera and Scanner Analysis." Society for Imaging Science and Technology; Proceedings of the Image Processing, Image Quality, Image Capture Systems Conference. Portland, Oregon, March 2000, pp. 135–138.

[3] Burns, Peter. "sfrmat3: SFR evaluation for digital cameras and scanners." URL: http://losburns.com/imaging/software/SFRedge/sfrmat3_post/index.html.

R2017b で導入