PhotoFiltre

Le forum officiel de PhotoFiltre
It is currently 18 Jun 2019 2:43

All times are UTC + 1 hour [ DST ]




Post new topic Reply to topic  [ 31 posts ]  Go to page 1, 2, 3  Next
Author Message
 Post subject: Matrice de convolution et Plugin Arithmétique.
PostPosted: 01 Jun 2011 10:58 
Offline
Administrateur
Administrateur(trice)|Administrateur|Administratrice
User avatar

Joined: 02 Feb 2005 10:35
Posts: 13461
Location: 54
Gender: Male
PhotoFiltre version: PF6 + 7 + Studio
Operating System: W10
Bonjour,

quelqu'un a-t-il une idée sur la façon d'utiliser une matrice de convolution, (équivalent de Filtre/Divers/Personnalisé)
dans une formule du module Arithmétique de Benjamin Fournier ?

_________________
Bien plus facile avec PhotoFiltre. Cordialement.
. . Image . . Image


Top
 Profile  
 
 Post subject: Re: Matrice de convolution et Plugin Arithmétique.
PostPosted: 01 Jul 2011 18:26 
Offline
Nouveau
Nouveau(elle)|Nouveau|Nouvelle

Joined: 09 Jun 2010 8:08
Posts: 34
Location: CLICHY LA GARENNE
Gender: Male
PhotoFiltre version: 10.7.1
Operating System: XP SP3 / Seven SP1
Processor: Intel 5 3400
RAM memory: 8 Go
Bonjour Tom,

j'ai retrouvé ces trois liens traitant des matrices de convolution.

http://docs.gimp.org/fr/plug-in-convmatrix.html
http://patrick.furon.free.fr/_traitementsignal/_cours_tns/_2d/_Convolution2D_1.html
http://tavmjong.free.fr/INKSCAPE/MANUAL_v14/html_fr/Filters-Pixel.html

j'espère seulement que ce ne sont pas des liens
trouvés dans l'une de tes nombreuse interventions !

En espérant que cela t'aidera.



Cordialement.


Dominique.


Top
 Profile  
 
 Post subject: Re: Matrice de convolution et Plugin Arithmétique.
PostPosted: 01 Jul 2011 19:20 
Offline
Administrateur
Administrateur(trice)|Administrateur|Administratrice
User avatar

Joined: 02 Feb 2005 10:35
Posts: 13461
Location: 54
Gender: Male
PhotoFiltre version: PF6 + 7 + Studio
Operating System: W10
Ah merci pour ces liens. On y trouve des infos très intéressantes. :)
Il est vrai que je n'ai pas beaucoup cherché des exemples de matrice, dans la mesure ou JCB nous en a proposé une liste
dont le lien se trouve avec la documentation au format chm.

En fait j'aurais voulu intégrer une matrice dans plusieurs traitements de simulation de fusion de calque,
qui fonctionnent dans le module Arithmétique, mais je n'ai aucune idée, ni sur la façon de coder la matrice
dans le langage spécifique de ce plugin, ni sur la façon de la reproduire sur la matrice que constitue l'image.

Mais ce n'est pas grave, je profiterai de tes liens de toutes façons, car j'ai noté quelques idées au passage. :)

_________________
Bien plus facile avec PhotoFiltre. Cordialement.
. . Image . . Image


Top
 Profile  
 
 Post subject: Re: Matrice de convolution et Plugin Arithmétique.
PostPosted: 05 Jul 2011 18:56 
Offline
Nouveau
Nouveau(elle)|Nouveau|Nouvelle

Joined: 09 Jun 2010 8:08
Posts: 34
Location: CLICHY LA GARENNE
Gender: Male
PhotoFiltre version: 10.7.1
Operating System: XP SP3 / Seven SP1
Processor: Intel 5 3400
RAM memory: 8 Go
Bonjour Tom,

je crois avoir une piste.

Par comparaison,

première étape : utilisation de : Filtre/Divers/Personalisé.
j'ai utilisé l'exemple plus de contraste avec la matrice suivante sur une image :
0 0 0 0 0
0 0 -1 0 0
0 -1 5 -1 0
0 0 -1 0 0
0 0 0 0 0

