ISO感度の段数差計算
ISO感度の段数差計算では、カメラの2つの感度設定を比較し、その間が何段に相当するかを求めます。基準となるISOと変更後のISOを入力すると、両者の比の底2の対数を計算します。結果が正なら変更後の感度が高く、負なら低く、ゼロなら同じ値です。全段の設定だけでなく、中間段や独自に測定した値にも対応しているため、露出計画、カメラ試験、照明記録、再現性のある撮影手順にご利用いただけます。
無料で実行
ISO感度値の段数差が表すもの
写真では、露出に関係する量が2倍になる変化を1段と表します。そのため、ISO 100から200への変更は1段の増加であり、200から800への変更は感度比が4なので2段の増加です。この計算では、3分の1段の設定やカメラのダイヤルにない数値を含め、任意の正のISO値を比較できます。iso_fromを基準、iso_toを変更先として扱います。符号付きの結果は、正なら増加、負なら減少、ゼロなら変化なしを示します。併記される比からも同じ関係を確認できます。比が8なら3段、4分の1ならマイナス2段です。ISOを上げても被写体に当たる光が増えるわけではなく、絞りを開くことやシャッター時間を延ばすことと物理的に同一ではありません。それでも段数による表現は、感度の比例変化を露出計算で共通する底2の尺度で示せるため、撮影条件の比較に役立ちます。
対数による計算の仕組み
使用する式は stops_difference = log2(iso_to / iso_from) です。まず変更後のISOを基準ISOで割り、その比が何回の倍増、または倍増の一部分に相当するかを底2の対数で求めます。基準がISO 100、変更後がISO 800なら比は8で、log2(8)は3です。入力を逆にすると比は8分の1、結果はマイナス3になります。値が正確な2の累乗である必要はありません。ISO 100からISO 125への変更は約0.321928段であり、3分の1段に近いものの、カメラの設定値へ強制的に丸めず数学的な結果を保ちます。ゼロや負の感度では意味のある対数比を作れないため、両方の入力は有限かつゼロより大きくなければなりません。安定した出力のため結果は小数点以下12桁に丸めますが、通常の露出判断には十分以上の精度です。方向欄は符号を簡潔に示し、他の露出要素の補正や測定比較には数値の段数差をご使用ください。
撮影で結果を活用する方法
ISO変更を記録または補正するときに、符号付きの段数差をご利用ください。結果がプラス3段なら、単純なマニュアル露出モデルで同程度の明るさを保つには、別の要素から3段分を減らします。たとえばシャッター時間を8分の1にする、相当分だけ絞る、または複数の調整を組み合わせます。ただし実際のカメラでは、ISOによって増幅処理が変わり、表示値が丸められている場合があり、ノイズやダイナミックレンジも変化します。自動モードでは複数の設定が同時に変わることもあります。したがって、この計算は比を正確に換算するものとして扱い、2枚の写真が同じ外観になる保証とは考えないでください。元の値、比、符号付き段数差、方向をまとめて返すため、自動試験レポートにも便利です。アルゴリズムは決定論的で、外部サービスへ接続しません。対話操作はブラウザー内で行われ、APIによる正常な計算は1項目あたり$0.002です。再現可能な記録には入力順と利用目的も残してください。
活用例
露出補正を計画する
ISOの変更量を符号付きの段数へ変換し、シャッター速度、絞り、NDフィルターで補正する前に確認できます。
カメラ試験の設定を比較する
中間値や標準外のISO値を含む2枚の試験画像について、正確な感度間隔を数値化できます。
撮影記録を統一する
撮影ログ、照明図、自動メタデータレポートに、一貫したISO比と段数差を追加できます。
よくある質問
どの計算式を使用しますか?
stops_difference = log2(iso_to / iso_from) を使用します。iso_fromが基準、iso_toが変更先です。
結果が負になるのはなぜですか?
変更後のISOが基準より低い場合は負になります。たとえばISO 800からISO 100への変更はマイナス3段です。
3分の1段のISO設定も入力できますか?
はい。公開範囲内の有限な正の値を入力でき、結果は整数段に限定されません。
ISOを上げると光が増えますか?
いいえ。ISOはカメラの感度設定や信号処理を変更しますが、被写体の照明やレンズを通る光量は変えません。
API計算の料金はいくらですか?
APIによる正常な計算は1項目あたり$0.002です。同じ決定論的な計算をブラウザーでもご利用いただけます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/optics/iso-stops-difference \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"iso_from":100,"iso_to":800}'const res = await fetch("https://api.kit.forhosting.com/optics/iso-stops-difference", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"iso_from": 100,
"iso_to": 800
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/optics/iso-stops-difference",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"iso_from": 100,
"iso_to": 800
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/optics/iso-stops-difference", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"iso_from":100,"iso_to":800}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"iso_from":100,"iso_to":800}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/optics/iso-stops-difference", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"iso_from": 100,
"iso_to": 800
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "optics.iso_stops_difference",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |