「標準レンズ」について
「標準レンズ」の何が標準なのか、ここ数日考えてひとまず自分なりに結論を出したのでまとめてメモ
結論
一般的な鑑賞環境において、パースが自然、すなわち肉眼で見るパースとほぼ同じであること
前提
写真のパースは、一般的に説明するときには、焦点距離によって変化して、広角では遠近感が強調され、望遠では圧縮される、とされているが、厳密にはこれだけだと説明が不十分である。焦点距離の違いは、単に画像をどの大きさで (すなわち画角で) トリミングするかの違いでしかない。これは、無限の解像度を持つカメラと、無限の解像度を持ち収差のない超広角レンズさえあれば、後処理でトリミングすればいいだけなので、それ以上長い焦点距離のレンズなどいらないということを意味する。本質的に、レンズはパースを変化させない。
ではどこでパースの変化が起きるかというと、それは鑑賞環境、つまり出力サイズ (プリントサイズ) と、鑑賞者までの距離になってくる。もし広角レンズ、例えば17mmで撮影したとしても、2m 幅でそれをプリントしたものを、1m の距離から見れば、肉眼で見た場合のパースと同じになる。あくまで、あの強調されたパースは狭い出力サイズに無理矢理画像をつめこむから生まれている。カメラのファインダーの像の大きさというのも固定なので、レンズを変えるとパースが変化したように見える。
疑問
レンズ自体にパースの変化がないのに「標準レンズはパースが自然」というのはおかしい。どんな画角であろうと、出力サイズと鑑賞位置が「正しい」ければ、パースは自然になるはずである。
であるなら、出力サイズと鑑賞位置が暗黙のうちに決定されているのではないか
検証
とりあえずイメージできるように焦点距離から画角を求められるようにする。 Wikipediaによると、焦点距離からの画角は以下で求められる (JavaScript の式になおしてある)
// `size` (mm) サイズの素子で、焦点距離が `f` (mm) のときの画角 (radian)
function angleOfView (size, f) {
return 2 * Math.atan(size / (2 * f));
} 例えば、35mm フルサイズで 50mm の焦点距離を持つレンズを使った場合、水平画角は angleOfView(36, 50) で求められる (JS の三角関数との兼ね合いで表示時以外はラジアンで表現) この場合だと、39.6度ぐらいになる。
// 一応ラジアン変換
function radiansToDegree (radian) {
return radian * (180 / Math.PI);
}
function degreeToRadians (degree) {
return degree * (Math.PI / 180);
} この状態で撮影した写真を、同じ画角だけ占有するように出力サイズと鑑賞位置を調整するようにすれば、パースは崩れないことになる。
なので、以下のような関数を考える (鑑賞者が点・占有物を面にしたとき、面側に直角がくる直角三角形が2つ並ぶイメージ)。
// `distance` (mm) 離れた距離にある `size` (mm) のものが視野を占有する画角 (radian)
function angleByDistanceAndSize (distance, size) {
var half = size / 2;
return Math.atan(half / distance) * 2;
} これを使うと、「30cm の距離で A4用紙を見る場合に占有される水平画角」は angleByDistanceAndSize(300, 297) で求められる (52度ぐらい)
52度の画角を持つレンズの焦点距離を求めると、「30cm の距離の A4用紙にプリントした場合にパースがぴったりになる焦点距離」が求められるはずなので、以下のような関数を定義した (angleOfView の逆関数)
// `size` (mm) サイズの素子で、画角が `angle` (radian) のときの焦点距離 (mm)
function angleToFocalLength (size, angle) {
var a = Math.tan(angle / 2);
return size / a / 2;
} angleToFocalLength(36, angleByDistanceAndSize(300, 297)) とすれば、「30cm の距離の A4用紙にプリントした場合にパースがぴったりになる焦点距離」として 36mm が求められる。すなわちこの鑑賞環境の場合、36mm で撮影した写真だと、パースが最も自然になる。
同じように、一般的な鑑賞環境を想像して、最も自然なパースになる焦点距離がいくつかを求めてみる。
// 20cm で L版 (スナップ写真を自宅で見る)
angleToFocalLength(36, angleByDistanceAndSize(200, 127)) //=> 56mm
// 30cm で A4 (ちょっと大きめに出力したものを手元で見る)
angleToFocalLength(36, angleByDistanceAndSize(300, 297)) //=> 36mm
// 50cm で A3 (ちょっと大きめに出力したものを手元で見る)
angleToFocalLength(36, angleByDistanceAndSize(500, 420)) //=> 42mm
// 100cm で A3 (写真展みたいなところでちょっと離れて見る)
angleToFocalLength(36, angleByDistanceAndSize(1000, 420)) //=> 85mm
// 倍率0.71倍のファインダー
50 / 0.71 //=> 70mm
( angleToFocalLength(36, angleByDistanceAndSize(x, sizeByDistanceAndAngle(x, angleOfView(36, 50)) * 0.71)) ) と、だいたい標準と呼ばれるような焦点距離におさまってる。つまり、このような鑑賞環境においては「標準レンズ」と呼ばれるものを使っておくと、パースが自然に見える。
ちなみに魚眼レンズは、画像の作りかたが人間の眼とは違うので上記のルールには全くあてはまらない。angleOfView の式もあてはまらない (もっと広く写るように設計されてる)
関連エントリー
- 写真のプリント画質と画角・人間の視力 「標準レンズ」について では、理想的なカメラと理想的なレンズを仮定して考えていたので、以下の点がひっかかっていた: 超広角で撮影したとして、...
- ディスプレイのppiはどれぐらい必要か? 疑問:ディスプレイサイズが大きくなるほど鑑賞距離も長くなっていき、ppi もそれほど必要なくなるはずだが、実際のところどれぐらいの ppi ...
- 手ぶれを無視できるシャッタースピード 手ブレについて考えたことがあるけど、ずばり焦点距離が x のとき、特定カメラの性能で 1px 以内に手ぶれが収まるシャッタースピードを求める...
- Angular JS でビューを伴う Service ってどう書けばいいんですか 続きをかきました。 [tech] Angular JS で View を伴う Service 的なことをしたいとき、あるいは Directi...
- Manchester Encoding を JS で WebAudio での通信用に使おうと思って書いていたけど、やる気が失せてしまった。WebAudio 非依存部分だけ習作的に書いた。思ったよ...
✖
✖
gerry++
✖
土曜日、南武線鹿島田駅から、
を辿り、日吉駅まで散歩をした。
鹿島田大神社は地図で見たとき近くに幼稚園があるから、よくある併設された感じなのかなと思って行ってみたら、幼稚園の園庭のど真ん中に神社がある (境内と園庭を共有している) 感じだったのでびっくりした。
天照皇大神はちょっとした山の上にあった。動物公園が整備されていて、鳥とかがケージで飼われていた。
5.5km ぐらい歩いたようだ。思いのほか炎天下で辛かった。