dans le module arithmétique j'obtiens exactement la même image en
utilisant les formules suivantes :
T1:scroll(I1,1,0)*(-1);
T2:scroll(I1,-1,0)*(-1);
T3:scroll(I1,0,1)*(-1);
T4:scroll(I1,0,-1)*(-1);
T5:I1*5;
T1+T2+T3+T4+T5 // resultat

Autant de scrolls d'image que de valeurs différentes de 0 autour du point central
avec dans le cas précis la multiplication par -1 pour respecter le signe.
La valeur T5 représente le centre de la matrice.
Résultat dernière ligne.
Ici la valeur du diviseur est de 1.


Même résultat avec l'effet de gravure Roberts

Matrice :
je ne représente que la matrice 3*3
les autres valeurs étant à 0
1 0 0
0 -1 0
0 0 0

Arithmétique :
T1:scroll(I1,1,1); // scroll de la valeur périphérique (1)
T2:I1*(-1); // multiplication de l'image par la valeur centrale
T1+T2 // résultat

j'espère que cela te sera utile.

Tiens nous au courant.

Cordialement.

Dominique


Top
 Profile  
 
 Post subject: Re: Matrice de convolution et Plugin Arithmétique.
PostPosted: 05 Jul 2011 19:31 
Offline
Nouveau
Nouveau(elle)|Nouveau|Nouvelle

Joined: 09 Jun 2010 8:08
Posts: 34
Location: CLICHY LA GARENNE
Gender: Male
PhotoFiltre version: 10.7.1
Operating System: XP SP3 / Seven SP1
Processor: Intel 5 3400
RAM memory: 8 Go
Rebonjour Tom,

Dans la précipitation, j'ai omis
un élément dans l'exemple Effet de Gravure "Roberts":

je me suis aperçu que j'avais oublié le décalage.


en arithmétique :
T1:scroll(I1,1,1);
T2:I1*(-1);
(T1+T2)+128

La matrice est donnée avec un diviseur de 1 et un décalage de 128.

Cela correspond avec l'exemple des effets de gravure "Roberts"


Cordialement.

Dominique


Top
 Profile  
 
 Post subject: Re: Matrice de convolution et Plugin Arithmétique.
PostPosted: 05 Jul 2011 20:00 
Offline
Nouveau
Nouveau(elle)|Nouveau|Nouvelle

Joined: 09 Jun 2010 8:08
Posts: 34
Location: CLICHY LA GARENNE
Gender: Male
PhotoFiltre version: 10.7.1
Operating System: XP SP3 / Seven SP1
Processor: Intel 5 3400
RAM memory: 8 Go
Bonjour Tom,

Un autre exemple

Reprenant la détection de contour de JCB
Laplacien de gaussienne ( c'est le titre de l'exemple proposé par JCB)

//Laplacien de gaussienne
// les lignes de la matrice sont traitees de gauche a droite et de haut en bas
//on traite unioquement les cases différentes de zéro
//Ligne 1 de la matrice
T1:scroll(I1,0,-2)*(-1);
//ligne 2 de la matrice
T2:scroll(I1,-1,-1)*(-1);
T3:scroll(I1,0,-1)*(-2);
T4:scroll(I1,1,-1)*(-1);
//ligne centrale de la matrice ligne 3
T5:scroll(I1,-2,0)*(-1);
T6:scroll(I1,-1,0)*(-2);
T7:scroll(I1,1,0)*(-2);
T8:scroll(I1,2,0)*(-1);
//ligne 4 de la matrice
T9:scroll(I1,-1,1)*(-1);
T10:scroll(I1,0,1)*(-2);
T11:scroll(I1,1,1)*(-1);
// ligne 5 de la matrice
T12:scroll(I1,0,2)*(-1);
//valeur centrale de la matrice
T13:I1*(16);
//Diviseur
D:1;
//Decalage
Dec:255;
//Resultat
((T1+T2+T3+T4+T5+T6+T7+T8+T9+T10+T11+T12+T13)/D)+Dec


