FishEye, Effet d'Image (Distorsion en Barillet) Algorithme (avec Java)?
Je suis à la recherche de l'algorithme (bitmap manipulation de pixels) pour simuler l'objectif fisheye (Distorsion en Barillet) à partir d'images normales. Jusqu'à présent, j'ai trouvé la mise en œuvre impliquant des bibliothèques externes comme OpenCV, OpenGL ou jhlabs. Depuis que je suis prise d'une classe de Traitement Numérique de l'Image, et je suis en train de faire un cours de l'évaluation du projet, je ne suis pas sûr de savoir si l'aide extérieure de la lib va me gagner un bon niveau. Si quelqu'un pourrait-il me donner la référence d'un tel algorithme?
Ps. Je suis invité à la mettre en œuvre en Java, mais l'exemple de n'importe quel langage serait le faire.
OriginalL'auteur tsong99 | 2011-02-12
Vous devez vous connecter pour publier un commentaire.
Il est bon que vous avez été en mesure de trouver des exemples de ce que vous voulez. Il est utile de les inclure dans votre question, il fait en sorte que les gens qui lisent sont sur la même page que vous êtes. Voici donc un lien.
Il est également bon que vous voulez faire les choses par vous-même, sans s'appuyer sur une bibliothèque pour faire le travail dur pour vous. Mais cela ne signifie pas que vous avez à ignorer de telles solutions. Voici pourquoi.
Regarder ce OpenCV est effectivement utilisé dans ce lien. Ce sont des fonctions qui commencent par
cv
:Si vous regardez la OpenCV API, toutes ces fonctions se bornent à gérer les tâches quotidiennes, comme la création de l'image, suppression, affichage, réglage de pixels, etc. Aucune de ces tâches sont notamment la distorsion en barillet. Aussi loin que la distorsion en barillet va, cette solution est pas OpenCV spécifiques.
En effet, le cœur du programme est ici:
Qui est juste de la radiale de transformer la formule -- c'est ce que vous avez besoin de comprendre. Comme vous pouvez le voir, il n'y a pas d'OpenCV appels.
Oui, en théorie, vous devriez être en mesure de ré-utiliser la plupart de ce code en Java sans trop d'effort. Mais je n'ai jamais utilisé d'OpenCV avec Java donc je ne sais pas comment il serait dans la pratique.
Salut, je suis en train de créer le même effet, mais dans Android. Pourriez-vous m'expliquer comment les méthodes ci-dessus fonctionne. Atm j'ai une appli où je place un cercle sur l'image, j'ai un algorithme qui cible uniquement les pixels dans le cercle. je sais évidemment le rayon du cercle, le centre du cercle et je peux faire une boucle par le bitmap pixel par pixel. voilà ce que j'ai obtenu avec le traitement d'image comme je suis de nouveau pour elle. auriez-vous l'esprit de parler de moi à travers la façon dont je pourrais appliquer cet effet? toute aide serait appréciée. je peux commencer une discussion avec ma source si vous le souhaitez
malheureusement, je n'ai pas d'expérience Android, donc je ne peux pas vous aider. Si vous posez une question et de balises avec "android", vous êtes susceptibles de trouver quelqu'un qui peut vous aider, si.
ok merci mais le code ci-dessus n'est pas particulier à Android, je me demandais juste comment radiale de transformer fonctionne et comment faire pour que la transformation de l'image bitmap. par exemple, je pense que généralement vous avez un src de l'image et une image de destination, puis vous allez tracer les nouveaux points dans la dest. d'autres choses dont je ne suis pas clair sur sont, quelles variables dois-je besoin, par exemple à rayon x y co-ords de pixels etc
OriginalL'auteur mpenkov
J'ai écrit un article à ce sujet dans http://www.helviojunior.com.br/fotografia/barrel-and-pincushion-distortion/
Comme Andrew a dit, il semble que vous avez une très détaillée poste. Pourriez-vous résumer les informations pertinentes à cette question et de le placer dans votre réponse? Qui permettrait de protéger contre votre lien aller à un certain moment dans l'avenir.
OriginalL'auteur Helvio
https://android.googlesource.com/platform/frameworks/base/+/ac39c604d6df8631922c2295b3341cd561f172a5/media/mca/filterpacks/java/android/filterpacks/imageproc/FisheyeFilter.java
ce doit être ce que vous voulez.
regarder le shader
mFishEyeShader
etupdateProgramParams()
OriginalL'auteur afpro