Liste de functions . Toutes les derivees,premiere,seconde,directionnel et calcul de gradient
pour faire du filtrage,lissage,debruitage d'images (tikonof ...) etc. J'ai codé les functions expliquees
dans le tuto traitement d'image de VBFrance.
S'il ya des erreurs faites m'en part. Je passe un tablo en reference c'est une copie de l'image depart.
A plus.
Source / Exemple :
' fonction graphique pour VB6 (calcul sur les fonctions) ref: debruitage*pdf a VBFrance / Tuto
'derivee premiere au point (x,y) Dx
Public Function dX(x As Double, y As Double, ByRef pax() As Double) As Double
Dim Tmp As Double
Tmp = (1 / 2) * (pax(x + 1, y) - pax(x - 1, y))
dX = Tmp
End Function
'derivee premiere au point (x,y) Dy
Public Function dY(x As Double, y As Double, ByRef pax() As Double) As Double
Dim Tmp As Double
Tmp = (1 / 2) * (pax(x, y + 1) - pax(x, y - 1))
dY = Tmp
End Function
'norme gradient
Public Function Ngradien(x As Double, y As Double, ByRef pax() As Double) As Double
Dim Tmp As Double
Tmp = Sqr((dX(x, y, pax) ^ 2) + (dY(x, y, pax) ^ 2))
Ngradien = Tmp
End Function
'derivee seconde dxx
Public Function Dxx(x As Double, y As Double, ByRef pax() As Double) As Double
Dim Tmp As Double
Tmp = pax(x + 1, y) - (2 * pax(x, y)) + pax(x - 1, y)
Dxx = Tmp
End Function
'derivee seconde dyy
Public Function Dyy(x As Double, y As Double, ByRef pax() As Double) As Double
Dim Tmp As Double
Tmp = pax(x, y + 1) - (2 * pax(x, y)) + pax(x, y - 1)
Dyy = Tmp
End Function
'derivee seconde x,y
Public Function Dxy(x As Double, y As Double, ByRef pax() As Double) As Double
Dim Tmp As Double
Tmp = (1 / 4) * (pax(x + 1, y + 1) - pax(x + 1, y - 1) - pax(x - 1, y + 1) + pax(x - 1, y - 1))
Dxy = Tmp
End Function
'derivee directonielle
'attention gerer le gradient nul ds les calculs
'sinon boulette.
'si normgrad= 0 alors suite:
Public Function Dnn(x As Double, y As Double, ByRef pax() As Double) As Double
Dim Tmp As Double
Dnn = 1 / (Ngradien(x, y, pax) ^ 2) * ((dX(x, y, pax) * Dxx(x, y, pax) + 2 * (dX(x, y, pax) * dY(x, y, pax) * Dxy(x, y, pax)) + (dY(x, y, pax) ^ 2) * Dyy(x, y, pax)))
End Function
Public Function Dntnt(x As Double, y As Double, ByRef pax() As Double) As Double
Dim Tmp As Double
Dntnt = 1 / (Ngradien(x, y, pax) ^ 2) * ((dX(x, y, pax) * Dxx(x, y, pax) - 2 * (dX(x, y, pax) * dY(x, y, pax) * Dxy(x, y, pax)) + (dY(x, y, pax) ^ 2) * Dyy(x, y, pax)))
End Function
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.