Tous les essais que j'ai fait en comparaison du document de JCB sont concluants.


Cordialement.

Dominique


Top
 Profile  
 
 Post subject: Re: Matrice de convolution et Plugin Arithmétique.
PostPosted: 05 Jul 2011 20:04 
Offline
Administrateur
Administrateur(trice)|Administrateur|Administratrice
User avatar

Joined: 02 Feb 2005 10:35
Posts: 13461
Location: 54
Gender: Male
PhotoFiltre version: PF6 + 7 + Studio
Operating System: W10
Waouh !! :!: eh bé super, je n'aurais jamais imaginé trouver de solution avec la fonction scroll. :D
Bon... j'aime beaucoup les maths, mais je n'ai jamais pratiqué à ce niveau là d'abstraction.
Et pour tout dire, il va falloir que je digère l'info et que je fasse des manips bien concrètes pour essayer de comprendre...
parce qu'à la première lecture j'ai un peu de mal, mais je suis têtu et mon cervolant finira bien par en tirer quelque chose. :)

Donc mille mercis pour cette piste, d'autant que tu l'as testée. Sois certain que je te tiendrai au courant.

_________________
Bien plus facile avec PhotoFiltre. Cordialement.
. . Image . . Image


Top
 Profile  
 
 Post subject: Re: Matrice de convolution et Plugin Arithmétique.
PostPosted: 05 Jul 2011 21:41 
Offline
Nouveau
Nouveau(elle)|Nouveau|Nouvelle

Joined: 09 Jun 2010 8:08
Posts: 34
Location: CLICHY LA GARENNE
Gender: Male
PhotoFiltre version: 10.7.1
Operating System: XP SP3 / Seven SP1
Processor: Intel 5 3400
RAM memory: 8 Go
Bonjour Tom,

Un essai pour expliquer la démarche:



Dans la définition de JCB on trouve la remarque suivante:
"Une convolution est une fonction qui modifie chaque pixel par la somme pondérée des pixels voisins."


Ce que j'en ai compris:
on va raisonner sur une matrice 3*3. chaque pixel est numéroté de 1 à 9
1 2 3
4 5 6
7 8 9

chaque pixel à une valeur utilisée dans la matrice
valeurs des pixels (ces valeurs sont là uniquement pour la démonstration)
N° Pixel Valeur
1 : -1
2 : 2
3 : 3
4 : 1
5 : -3
6 : 1
7 : 0
8 : 3
9 : 4

la matrice utilisable se présentera de la manière suivante:
-1 2 3
1 -3 1
0 3 4
Chacune de ces valeurs sera utlisée comme multiplicateur pour chaque image.


Nous allons créer autant d'images que de pixels (soit 9 images)


Chaque image sera référencée T avec un indice de 1 à 9
nous aurons donc

Ligne supérieure de gauche à droite de la matrice
T1:I1*(-1) l'image multipliée par la valeur du pixel
T2:I1*(2)
T3:I1*(3)

ligne centrale élément de gauche
T4:I1*(1)

pixel central
T5:I1*(-3)

ligne centrale élément de droite
T6:I1*(1)

ligne inférieure de gauche à droite de la matrice
T7:I1*(0) on voit que cette valeur peut être ignorée
T8:I1*(3)
T9:I1*(4)

Nous avons créé nos 9 images en ayant utilisé les valeurs de chaque pixel comme multiplicateur.



Nous savons que la valeur définitive du pixel central est dépendante des valeurs des pixels périphériques.

la seule solution est de superposer les pixels périphériques au pixel central pour qu'il soit influencé par ces derniers.

Pour ce faire ilfaut donc décaler les images de manière à les superposer au pixel central
on procède donc au décalage de chaque image périphérique en utilisant la fonction scroll(Image,décalage horizontal, décalage vertical)
ligne supérieure (à noter que dans une matrice 5*5, la ligne supérieure à une coordonnée de -2)
T1:scroll(T1,-1,-1)
T2:scroll(T2,0,-1)
T3:scroll(T3,1,-1)

ligne cenrale élément gauche (à noter que dans une matrice 5*5, la colonne gauche à une coordonnée de -2)

