Quelle est la manière la plus simple de déformer une photo à l'aide d'un objectif fisheye ou grand angle? Je regarde une formule de projection de pixels qui a peu de paramètres. Les paramètres de la caméra et de l'objectif ne seront pas connus, l'utilisateur doit donc modifier les paramètres visuellement. MerciProjection de correction d'objectif
Répondre
Je suppose que vous pourriez utiliser l'équation de l'objectif pour le faire.
1/f = 1/object_distance + 1/image_distance
où f est la longueur focale (l'entrée de l'utilisateur). Le rapport entre la distance de l'image et la distance de l'objet pourrait être utilisé pour redimensionner l'image de manière appropriée, en utilisant l'équation d'agrandissement. Pour obtenir ce que vous voulez vraiment, alors, vous avez besoin de restructurer l'équation:
1/object_distance = 1/f - 1/image_distance
Et puis utilisez l'équation de grossissement pour utiliser la hauteur de l'objet redimensionner:
-image_distance/object_distance = IMAGE_HEIGHT/object_height
Le hic, comme vous pouvez VHA e remarqué, c'est que vous avez besoin de connaître la distance de chaque pixel par rapport à la caméra. Sinon, cela ne fonctionne tout simplement pas. Vous pouvez demander cette information à l'utilisateur, mais cela semble improbable et douloureux. Je ne connais pas d'autre moyen de le faire - la distorsion de l'objectif est un effet 3D, et vous recevez des informations 2D. Au mieux, vous pouvez essayer de le corriger en deux dimensions, mais cela sera difficile et ne fonctionnera pas correctement.
Cette formule ne fonctionnerait que pour un objectif idéal, et ne fait rien pour expliquer les distorsions produit par un objectif fisheye ou ultra-grand angle. –
Si possible, demandez à l'utilisateur de prendre une photo d'une image de référence (un échiquier par exemple) en utilisant le même appareil photo, puis utilisez cette information pour analyser les caractéristiques de l'objectif. Cette information peut ensuite être utilisée pour déformer les autres photos prises par le même appareil photo. Pour la mise en œuvre, vous pouvez utiliser des réseaux de neurones/algorithmes génétiques.
L'utilisateur travaillera avec l'ensemble des photos prises par différentes caméras. – LicenseQ
Il existe un bon papier here qui fournit des modèles mathématiques d'aspect décent pour la distorsion de l'objectif. C'est au moins. SDX2000 était un peu sur la bonne voie avec la grille je pense. Je pense que la manière la plus courante d'aborder le problème est de mapper l'image à une grille et ensuite d'appliquer des paramètres de déformation pour produire une distorsion en coussinet et en barillet. Voir les filtres de distorsion de l'objectif dans Lightroom ou Photoshop à titre d'exemple.
Il y a une excellente discussion de ImageMagick. Ils donnent l'équation qu'ils utilisent. Notez que cela ne corrige pas la distorsion de la même manière que Photoshop CS6 (c'est-à-dire que vous ne pouvez pas prendre de coefficients dans les profils d'objectif Adobe et simplement les insérer). Le paper that Kamil points to semble être un excellent aperçu en profondeur.
Wikipédia a 4 différentes géométries de lentilles fisheye, y compris les équations décrites ici: http://en.wikipedia.org/wiki/Fisheye_lens#Fisheye_lens –