ZOOM AMÉLIORE AVEC ANTI-ALIASING

Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010 - 17 oct. 2004 à 10:32
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 24 déc. 2004 à 09:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/26898-zoom-ameliore-avec-anti-aliasing

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
24 déc. 2004 à 09:42
Très bien ennixo, voici la méthode que je t'ai donné appliqué à la même image :

http://www.vbfrance.com/code.aspx?ID=28385

Je pense que ca pourra t'être utile moustachu ;)

DarK Sidious
ennixo Messages postés 224 Date d'inscription samedi 25 janvier 2003 Statut Membre Dernière intervention 17 juin 2006
24 déc. 2004 à 07:30
je demande a voir =)
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
23 déc. 2004 à 15:16
Non ce n'est pas si chaud que cà, il faut utiliser une matrice :
1 0 -1
1 0 -1
1 0 -1

Puis une matrice

1 1 1
0 0 0
-1 -1 -1

Cela trace les contours normalement, et ensuite, il faut appliquer un flou sur les pixels des contours pour obtenir de l'antialiasing.

Note : cette source n'utilise pas de l'antialiasing comme mentionné ci-dessus, mais un filtre de flou uniquement car sur une image zoomé, le tracé des contours est loin d'être bon !

DarK Sidious
ennixo Messages postés 224 Date d'inscription samedi 25 janvier 2003 Statut Membre Dernière intervention 17 juin 2006
23 déc. 2004 à 14:59
l'anticrénelage sur une image... sur une bitmap en tt cas c'est compliqué, le programme doit essayer de repérer des formes pour que ce soit efficace, sinon ce sera bizarre et/ou flou... et repérer des formes c'est chaud !!!
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
22 déc. 2004 à 10:08
Un zoom à 1 ? Effectivement, ce n'est pas un Zoom :o)
Je me suis mal exprimé : c'est pour appliquer l'anti aliasing sur une image... sans besoin de l'agrandir. Peut-être existe-t-il d'autres moyens...

Merci de ta réponse

++
Moustachu
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
22 déc. 2004 à 10:02
Oui, c'est possible en modifiant les coefficients de la matrice de calcul de l'antialiasing. Cepandent, je n'ai pas prévu de fonctions pour le faire !

Mais je ne vois pas trop l'intérêt de faire un zoom de 1... ;)

DarK Sidious
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
22 déc. 2004 à 09:36
Bonjour,

Encore une belle démo de ta classe.

J'ai une petite question, peut-être pas très pertinente car je ne me suis pas trop penché sur ton Algo :

Est-il possible d'avoir un anti aliasing plus ou moins "fort" ? Je m'explique : je souhaite appliquer l'antialiasing sans zoom (iZoom = 1) et je trouve que je perds trop de détails sur l'image résiduelle.

Merci et à ++

Moustachu
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
3 nov. 2004 à 13:11
Non, il n'y aucune référence à cela dans la MSDN...
Que l'on fasse
Call X(args)
ou
X args
Le prog attend *toujours* que X aie terminé.
Ca m'étonne que ce ne soit pas le cas en VBA...
jmlucienvb Messages postés 129 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 12 février 2009
3 nov. 2004 à 11:04
Il me semble que le call à une influence sur la continuation du programme...
Ce qui est à la suite de call attend que le sous prog aie terminé pour continuer...
Ceci est vrai en VBA , en Vb suis pas sûr...
JM
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
3 nov. 2004 à 10:57
Merci bilaloch, c'est sympa ;)

Sinon, le Call n'est pas obligatoire il me semble. Si on ne l'utilise pas ca ne change rien, mais c'est quand même plus rigoureux.

DarK Sidious
bilaloch Messages postés 556 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 31 octobre 2019 1
3 nov. 2004 à 10:50
DarK Sidious, 10/10. Bravo.

@ +

BILALoch
bilaloch Messages postés 556 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 31 octobre 2019 1
3 nov. 2004 à 10:37
Quelques fois, call est obligatoire. Non?

@+

BILALoch
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
1 nov. 2004 à 21:13
J'ai pris en compte tes remarques ennixo, et voici le résultat : c'est quand même moins crénelé !

Merci à toi.

DarK Sidious
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
26 oct. 2004 à 19:15
Oui, tout à fait, ton algorithme est sûrement plus optimisée niveau résultat. D'ailleurs, il va falloir que je l'applique pour prendre en compte la position des pixels. Merci pour cette remarque constructive ;)

DarK Sidious
ennixo Messages postés 224 Date d'inscription samedi 25 janvier 2003 Statut Membre Dernière intervention 17 juin 2006
26 oct. 2004 à 18:31
pour optimiser un peu plus tu peux utiliser l'opérateur \ au lieu de / quand tu fais des opérations sur des entiers, ça permet de ne pas du tout prendre en compte l'évntuelle virgule du numérateur et du dénominateur et du résultat.

sinon le résultat de ton algo est un peu spé, c'est encore très carré par rapport à un résultat effectué avec photoshop par exemple.

j'avais fait un truc dans ce genre là mais c'était un rééchantillonage bilinéaire (woaw lol).

ça consistait à :
pour chaque pixel de l'image redimensionnée, calculer la position exacte (dans un single) du pixel de l'image originale donc avec une virgule pour le x et le y
et récupérer la couleur de l'image originale avec un algorithme d'anticrènelage.

permet d'obtenir un résultat beaucoup plus satisfaisant et très rapide en utilisant un bon algorithme d'anticrènelage.

si quelqu'un veut plus d'infos la dessus demandez :)
jmlucienvb Messages postés 129 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 12 février 2009
19 oct. 2004 à 07:42
Et ayant en ce moment à lire des codes écrits par Dark je dois dire que cela facilite grandement la compréhension ...
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
19 oct. 2004 à 06:44
Ben perso, je ne vois pas trop de différence, mais d'après VB HardCore (un bouquin), cela permet au compilateur de mieux discerner les appels de fonctions ainsi que les affectations à des valeurs, et donc de lui permettre d'optimiser ces opérations.

Par contre, l'avantage d'utiliser ces mot-clés : cela donne un code plus facile à lire (à mon avis).

DarK Sidious
DeadlyPredator Messages postés 222 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 30 juin 2008
19 oct. 2004 à 03:53
J'ai une grosse question :
Est-ce que le fait d'utiliser Let et Call permet réellement d'optimiser le programme?
jmlucienvb Messages postés 129 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 12 février 2009
18 oct. 2004 à 08:25
Et comme cette solution nous ouvre de grands espaces dans un projet qui nous tient à coeur Bravo 10/10
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
17 oct. 2004 à 16:55
Tout à fait, mettre un Let devant une affectation permet d'optimiser un peu le code d'après le livre VB Hardcore... Mais ce n'est surement pas flagrant ! C'est un héritage du vieux BASIC.

DarK Sidious
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
17 oct. 2004 à 10:32
Let X = Y c'est la même chose que X = Y ?
j'ai jamais vu cette syntaxe :) on en apprend tous les jours...

L'image agrandie avec l'antialiasing est plus grosse, il faudrait la tronquer sur les bords.
Sinon j'ai bien aimé ^^
9/10
Saros
Rejoignez-nous