Comment faire pour simuler l'effet fisheye par openCV?
Je suis à la recherche de moyens pour créer l'effet fisheye, regardé des documentations pour openCV, on dirait qu'il contient etalonnage de l'Appareil photo fonctions radiales de distorsions comme fisheye. Est-il possible de simuler la déformation du fisheye par openCV?
Si il est possible de le faire par openCV, en les comparant à openGL, qui va générer de meilleurs résultats? Merci.
Vous devez vous connecter pour publier un commentaire.
J'ai créé cette application à l'aide d'opencv. Est-ce l'effet que vous faites référence?
En gros, j'ai codé la formule indiquée sur la page wikipedia "Distorsion(optique):" je peux montrer le code si nécessaire
Mise à jour:
OK, donc, ci-dessous est le code écrit en c++ à l'aide d'opencv (non documenté, donc n'hésitez pas à demander des explications):
Le programme reçoit en entrée les paramètres suivants: |image d'entrée| |de l'image de sortie| |K qui controlls quantité de distorsion (typiquement, essayez des valeurs autour de 0,001)| |coordonnée x du centre de la distorsion| |coordonnée y du centre de la distorsion|
Donc le cœur du programme est le double pour boucle qui itère pixel par pixel sur l'image et regarde pour le pixel correspondant dans l'image d'entrée à l'aide de la formule de la distorsion radiale (c'est le moyen de l'image de la déformation est généralement fait - peut-être contre intuitivement par rétro-projection à partir de la sortie vers l'entrée). Il y a quelques subtilités qui ont à faire à l'échelle de l'image de sortie (dans ce programme, l'image résultante est la même taille que l'entrée), et je ne peux pas, sauf si vous voulez entrer dans plus de détails.profitez de.
Grâce à la ci-dessus 2 de ce code. J'ai modifié les ci-dessus transcrit le code en Java pour utiliser des Bitmaps au lieu de BufferedImage. Cela permet l'exécution de code sur Android(qui ne prend pas en charge AWT). J'ai aussi fait l'effet de manipuler les pixels dans un cercle plutôt que l'ensemble de l'image Bitmap, ce qui donne un fisheye "objectif" de l'effet. Espérant que cela aide les développeurs Android.
.
@And_Dev comme promis
Ci-dessous est le point de vue que les utilisateurs touch co-ords et appelle ensuite le filtre sur une zone sélectionnée. la zone sélectionnée est le cordon par exemple le centre du cercle, plus un rayon d'un cercle). pour cela, le code deux fois pour une augmentation mammaire app:) Juste un commentaire le HorizontalSlider code que vous n'avez pas besoin de cela.
.
L'appel de l'activité.
Si vous avez besoin d'aide mate, il suffit de demander. espérons que cela aide
Merci à vous pour ce code. Cela m'aide beaucoup. Je transcrypted pour Java. Peut-être quelqu'un a une fonction similaire pour symulating tangentielle de la distorsion?
J'ai débogué les fichiers java et il fonctionne très bien sur mon téléphone(supérieur à 4.0). Il se compose de 3 fichiers java et 1 fichier xml. Vous avez de la place checkerboardback.jpg fichier sous drawaable répertoire. Comme quelqu'un l'a dit, la valeur alpha est manquant et je l'ai donné "0x0ff". En outre, upperbound de certains Boucle ont été mauvais.
//1. MultiRuntimeProcessorFilter.java
//2. Filters.java:
Et
//3 MainActivity.java raison, le système de classe.
}
Ici est un fichier XML
//4 activity_main.xml
Voulez-vous utiliser cette distorsion sur sintetic images, ou voulez-vous appliquer à une caméra vidéo ou quelque chose ?
Dans OpenCv vous devriez être en mesure de faire calibrage de la caméra (en utilisant les fonctions intégrées, Zhang algorithme) ..
Dans OpenGL voir ce.
Ce qui concerne