Calcule a largura do panorama a partir de fotos sobrepostas
Três fotos de 4000 pixels com sobreposição de 30% e 25% formam um panorama de 9800 pixels de largura, e não de 12 000. Digite as fotos na ordem e veja a largura final, os pixels repetidos e a altura. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Antes de costurar um panorama, ajuda saber qual será a largura da tela final. Esta calculadora gratuita recebe as dimensões em pixels de cada foto sobreposta e a sobreposição horizontal estimada entre quadros consecutivos, e retorna a largura resultante do panorama, a sobreposição total em pixels e a altura do panorama quando todas as imagens a informam.
Como a largura do panorama é estimada
Um panorama costurado não é simplesmente a soma das larguras das fotos individuais, porque os quadros consecutivos se sobrepõem. Esta ferramenta percorre sua lista de imagens da esquerda para a direita, exatamente na ordem em que você vai costurá-las. Para cada par adjacente, ela calcula a região compartilhada: a porcentagem de sobreposição que você fornece, aplicada à menor das duas larguras.
Usar a largura menor é a escolha conservadora e fisicamente sensata — a faixa sobreposta nunca pode ser mais larga do que qualquer uma das duas imagens que a compartilham. Essa sobreposição em pixels é então subtraída quando o próximo quadro é posicionado, de modo que o total acumulado cresce apenas pela faixa nova, não duplicada, de cada foto. O resultado é a largura estimada da tela final em pixels.
Como a matemática é uma simples soma de produtos, a estimativa é exata para as porcentagens informadas; a única incerteza está em quão bem seus palpites de sobreposição correspondem ao que a câmera realmente capturou. Em fotos feitas à mão, sobreposições entre 20% e 40% são típicas, enquanto uma cabeça panorâmica em tripé permite planejar valores mais apertados e previsíveis.
O que informar e o que você recebe de volta
A entrada é uma lista de registros de imagem na ordem de costura. A última imagem nunca tem um vizinho seguinte, então seu valor de sobreposição é ignorado. Uma sobreposição de 100% ou mais é rejeitada com um erro claro, pois dois quadros totalmente sobrepostos não acrescentam informação nova e geralmente indicam um erro de digitação.
Todos os valores são arredondados para seis casas decimais, de modo que os resultados sejam estáveis e comparáveis entre execuções.
Dicas de planejamento para costuras melhores
Use esta estimativa antes de fotografar ou antes de reservar espaço em disco para uma tela enorme. Se você conhece sua lente, o tamanho do sensor e o ângulo de rotação entre as fotos, pode derivar a porcentagem de sobreposição a partir do campo de visão horizontal: a fração do quadro que se repete é igual a um menos o passo angular dividido pelo campo de visão.
Aplique essa mesma porcentagem em todas as emendas para uma varredura uniforme, ou varie por par quando você mudou o passo no meio da sequência. Mantenha pelo menos 15% de sobreposição para que o software de costura tenha pontos de correspondência suficientes, e prefira 30% ou mais em cenas de pouca textura, como céu ou água.
Se a estimativa ficar muito mais larga do que seu editor ou impressora suporta, reduza o número de quadros, aumente a sobreposição para que cada quadro contribua com menos área nova, ou planeje reduzir a resolução da tela final. Como esta calculadora é determinística e instantânea, você pode iterar livremente sobre quantidades de quadros e sobreposições até que o tamanho projetado atinja seu objetivo.
Casos de uso
Planejamento prévio para panoramas de paisagem
Um fotógrafo planejando uma varredura de cinco quadros de um horizonte urbano informa a largura de cada quadro e a sobreposição pretendida de 30% para confirmar que a tela final será larga o bastante para uma impressão grande antes de sair de casa.
Dimensionamento de tela e armazenamento para trabalho em gigapixel
Um estúdio montando um mosaico de gigapixels com dezenas de quadros de teleobjetiva estima a largura costurada para verificar limites de memória, disco temporário e exportação no software de costura antes da sessão.
Perguntas frequentes
Por que meu panorama não é simplesmente a soma de todas as larguras das imagens?
Porque os quadros consecutivos se sobrepõem. A faixa duplicada entre cada par é subtraída, então a largura final é a soma das larguras menos a sobreposição em pixels de cada emenda.
Como a sobreposição entre duas imagens é calculada?
Sua porcentagem de sobreposição é aplicada à menor das duas larguras de cada par adjacente, já que a região compartilhada não pode ser mais larga do que nenhuma das imagens. Esse valor em pixels é então subtraído quando o próximo quadro é adicionado.
O que acontece se eu informar uma sobreposição de 100% ou mais?
A requisição é rejeitada como entrada inválida. Uma sobreposição completa significa que a segunda imagem não acrescenta área nova, o que contradiz a ideia de costura e quase sempre indica um erro de digitação.
A ordem das imagens importa?
O valor de sobreposição da última imagem é ignorado.
Posso estimar a altura do panorama também?
Se alguma altura estiver faltando, o campo é omitido.
A ferramenta é gratuita e roda online?
O uso interativo roda inteiramente no seu navegador, de graça — nada é enviado.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/image/stitch-panorama-estimate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"images":[{"width":4000,"height":3000,"overlap_pct":30},{"width":4000,"height":3000,"overlap_pct":25},{"width":4000,"height":3000}]}'const res = await fetch("https://api.kit.forhosting.com/image/stitch-panorama-estimate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"images": [
{
"width": 4000,
"height": 3000,
"overlap_pct": 30
},
{
"width": 4000,
"height": 3000,
"overlap_pct": 25
},
{
"width": 4000,
"height": 3000
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/stitch-panorama-estimate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"images": [
{
"width": 4000,
"height": 3000,
"overlap_pct": 30
},
{
"width": 4000,
"height": 3000,
"overlap_pct": 25
},
{
"width": 4000,
"height": 3000
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/stitch-panorama-estimate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"images":[{"width":4000,"height":3000,"overlap_pct":30},{"width":4000,"height":3000,"overlap_pct":25},{"width":4000,"height":3000}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"images":[{"width":4000,"height":3000,"overlap_pct":30},{"width":4000,"height":3000,"overlap_pct":25},{"width":4000,"height":3000}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/stitch-panorama-estimate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"images": [
{
"width": 4000,
"height": 3000,
"overlap_pct": 30
},
{
"width": 4000,
"height": 3000,
"overlap_pct": 25
},
{
"width": 4000,
"height": 3000
}
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.stitch_panorama_estimate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_items | 200 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Ela roda inteiramente no seu navegador, não custa nada para uso interativo, e o mesmo cálculo está disponível pela API a US$ 0,002 por requisição quando você precisa dele dentro de um pipeline.
O que informar e o que você recebe de volta
Cada registro precisa de uma largura em pixels; a altura é opcional, e overlap_pct é a sobreposição horizontal que aquela imagem compartilha com a próxima, expressa como porcentagem de 0 até, mas sem incluir, 100. A saída traz image_count, a estimativa panorama_width, total_overlap_px (quantos pixels são duplicados em todas as emendas), sum_widths_px (o total ingênuo caso você ignorasse a sobreposição) e panorama_height sempre que todos os registros declararem altura — tomada como o máximo, já que a tela precisa acomodar o quadro mais alto.
Casos de integração
Verificação de sanidade em um pipeline de costura
Um desenvolvedor processando em lote sequências de fotos de drone chama a API a US$ 0,002 por requisição para prever as dimensões de saída, sinalizando sequências cujas sobreposições produziriam um resultado impossivelmente estreito ou largo.