T4:scroll(T4,-1,0)

ligne centrale élément droite (à noter que dans une matrice 5*5, la colonne droite à une coordonnée de 2)
T6:scroll(T6,1,0)

ligne inférieure (à noter que dans une matrice 5*5, la ligne inférieure à une coordonnée de 2)
T7:scroll(T7,-1,1)
T8:scroll(T8,0,1)
T9:scroll(T9,-1,1)

on remarquera que l'image centrale T5 n'est pas concernée par le scroll

il suffit maintenant d'additionner les images pour obtenir le resultat
Tresult:T1+T2+T3+T4+T5+T6+T7+T8+T9

si nécessaire on applique un diviseur et/ou un décalage
le résultat est donc:
((Tresult)/Diviseur)+Décalage


j'espère t'avoir éclairé un peu.


Cordialement.


Dominique


Edité pour correction 06/07/2011 00:30:00


Last edited by dve on 06 Jul 2011 0:30, edited 1 time in total.

Top
 Profile  
 
 Post subject: Re: Matrice de convolution et Plugin Arithmétique.
PostPosted: 05 Jul 2011 23:46 
Offline
Administrateur
Administrateur(trice)|Administrateur|Administratrice
User avatar

Joined: 02 Feb 2005 10:35
Posts: 13461
Location: 54
Gender: Male
PhotoFiltre version: PF6 + 7 + Studio
Operating System: W10
Merci de tous ces détails qui me font progresser,
je vais m'immerger dans ce processus à ma petite vitesse d'assimilation, et je te tiens au courant.
En tout cas j'ai fais quelques tests avec les formules que tu m'as données et le résultat est vraiment concluant.
Bigrement intéressant cette affaire. :)

_________________
Bien plus facile avec PhotoFiltre. Cordialement.
. . Image . . Image


Top
 Profile  
 
 Post subject: Re: Matrice de convolution et Plugin Arithmétique.
PostPosted: 06 Jul 2011 0:16 
Offline
Administrateur
Administrateur(trice)|Administrateur|Administratrice
User avatar

Joined: 02 Feb 2005 10:35
Posts: 13461
Location: 54
Gender: Male
PhotoFiltre version: PF6 + 7 + Studio
Operating System: W10
Bon ça va il me reste encore deux neurones en état de fonctionner. :)
Je crois avoir compris la notion de scroll et j'ai essayé de l'appliquer à la formule de Renforcement (2) :
-1 -1 -1
-1 9 -1
-1 -1 -1

et j'obtiens : EDIT 06/07/2011 16:23 modif du sens de décalage même si la matrice est symétrique
//Renforcement (2)
//ligne 2 de la matrice
T1:scroll(I1,1,1)*(-1);
T2:scroll(I1,0,1)*(-1);
T3:scroll(I1,-1,1)*(-1);
//ligne centrale de la matrice ligne 3
T4:scroll(I1,1,0)*(-1);
T5:scroll(I1,-1,0)*(-1);
//ligne 4 de la matrice
T6:scroll(I1,1,-1)*(-1);
T7:scroll(I1,0,-1)*(-1);
T8:scroll(I1,-1,-1)*(-1);
//valeur centrale de la matrice
T9:I1*(9);
//Diviseur
D:1;
//Decalage
Dec:0;
//Resultat
((T1+T2+T3+T4+T5+T6+T7+T8+T9)/D)+Dec

ce qui me donne bien le rendu de la planche de Jean-Claude Bulot.

Un grand merci à toi Dominique, et encore un grand merci à Jean-Claude dont les travaux nous aident bien encore dans cette affaire. :clap: :clap: :clap:

_________________
Bien plus facile avec PhotoFiltre. Cordialement.
. . Image . . Image


Top
 Profile  
 
 Post subject: Re: Matrice de convolution et Plugin Arithmétique.
PostPosted: 06 Jul 2011 8:36 
Offline
Nouveau
Nouveau(elle)|Nouveau|Nouvelle