関連エントリー
- 東京赤坂 日枝神社 ログイン - Google アカウント あんまり下調べせずに、別表神社だからと行ったら、山王鳥居が都会の中でいきなりそびえ立っていてびっくり...
- 大洗町 鹿島神宮だけだと1日過ごせなそうなので、さらに足を伸ばして大洗まで行った。 大洗鹿島線で鹿島神宮駅から大洗まで約1時間。ディーゼルのようで、...
- ✖ 月曜日は大神神社 (おおみわ神社) へ。竹田から天理経由で三輪。遠かった。 大神神社は大和国一宮、拝殿だけで本殿はない。山自体が御神体 (神...
- ✖ 土曜日は自分で作った京都神社ラリーを一日でどんぐらい回れるかと思っていろんな神社に行きまくった。 下御霊神社 (ラリースポットではない) →...
- ✖ 出雲大神宮に行こうと思い電車で行ってきた。千代川駅までいってから歩くのだけど結構駅から遠かった。千代川のあたりは米農家が多くてすごく雰囲気が...
gerry++
gerry++
gerry++
大腸内視鏡
いろいろあって9月3日に大腸内視鏡検査をうけた。数日前から消化よさげなものを食べるようにと言われておかゆとか餅とかを食べてた。
- 前日の昼食・夕食は決められた検査食
- 夜は20時から下剤を時間差で3種類
- 23時ぐらいから下痢気味に
- とりあえず寝る
- 4時ごろに腹がごろごろ言うので起床してトイレ
- 5時ごろから1.8Lの下剤(マグコロールとかいうの)を1時間半ぐらいで飲む
- 前日飲んだ下剤の1つもこれだったけど、濃度が違うようでこちらのは飲みやすかった
- 8時ぐらいまでトイレ
- 9時半ぐらいから検査
検査時、特に理由がないなら鎮静剤を使ったほうがいい (次やるときに「あんな検査二度とやりたくない」と思わないためには鎮静剤つかったほうがいい) と言われたので使ってもらった。
じゃあ入れますよ的なことは特に言われず、いつはじまるんだろうと思ってたら急にちょっと慌ただしくなって、ん?と思ったらすぐ入れはじめてて、マジかと思った。
しかしそれにしても結構な辛さだった。空気を入れられるのが思いのほかつらく、尻に力が入りすぎ空気が抜けなくて痛いみたいなことが何度かあった…… 検査時あんまり鎮静剤が効いてる感じがしなかったけど、立つとふらつく感じだったので効いてたんだろうと思う。効いててあの辛さだとすると、本来かなり辛い気がする。
生検が2箇所あっただけで、ほかはなかったので当日支払ったのは3割負担で1万円ぐらい。大きなものは特になかった。一応後日結果を訊くということらしい。
検査後も腸の空気がなかなか抜けなくて若干しんどかった。
総じて、事前準備は下剤も含めて特につらくなかったけど、検査そのものは結構つらかった。
関連エントリー
- 健康診断2024 基本的に毎回 (嫌々だけど) バリウムじゃなくて胃カメラ・上部内視鏡を選択していて、かつ2021年からは鎮静剤も使うようにお願いしている。健...
- 健康診断2021 前年はバリウムだったけど(予約変更するのが面倒だったから)、今回は内視鏡にした。 上部内視鏡は経鼻・経口を鎮静剤なしでやったが、どっちにしろ...
- 上部内視鏡 そういえば健康診断。去年は理由をつけて上部の検査を飛ばしたんだけど、今年は断わる理由がなかったので諦めた。例によってデフォルトでバリウムなの...
- 体調不良(続) 体調不良 - 氾濫原 のあと、月曜日の昼ぐらいから気持ち悪くなった。20時ぐらいにマスク(電車が臭いので)して帰宅開始したがなんとか(という...
- モデルナワクチン 1回目 9時46分に接種 1回目 8時間後ぐらいまではまったく痛みがなく、本当に打たれたのか?生理食塩水だったのでは? レベル 10時間後ぐ...



