被写体のサイズと焦点距離

 広角レンズでは小さいものに寄って撮れ、望遠レンズでは大きいものを引いて撮れ、というお話。

 被写体サイズ率という謎の指標を導入する。なんてことはない、フレーム(撮影範囲)に対する被写体のサイズの比率である。

被写体サイズ率20%
被写体サイズ率40%

 で、これは被写体のサイズに関わらず、ざっくり20%~40%くらいで撮ることが多いと仮定する。そしてそのとき、背景をぼかしたいと考えるとする。私なら考える。そのとき十分なボケが得られる条件は何か?を考えた。

 なお、本記事では背景をぼかして撮ることだけを考えているので、それ以外のケースは対象外である。


 ということでいつもの数値実験。仮に錯乱円の径はセンサー対角長の1.5%あれば、つまりセンサーサイズはFFなら錯乱円の径が0.65mm以上あれば十分なボケ量だとする。なお、ぼかす背景は被写体の10m後方だと仮定する。

 この数字はそこそこ甘めで、大きくぼかしがちな人物ポートレートとかだともっと欲しい気がする。なので、今回はこの2倍の1.3mmの錯乱円までがちょうどいいボケ量だと仮定する。

50mm F1.4, 撮影距離1.65m(10m先での錯乱円は0.92mm)
50mm F1.4, 撮影距離1.00m(10m先での錯乱円は1.6mm)

 焦点距離28, 50, 85mmレンズで、被写体サイズ率が20%としたときの被写体サイズと、F値と、錯乱円径の関係をプロット。このオレンジのエリアがいい感じにボケている領域だと言える。

 なお、撮影距離はプロットしていないが以下で計算できる。
  撮影距離 = 被写体サイズ ÷ サイズ率 × 焦点距離 ÷ センサー幅
 サイズ率以外は単位を統一(全部mmなど)すること。


 単位がmmの物理量ばかりでとても見にくいので、ここからは焦点距離はmm、被写体のサイズはcm、撮影距離はmで表すこととする。

焦点距離28mm

 グラフがガタガタなのは手抜きのため。もっとサンプル点を細かくすれば滑らかにできるが、面倒なのでやらない。

 28mm F2.8であれば5~10cmの被写体がいい。サイズ5.4cmの被写体をサイズ率20%で撮るには、0.21mまで寄る必要がある。

 28mm F2であれば8~15cmの被写体がいい。サイズ14.7cmでも撮影距離は0.57mであり、最短撮影距離0.7mのレンジファインダーでは寄りきれない。

28mm F2.8

焦点距離50mm

 50mm F1.4なら被写体サイズは18~32cmが、50mm F2なら13~24cmがいい。逆に言えば、これより小さいサイズの被写体に寄って撮る場合は、ボケ過ぎるので絞る必要がある。撮影距離が半分になれば、絞りは2段絞るのがいい。

50mm F1.4

焦点距離85mm

 85mm F1.4なら被写体サイズは26~44cmが、85mm F2なら19~34cmがいい。

56mm F1.2 (FF換算で約85mm F1.8)

まとめ

 なおサイズ率40%(つまりもっとアップ)で撮りたい場合は、上記の撮影距離のまま、サイズが2倍のものを被写体とすればいいだけ。簡単。なので、下表はサイズの上限は2倍にした。

焦点距離 [mm]想定F値被写体サイズ [cm]撮影距離 [m]
282.85.4~21.20.2~0.4
282.07.5~29.40.3~0.6
502.012.7~47.60.9~1.6
501.417.6~64.61.2~2.2
852.019.2~67.42.3~4.0
851.425.7~88.43.0~5.2

 50mmレンズを付けているときは幅13~65cmくらいの被写体を探して撮るのがいい。28mmなら幅5~30cmくらい、85mmなら幅19~88cmくらいの被写体が、フレーム幅の20~40%くらいのサイズになるようにフレーミングすれば、いい感じに背景をぼかせる、ということだ。

 つまり、いい感じに背景をぼかして撮るには、広角なら小さいものに寄って撮る、望遠なら大きいものを引いて撮るのが良いということ。

 もっと単純化するなら撮影距離だけで言ってもいい。28mm F2.8なら0.4m以内、50mm F1.4なら2.2m以内にある被写体を狙うのがいい。ただしこの場合、フレームに入りきるかは知らぬ。


 検討のために適当に作ったVBA関数群。間違っていても知らない。

Function dof(fl, f, d, Optional mode = "", Optional c = 0.00035 * 43.26662)
    ' 被写界深度[mm]を計算する
    ' fl : 焦点距離 [mm]
    ' f  : F値
    ' d  : 被写体までの距離=フォーカス位置(距離) [mm]
    ' mode : "f"なら前方被写界深度、"r"なら後方被写界深度、
    '        それ以外なら前方と後方の和
    ' c  : 許容錯乱円径 [mm]
    Z = c * f * d
    df = d * Z / (fl * fl + Z)
    dr = d * Z / (fl * fl - Z)
    d_total = df + dr
    If mode = "f" Then
        dof = df
    ElseIf mode = "r" Then
        dof = dr
    Else
        dof = d_total
    End If
End Function

Function focus_dist(fl, x)
    ' 全群繰り出し時のフォーカス位置[mm]を計算する
    ' fl : 焦点距離 [mm]
    ' x : 無限遠からのヘリコイド繰り出し量 [mm]
    b = fl + x
    a = 1 / (1 / fl - 1 / b)
    focus_dist = a + b
End Function

Function conf_circle(fl, f, d, x)
    ' 被写体の背景の錯乱円の径[mm]を計算する
    ' fl : 焦点距離 [mm]
    ' f  : F値
    ' d  : 被写体までの距離=フォーカス位置(距離) [mm]
    ' x  : フォーカス位置からボケを計算したい背景までの距離 [mm]
    conf_circle = x * fl * fl / (f * d * (d + x))
End Function

Function focus_area_w(fl, d, Optional w = 36)
    ' フォーカス位置で写る範囲(幅)[mm]を計算する
    ' fl : 焦点距離 [mm]
    ' d  : フォーカス位置(距離) [mm]
    ' w  : センサー幅 [mm]
    focus_area_w = d * w / fl
End Function

Function focus_area_h(fl, d, Optional h = 24)
    ' フォーカス位置で写る範囲(幅)[mm]を計算する
    ' fl : 焦点距離 [mm]
    ' d  : フォーカス位置(距離) [mm]
    ' h  : センサー高さ [mm]
    focus_area_h = d * h / fl
End Function
撮影範囲(再掲)
被写界深度(再掲)
レンズ繰り出し時のフォーカス位置(再掲)
錯乱円の径(再掲)