広角レンズでは小さいものに寄って撮れ、望遠レンズでは大きいものを引いて撮れ、というお話。
被写体サイズ率という謎の指標を導入する。なんてことはない、フレーム(撮影範囲)に対する被写体のサイズの比率である。


で、これは被写体のサイズに関わらず、ざっくり20%~40%くらいで撮ることが多いと仮定する。そしてそのとき、背景をぼかしたいと考えるとする。私なら考える。そのとき十分なボケが得られる条件は何か?を考えた。
なお、本記事では背景をぼかして撮ることだけを考えているので、それ以外のケースは対象外である。
ということでいつもの数値実験。仮に錯乱円の径はセンサー対角長の1.5%あれば、つまりセンサーサイズはFFなら錯乱円の径が0.65mm以上あれば十分なボケ量だとする。なお、ぼかす背景は被写体の10m後方だと仮定する。
この数字はそこそこ甘めで、大きくぼかしがちな人物ポートレートとかだともっと欲しい気がする。なので、今回はこの2倍の1.3mmの錯乱円までがちょうどいいボケ量だと仮定する。


焦点距離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のレンジファインダーでは寄りきれない。
焦点距離50mm

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

85mm F1.4なら被写体サイズは26~44cmが、85mm F2なら19~34cmがいい。
まとめ
なおサイズ率40%(つまりもっとアップ)で撮りたい場合は、上記の撮影距離のまま、サイズが2倍のものを被写体とすればいいだけ。簡単。なので、下表はサイズの上限は2倍にした。
焦点距離 [mm] | 想定F値 | 被写体サイズ [cm] | 撮影距離 [m] |
---|---|---|---|
28 | 2.8 | 5.4~21.2 | 0.2~0.4 |
28 | 2.0 | 7.5~29.4 | 0.3~0.6 |
50 | 2.0 | 12.7~47.6 | 0.9~1.6 |
50 | 1.4 | 17.6~64.6 | 1.2~2.2 |
85 | 2.0 | 19.2~67.4 | 2.3~4.0 |
85 | 1.4 | 25.7~88.4 | 3.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



