Filtre de Gabor 3D

Aide à la résolution d'exercices ou de problèmes de niveau Supérieur.

Modérateur: gdm_aidesco

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser le mode LaTeX (voir ici) afin de rendre vos formules plus lisibles.
> Ne poster qu'un exercice (ou problème) par sujet et indiquer son niveau précis dans le titre du message.

Filtre de Gabor 3D

Messagepar FiReTiTi » Mercredi 10 Décembre 2014, 08:05

Bonjour,

je fais du traitement d'image et j'utilise le filtre de Gabor en 2D dimensions depuis fort longtemps et ça fonctionne très bien. C'est un filtre basé sur une gaussienne qui oscille autour de 0 en décroissant lorsque l'on s'éloigne de l'origine. Voir ici pour les curieux : http://en.wikipedia.org/wiki/Gabor_filter.
J'aimerai maintenant l'utiliser en 3D, mais j'ai des soucis avec la transformation des équations en 3D.

Pour un filtre de Gabor 2D classique, on créera un masque de la façon suivante (code MatLb/Octave), avec theta l'angle de rotation :
Code: Tout sélectionner
function gb=gabor_fn(sigma,theta,lambda,psi,gamma)
 
sigma_x = sigma;
sigma_y = sigma/gamma;
 
% Bounding box
nstds = 3;
xmax = max(abs(nstds*sigma_x*cos(theta)),abs(nstds*sigma_y*sin(theta)));
xmax = ceil(max(1,xmax));
ymax = max(abs(nstds*sigma_x*sin(theta)),abs(nstds*sigma_y*cos(theta)));
ymax = ceil(max(1,ymax));
xmin = -xmax; ymin = -ymax;
[x,y] = meshgrid(xmin:xmax,ymin:ymax);
 
% Rotation
x_theta=x*cos(theta)+y*sin(theta);
y_theta=-x*sin(theta)+y*cos(theta);
 
gb= exp(-.5*(x_theta.^2/sigma_x^2+y_theta.^2/sigma_y^2)).*cos(2*pi/lambda*x_theta+psi);


En 3D, modifier la "Bounding Box" ainsi que le contenu de l'exponentielle est facile.
Par contre, je sèche pour la modification du cosinus :
Code: Tout sélectionner
...
% Rotation
x_thetaphi=x*cos(theta)*cos(phi)+y*sin(theta)+z*cos(theta)*sin(phi);
y_thetaphi=-x*sin(theta)*cos(phi)+y*cos(theta)+z*sin(theta)*sin(phi);
z_thetaphi=-x*sin(phi)+z*cos(phi)
 
gb= exp(-.5*(x_thetaphi.^2/sigma_x^2+y_thetaphi.^2/sigma_y^2+z_thetaphi.^2/sigma_z^2)).*cos(??2*pi/lambda*x_theta??+psi);

Le deuxième angle de rotation (autour de Y) étant phi.
Je devine que le "+psi" ne change pas.
En revanche, je ne sais pas comment modifier l'autre partie.

Est ce que quelqu'un pourrait m'éclairer svp ?
FiReTiTi
FiReTiTi
Hecto-utilisateur
 
Messages: 63
Inscription: Mercredi 26 Juillet 2006, 12:49
Localisation: Portland, OR, USA
Statut actuel: Actif et salarié

Publicité

Retourner vers Exercices et problèmes : Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum: Yahoo [Bot] et 2 invités