Joined: 09 Jun 2010 8:08
Posts: 34
Location: CLICHY LA GARENNE
Gender: Male
PhotoFiltre version: 10.7.1
Operating System: XP SP3 / Seven SP1
Processor: Intel 5 3400
RAM memory: 8 Go
Bonjour Tom;

Eh bien, content d'avoir pu t'aider.
En général c'est toi qui nous aide !
Juste retour !!!



Un petit correctif par rapport aux coordonnées utilisées dans la fonction scroll :

Si l'on considère que l'élément central de la matrice (élément de référence)
a pour coordonnées x=0 et y=0
les coordonnées des autres pixel sont déduites à partir des coordonnées de ce point 0.
soit:
-y
-x 0 +x
+y

Ce qui donne la matrice de coordonnées suivantes pour une matrice 5*5.
Les coordonnées de chaque point étant représentées par
valeur de x,valeur de y

Code:
   A   B   C   D   E
1   -2,-2   -1,-2   0,-2   1,-2   2,-2
2   -2,-1   -1,-1   0,-1   1,-1   2,-1
3   -2,0   -1,0   0,0   1,0   2,0
4   -2,1   -1,1   0,1   1,1   2,1
5   -2,2   -1,2   0,2   1,2   2,2


On voit que pour superposer le pixel de la colonne A ligne 1
au pixel de coordonnées 0,0 colonne C ligne 3,
il faut décaler de +2 en horizontal (x)
et +2 en vertical (y).
Soit la formule : scroll(I1,2,2)

De même pour le pixel situé en B4,
il faut décaler de +1 en horizontal (x)
et -1 en vertical (y).
Soit la formule : scroll(I1,1,-1)

En fait j'avais directement utilisé les valeurs des coordonnées
dans les formules de scroll que je t'avais communiqué
ce qui inversait complètement les scrolls


A partir de la matrice précédente, on peut déduire les valeurs à utiliser dans les formules
de scroll en fonction des positions des pixels.
à savoir :

Code:
   A   B   C   D   E
1   2,2   1,2   0,2   -1,2   -2,2
2   2,1   1,1   0,1   -1,1   -2,1
3   2,0   1,0   0,0   -1,0   -2,0
4   2,-1   1,-1   0,-1   -1,-1   -2,-1
5   2,-2   1,-2   0,-2   -1,-2   -2,-2


si l'on superpose les deux matrices
et que l'on aditionne les valeurs
cellule par cellule,
on s'apercoit que les résultat de chaque cellule est 0,0si ce n'est pas le cas c'est que j'ai fait une erreur de valeur quelque part.



Avantages et inconvénients de l'utilisation du module arithmétique :
AVANTAGES
- avoir une matrice qui n'est pas limitée à 5*5.
on peut penser à des matrices 7*7, 9*9 ...
A voir après si c'est utile.
- Le point de référence 0,0 n'est pas obligatoirement central.
- on peut envisager des matrices totalement assymétriques :
Code:
   A   B   C   D   
1   2,2   1,2   0,2   -1,2   
2   2,1   1,1   0,1   -1,1   
3   2,0   1,0   0,0   -1,0   

A voir également si c'est utile

INCONVENIENTS
L'inconvénient que j'ai identifié est que le système risque
d'être gourmand en ressources.
En effet, on construit autant d'images intermédiaires que de pixels
dont la valeur est différente de 0.
Alors que je suppose que le filtre personalisé utilise
d'autres techniques permettant d'optimiser
la sollicitation des ressources.


Voila.
Nous avons par ce biais tranféré le fonctionnement du filtre personalisé
au module arithmétique.


Toutefois, pour ma part, j'aimerais comprendre
pourquoi telle ou telle matrice donne tel résultat (beaucoup de tels la dedans !)
Appliquer les matrices de JCB est une chose,
mais pourquoi les valeurs positionnées
comme dans les exemples donnent ces résultats ?

Si tu as la réponse je suis preneur.
Sinon JCB peut peut-être nous éclairer.



Cordialement.


Dominique


Top
 Profile  
 
 Post subject: Re: Matrice de convolution et Plugin Arithmétique.
