Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

measureSharpness

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

説明

sharpnessTable = measureSharpness(chart) は、Imatest® eSFR チャート [1] のすべての傾斜したエッジ関心領域 (ROI) における空間周波数応答 (SFR) を測定します。返された鮮鋭度テーブルには、応答が初期値およびピーク値の 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)

Figure eSFR test chart contains an axes object. The axes object contains 61 objects of type image, text.

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.2268          true          {85x5 table}    {0x0 double}    0.061637    0.059828    0.053096    0.059827    0.061637    0.059828    0.053096    0.059827      0.107     0.1118    0.11037    0.11082      0.107     0.1118    0.11037    0.11082
    26       5.0814          true          {85x5 table}    {0x0 double}     0.18553     0.18604     0.18528     0.18562     0.18553     0.18604     0.18528     0.18562    0.26282    0.26497    0.26211    0.26385    0.26282    0.26497    0.26211    0.26385
    27       4.7787          true          {85x5 table}    {0x0 double}    0.069499     0.06935    0.063808     0.06899    0.069499     0.06935    0.063808     0.06899    0.21579    0.21794    0.21785    0.21775    0.21579    0.21794    0.21785    0.21775
    28       4.7966          true          {85x5 table}    {0x0 double}     0.19057     0.20361     0.19589     0.20006     0.19057     0.20341     0.19565     0.20006    0.26185    0.27258    0.26126    0.26972    0.26185    0.27241    0.26118    0.26972

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

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

Figure SFR Plots for ROI 28 contains an axes object. The axes object with title ROI 28, xlabel Spatial Frequency (Line pairs per pixel), ylabel SFR (Spatial Frequency Response) contains 8 objects of type line. These objects represent Red Channel, Green Channel, Blue Channel, Luminance Channel, Red Channel Beyond Nyquist, Green Channel Beyond Nyquist, Blue Channel Beyond Nyquist, Luminance Channel Beyond Nyquist.

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

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

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

    0.1906    0.2036    0.1959    0.2001

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

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

    0.2619    0.2726    0.2613    0.2697

入力引数

すべて折りたたむ

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

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: '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 で導入