画像のぼかし半径とガウシアンカーネルを計算
この画像ぼかし半径計算ツールは、負でないぼかし強度をガウシアン畳み込みで使える寸法へ変換します。強度はピクセル単位のガウシアン標準偏差、すなわちシグマとして扱います。結果には、中心から両側へ標準偏差の3倍を収める半径と、それに対応する奇数のカーネルサイズが表示されます。異なる指定方法を採用する画像ライブラリ、シェーダー、canvas フィルター、処理パイプラインの設定に役立ちます。画像のアップロードや解析は行わず、同じ入力には常に同じ結果を返します。
無料で実行
ぼかし強度を実装用の寸法へ変換します
画像処理ツールでは、同じガウシアンぼかしでも指定方法が異なることがあります。ある画面はシグマを求め、別の画面は半径を求め、畳み込み関数はカーネル全体の幅を必要とする場合があります。この計算ツールは、それらの表現を明確な規則で結び付けます。強度をピクセル単位のシグマとして扱い、マイナス3シグマからプラス3シグマまでを含む半径を選びます。この範囲なら、有限の畳み込みを保ちながら、ガウシアン分布の実用的な重みをほぼすべて収められます。半径は強度の3倍を切り上げて求めます。境界が小数でも、離散画像では整数のピクセル位置が必要になるためです。カーネルサイズは半径の2倍に1を加えた値で、片側、中心ピクセル、反対側の対応する位置を含みます。たとえば強度が2なら、半径は6、カーネルは13ピクセルです。
半径とカーネルサイズを正しく読み取ります
結果の `gaussian_radius` は、中心から各方向へ参照する隣接ピクセル位置の数であり、全幅ではありません。半径6なら、横方向の処理では左右へそれぞれ6ピクセル、縦方向では上下へそれぞれ6ピクセル届きます。`kernel_size` は両側と中心を含むため、常に正の奇数になります。画像ライブラリによってはこの全サイズを直接受け取り、別のライブラリでは半径やシグマを受け取って独自に係数を生成します。対象 API がどの値を要求するかをご確認ください。返される数値はカーネルの形状を示すもので、個々のガウシアン重みではありません。重みを作る場合は、負の半径から正の半径までの各整数オフセットでガウシアン関数を評価し、合計が1になるよう正規化します。2次元ぼかしでは、1次元カーネルを横と縦に分けて適用すると、正方形の畳み込みより少ない計算量で同じ結果を得られます。
ゼロ、小数、見た目の違いを扱います
強度0はぼかしなしを表します。半径0、カーネルサイズ1が返され、中心ピクセルだけを含む恒等処理になります。正の小数も指定でき、わずかな平滑化に適しています。半径は切り上げで求めるため、強度の3倍が整数の境界を越えたときだけカーネルサイズが変わりますが、その間もガウシアン係数は連続的に変化します。標準偏差は負にできないため、負の強度はエラーになります。絶対値への変換や無言での補正は行いません。この計算では、精度と処理量の実用的な均衡として一般的な3シグマの打ち切りを採用しています。別のアプリケーションは2シグマや4シグマ、最大半径、独自の近似を使う場合があります。色空間、端の処理、アルファ、係数精度、リサンプリングも見た目に影響します。厳密な再現が必要な場合は、算出した寸法とともにこれらの条件も記録してください。
活用例
畳み込み関数を設定します
シグマ形式のぼかし指定を、画像処理ライブラリが必要とする奇数幅へ変換します。
シェーダーのサンプリングを設計します
分離可能なガウシアンシェーダーが中心の両側で参照するテクセル数を見積もります。
処理パイプラインを文書化します
強度とともに半径とサイズを記録し、実装間で同じ打ち切り規則を共有します。
よくある質問
API リクエストの料金はいくらですか?
API は1リクエスト $0.002 です。同じ決定論的な計算をブラウザーでは無料でご利用いただけます。
強度は何を表しますか?
ピクセル単位のガウシアン標準偏差として扱います。一般にシグマと呼ばれる値です。
半径はどのように計算しますか?
正の強度では3倍した値を切り上げ、中心の両側に標準偏差の3倍を確保します。
カーネルサイズが常に奇数なのはなぜですか?
中心ピクセルと、その両側に同数の位置を含むためです。サイズは半径の2倍に1を加えた値です。
強度が0の場合はどうなりますか?
半径0、サイズ1となり、ぼかしを行わない恒等処理を表します。
画像そのものを処理しますか?
いいえ。ガウシアンカーネルの形状だけを算出し、画像の送信、復号、変更、保存は行いません。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/image/blur-estimate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"strength":2}'const res = await fetch("https://api.kit.forhosting.com/image/blur-estimate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"strength": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/blur-estimate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"strength": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/blur-estimate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"strength":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"strength":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/blur-estimate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"strength": 2
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.blur_estimate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_mb | 15 |
max_megapixels | 12 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |