algorithme interpolation ???

Démarré par FroggySeven, Octobre 03, 2017, 19:19:20

« précédent - suivant »

FroggySeven

L'idée, c'est que j'aimerais pouvoir programmer une interpolation "féroce" (=d'un rapport 1 à 10),
pour voir comment cela améliore un algorithme d'augmentation du piqué par empilement d'images décallées.

1) Est-ce que mon algo (B) est-il un classique ? Si oui comment s'appelle-t-il ?
   Ou au contraire pourquoi n'est-il jamais utilisé / quel défaut conceptuel aurait-il ?
   PRINCIPE : la couleur du centre est calculée en moyennant la couleur des 4 coins.
                    Ensuite dans chacun des 4 triangles  (qu'on devine) la couleur varie linéairement entre les 3 sommets.

2) Quelles sont les autres algorithmes classiques ?

3) Accessoirement, comment se fait-il qu'avec Gimp je ne voye aucune différence  
  entre les algos linéaire(C) / cubique(D) / sinc lanczos3 machin-truc (E) ?
???

A) option rééchantillonnage SANS interpolation de GIMP       B) algo perso "toit à 4 pans"
(pour montrer de quelles couleurs je pars ici)
C) linéaire Gimp                                                                D) cubique Gimp                     E) sinc lanczos3 Gimp

jaric

Tu n'as pas parfois l'impression fugace que tu te poses trop de questions ?

Mais c'est toi qui voyes, hein ... :D

remico

1/ je ne sais pas

2/ Autres algorithmes : il y en a pas mal avec imagemagick ainsi que différentes lignes de commande pour générer des images de test :
http://www.imagemagick.org/Usage/filter/
http://www.imagemagick.org/Usage/filter/nicolas/

3/ Peut-être que les résultats sont les mêmes parce que l'image est trop petite pour faire des calculs. Un article teste différents algorithmes d'interpolation avec une autre méthode, rotation successive de 5° jusqu'à 180° puis retournement , il y a une image de test (ci-dessous) qui rend plus facile l'évaluation, il suffit de compter les anneaux : http://www.panotools.org/dersch/interpolator/interpolator.html
Même chose avec d'autres images : http://www.photocreations.ca/interpolator/index.html



FroggySeven

#3
Merci  :D :D :D :D

Parmi tes liens j'en ai trouvé un que je comprends vaguement : http://www.panotools.org/dersch/interpolator/interpolator.html
(et super intéressant pour moi du coup).

1) Je crois que ce que Gimp appelle une interpolation "linéaire" est en fait une interpolation bilinéaire.
Cela expliquerait pourquoi "mon" algorithme (réellement linéaire) ne donne pas la même chose.
Et vu que "mon" algorithme donne un résultat très moche (traces sur les diagonales)
et qu'en terme de puissance de calcul le bilinéaire semble grosso modo aussi exigeant,
alors ça expliquerait pourquoi on ne fait jamais de "vraie" interpolation linéaire.

3) ça voudrait dire que les autres algorithmes prennent en compte les valeurs adjacentes en plus des coins ?
   ça ne doit pas être compliqué à vérifier, je vais regarder.

-----------------------------------------------------------------------------------------------------------------------------------------------

Maintenant je cherche à programmer ce fameux algorithme bilinéaire.
SOUCIS  :( : dans l'article de wiki             https://fr.wikipedia.org/wiki/Interpolation_bilinéaire
Les coef   a,b,c et d de la fonction f(x,y)=ax+by+cxy+d sont donnés en fonction de f(xi,yj), où (xi,yj) sont les coordonnées des quatres coins.

C'est moi qui n'ai rien compris ou ça se mort la queue, et ça ne permet pas de calculer a,b,c et d ?

FroggySeven

ça y est j'ai compris pour l'article wiki :P

remico

1/ Cela doit être effectivement bilinéaire pour Gimp, l'exemple présenté avec 4 pixels donne de bien meilleurs résultats sans aucune interpolation, on peut l'agrandir à l'infini sans interpolations. Il y a quelques explications ici : http://www.cambridgeincolour.com/tutorials/image-interpolation.htm

2/ je comprends rien non plus aux explications de wikipedia mais pour un bilinéaire c'est la moyenne des 4 voisins. Les autres algorithmes vont chercher plus loin pour calculer la moyenne en donnant un coefficient différents si j'ai bien compris mais je ne saurais le programmer.

Bilinéaire                                                            Bicubique



FroggySeven

Encore merci pour ton aide, ça m'a bien débloqué !   "Ya pu ka" programmer ça.

Cela me dérange, cette idée de prendre en compte les points plus loin :
on dirait que c'est fait pour "faire joli", au détriment  de l'information.
Pour ce que je veux faire ça ne me semble pas adapté.

remico

C'est bien le but de faire joli, par exemple pour atténuer le crénelage en créant des valeurs qui n'existent pas sur l'original. C'est similaire avec la transformation en jpg des informations brutes du capteur, les informations manquantes sont interpolées.

FroggySeven

Oui c'est fait pour ça, mais dans mon cas je pense qu'un algorithme moins joli mais plus "honnête" devrait davantage convenir.
-------------------------------------------------------------------------------------------------------------------------------------

Tadaaaaa  ;D !       ça correspond bien. CQFD  :D

En haut à droite "mon" algorithme bilinéaire (carrément plus facile à programmer que le "pur" linéaire).




Franciscus Corvinus

Citation de: FroggySeven le Octobre 04, 2017, 12:11:57
Oui c'est fait pour ça, mais dans mon cas je pense qu'un algorithme moins joli mais plus "honnête" devrait davantage convenir.
C'est pas forcément plus honnete si tu augmente le bruit: tu fais ressortir des informations qui n'y sont pas.

FroggySeven

Tu trouves que la "croix" que fait ressortir "mon" algorithme "vrai linéaire" (centre haut)
s'apparente d'une certaine façon à du bruit ?

Franciscus Corvinus

Ton exemple ne peux pas le montrer. Je dis simplement que pour détecter le bruit il faut voir un peu plus loin que le pixel voisin, ce que ton algorithme ne permet pas, alors qu'un algorithme qui a un rayon d'action de plus que 1 pixel va le permettre. Du coup tu risques d'introduire un contour la ou il ne devrait pas y en avoir.

FroggySeven

C'est intéressant de prendre en compte cette notion de bruit, mais pas sûr que ça fonctionne comme ça.

Effectivement, le bruit est à traiter AVANT une éventuelle interpolation.

Mais quel que soit l'algorithme d'interpolation, les valeurs des pixels à basse résolution se retrouvent ensuite aux mêmes endroits.