PostPosted: 06 Jul 2011 11:08 
Offline
Administrateur
Administrateur(trice)|Administrateur|Administratrice
User avatar

Joined: 02 Feb 2005 10:35
Posts: 13461
Location: 54
Gender: Male
PhotoFiltre version: PF6 + 7 + Studio
Operating System: W10
Ah... ??? alors donc si j'ai bien compris, pour être orthodoxe, (surtout quand la matrice n'est pas symétrique)
il faut utiliser la deuxième matrice de décalage pour paramétrer le scroll ?

Je n'ai pas tout assimilé, donc pourquoi pas, mais il ne semble pas que ce soit la logique décrite par l'auteur du plugin Arithmétique :
Code:
Scroll(x, dx, dy): Permet de décaler l'image d'un certains nombre de pixels... Ce qui disparait d'un coté réapparait de l'autre
                   dx indique le décalage horizontal (négatif = à gauche, positif = à droite)
                   dy indique le décalage vertical (négatif = en haut, positif = en bas)
                   A noter que le décalage n'est pas obligatoirement le même pour tous les points ou les composantes de l'images.

Pour les autres questions concernant les effets de tel ou tel paramètres, ça dépasse largement mes connaissances actuelles.
Bon je te laisse j'ai plusieurs trucs à régler. A+

_________________
Bien plus facile avec PhotoFiltre. Cordialement.
. . Image . . Image


Top
 Profile  
 
 Post subject: Re: Matrice de convolution et Plugin Arithmétique.
PostPosted: 06 Jul 2011 16:22 
Offline
Administrateur
Administrateur(trice)|Administrateur|Administratrice
User avatar

Joined: 02 Feb 2005 10:35
Posts: 13461
Location: 54
Gender: Male
PhotoFiltre version: PF6 + 7 + Studio
Operating System: W10
Oui OK, bien vu, je retire ma remarque, tu as raison : => il faut appliquer la deuxième matrice de décalage pour paramétrer le scroll

Il suffit de faire l'essai avec une matrice non symétrique comme celle de la Gravure Roberts pour s'apercevoir du sens à donner
au décalage, sinon on inverse les pleins et les creux de la gravure.
Donc je vais modifier ma matrice de renforcement pour n'induire personne en erreur.
Merci de cette rectification.

_________________
Bien plus facile avec PhotoFiltre. Cordialement.
. . Image . . Image


Top
 Profile  
 
 Post subject: Re: Matrice de convolution et Plugin Arithmétique.
PostPosted: 06 Jul 2011 19:44 
Offline
Nouveau
Nouveau(elle)|Nouveau|Nouvelle

Joined: 09 Jun 2010 8:08
Posts: 34
Location: CLICHY LA GARENNE
Gender: Male
PhotoFiltre version: 10.7.1
Operating System: XP SP3 / Seven SP1
Processor: Intel 5 3400
RAM memory: 8 Go
C'est vrai que ce n'était pas facile à expliquer !

J'attends les résultats avec impatience.

Cordialement.

Dominique


Top
 Profile  
 
 Post subject: Re: Matrice de convolution et Plugin Arithmétique.
PostPosted: 06 Jul 2011 23:49 
Offline
Modérateur
Modérateur(trice)|Modérateur|Modératrice
User avatar

Joined: 10 Feb 2004 20:36
Posts: 2957
Location: LILLE
Gender: Male
PhotoFiltre version: PF v7.2.1 - PFS v10.13.1
Operating System: Windows 10 Home 64bits
Processor: Intel inside Pentium
RAM memory: 4 GB
Bonsoir, :)

dve wrote:
Si tu as la réponse je suis preneur.
Sinon JCB peut peut-être nous éclairer.

J'ai seulement fait le tour de pas mal de sites qui parlent des circonvolutions dans le domaine de la photographie.
Mais le niveau de mathématique, utilisé dans les descriptions, est un peu haut pour moi. :cry:

J'ai seulement recensé les matrices qui pouvaient être intéressantes dans PFS. :wink:

_________________
Image


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 31 posts ]  Go to page 1, 2, 3  Next

All times are UTC + 1 hour [ DST ]


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group