絞り変更時の相反則シャッタースピード計算
絞りを変えるとセンサーやフィルムに届く光量が変わるため、同じ露出を得るにはシャッタースピードで補正する必要があります。この計算機は、元の露光時間と段数で表した絞りの変化から、新しい露光時間を求めます。正の段数は絞りを閉じて時間を延ばす場合、負の段数は絞りを開いて時間を短くする場合です。結果には秒数、読みやすい速度表記、計算に使用した正確な露出倍率が含まれます。
無料で実行
元の露出と絞りの変更量を入力します
元のシャッタースピードは秒単位の時間として入力してください。カメラの1/125秒は0.008秒で、2秒の露光はそのまま2と入力します。続いて、絞りの移動量を段数で指定します。絞りを閉じる場合は、通過する光が減り、シャッターを長く開く必要があるため正の値を使用します。絞りを開く場合は、像面に届く光が増えて露光時間を短くするため負の値を使用します。整数だけでなく、0.3、0.5、1.5のような小数の段数にも対応しています。符号は重要です。f/4からf/8への変更は2段絞るため2を、f/8からf/4への変更は2段開けるため-2を入力します。この規則は、露出計、フィルター計算、レンズ透過率試験で得た段数にもそのまま利用できます。入力値は有限の数値で、公開されている範囲内である必要があります。
相反則の計算方法を確認します
1段の変化は露出量の2倍または半分に相当します。この計算機は、2を絞り変更の段数で累乗し、その倍率を元のシャッター時間に掛けます。1段絞ると時間は2倍、2段絞ると4倍になります。1段開けると、2の-1乗が1/2なので時間は半分になります。小数の段数も同じ指数関係に従い、半段では直線的な近似ではなく2の平方根を使います。応答には元の時間、符号付きの段数、露出倍率、新しい秒数、整形済みの速度表記が含まれます。数値は安定した精度で丸められるため、どの環境でも同じJSONになります。後続処理やカメラ制御には数値の秒フィールドをご利用ください。実機のダイヤルでは標準化された段階しか選べず、最も近い設定への調整が必要な場合があります。
露出目標を変えずに結果を適用します
計算された時間は、開始時の設定が示す数学的な露出を維持します。被写界深度を変える場合、レンズの絞りを移動する場合、明るさを統一した連続撮影を計画する場合に役立ちます。ただし、すべての物理現象を補正するものではありません。フィルムの長時間露光では相反則不軌が起こり、メーカー指定の追加時間や色補正が必要になることがあります。デジタルセンサーでは熱ノイズが増え、NDフィルターの実際の透過率が表示値と少し異なる場合もあります。また、カメラは時間を1段、半段、1/3段の設定へ丸めます。返された値を正確な目標として扱い、最も近い設定を選ぶか、時間を計測したバルブ露光をご利用ください。ISOやフィルター濃度も同時に変える場合は、すべてを正味の段数にまとめてから計算してください。
活用例
被写界深度を変えても明るさを維持
絞りを閉じたり開いたりした後に、露出を補正するシャッター時間を求めます。
手動ブラケティングの計画
整数または小数の絞り変更に対する正確な時間を計算し、再現可能な撮影順序を作成します。
露出ワークシートの自動化
計画ツールへ秒数を渡しながら、倍率と読みやすい設定値も確認用に保持します。
よくある質問
絞り変更が正の値とはどういう意味ですか?
指定した段数だけ絞りを閉じる意味です。補正のため、計算機はシャッター時間を延ばします。
1/125秒はどのように入力しますか?
1を125で割ると0.008秒になるため、shutter_speed_secondsに0.008と入力してください。
小数の段数も使用できますか?
はい。半段や1/3段を含め、正確な指数関係で計算します。
フィルムの相反則不軌も補正しますか?
いいえ。通常の相反則のみを計算します。長時間露光の補正はフィルムメーカーの指示に従って別途適用してください。
カメラに計算結果と同じ値がないのはなぜですか?
多くのカメラは1段、半段、1/3段の標準値だけを備えています。最も近い値か、時間を計測するバルブ露光をご利用ください。
APIリクエストの料金はいくらですか?
APIリクエストは1回$0.002です。ブラウザー計算機では同じ決定論的な処理をローカルで実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/optics/reciprocity-shutter-speed \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"shutter_speed_seconds":0.008,"aperture_change_stops":2}'const res = await fetch("https://api.kit.forhosting.com/optics/reciprocity-shutter-speed", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"shutter_speed_seconds": 0.008,
"aperture_change_stops": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/optics/reciprocity-shutter-speed",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"shutter_speed_seconds": 0.008,
"aperture_change_stops": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/optics/reciprocity-shutter-speed", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"shutter_speed_seconds":0.008,"aperture_change_stops":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"shutter_speed_seconds":0.008,"aperture_change_stops":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/optics/reciprocity-shutter-speed", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"shutter_speed_seconds": 0.008,
"aperture_change_stops": 2
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "optics.reciprocity_shutter_speed",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |