Débruitage par seuillage en ondelettes
Résolu/Fermé
tchichik
Messages postés
2
Date d'inscription
dimanche 11 décembre 2011
Statut
Membre
Dernière intervention
12 décembre 2011
-
11 déc. 2011 à 21:11
tchichik - 6 mars 2012 à 21:48
tchichik - 6 mars 2012 à 21:48
3 réponses
SALUT :)
j'ai arrivé a trouvé mon ondelette adéquate ci joint mon code
mon code est exécutable mais l'affichage des images n'est pas en niveau de gris
autre chose il me donne les axes (des x et des y) numérotés.
Alors comment je peux avoir un affichage en Niveau de gris et les axes non numérotés?
Merci d'avance.
j'ai arrivé a trouvé mon ondelette adéquate ci joint mon code
%Load original image. X=imread(['base_originale\I' num2str(2) '.jpg']); X=rgb2gray(X); X=double(X); % Generate noisy image. sigma =0.1 * ( max(max(X))-min(min(X)) ); x = X + sigma*randn(size(X)); % Find default values. In this case fixed form threshold % is used with estimation of level noise, thresholding % mode is soft and the approximation coefficients are % kept. [thr,sorh,keepapp] = ddencmp('den','wv',x); % De-noise image using global thresholding option. xd = wdencmp('gbl',x,'Coif4',1,i,sorh,keepapp); %figure,image(wcodemat(X)), title('Original Image'); %figure,image(wcodemat(xd)), title('De-Noised Image'); colormap(pink(255)), sm = size(X,1); subplot(221), image(wcodemat(X,sm)), title('Original Image') subplot(222), image(wcodemat(x,sm)), title('Noisy Image') subplot(223), image(wcodemat(xd,sm)), title('De-Noised Image')
mon code est exécutable mais l'affichage des images n'est pas en niveau de gris
autre chose il me donne les axes (des x et des y) numérotés.
Alors comment je peux avoir un affichage en Niveau de gris et les axes non numérotés?
Merci d'avance.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
12 déc. 2011 à 09:57
12 déc. 2011 à 09:57
Salut.
Je pense que ton erreur vient de l'utilisation des min et des max. Ces fonction retournent des vecteurs lorsque tu fournis des matrices.
Or, j'ai l'impression que tu veux que sigma soit un réel. De même, es tu sur que ton image est carré ?
Je pense que ton erreur vient de l'utilisation des min et des max. Ces fonction retournent des vecteurs lorsque tu fournis des matrices.
Or, j'ai l'impression que tu veux que sigma soit un réel. De même, es tu sur que ton image est carré ?
salut,
merci pour la réponse,
pour moi je cherche o faire bruité mes images par un bruit gaussien de variance variable par exemple sigma=10, 20 ou 3O puis appliqué les ondelettes en matière de débruitage tel que les ondelettes de symlet, de coifflet, de daubechies orthogonales et biorthogonale.
Pour mon image je vous ai fournie sa dimension (105, 71), elle doit etre 256 256 par exemple??
de toute facon je serais reconnaissante si vous me répondez encore une fois pour fixer d'ou vient l'erreur exactement ou si vous me prososez une autre mthode pour ce faire.
Merci
merci pour la réponse,
pour moi je cherche o faire bruité mes images par un bruit gaussien de variance variable par exemple sigma=10, 20 ou 3O puis appliqué les ondelettes en matière de débruitage tel que les ondelettes de symlet, de coifflet, de daubechies orthogonales et biorthogonale.
Pour mon image je vous ai fournie sa dimension (105, 71), elle doit etre 256 256 par exemple??
de toute facon je serais reconnaissante si vous me répondez encore une fois pour fixer d'ou vient l'erreur exactement ou si vous me prososez une autre mthode pour ce faire.
Merci
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
12 déc. 2011 à 12:29
12 déc. 2011 à 12:29
déjà il y a le problème des min max.
ensuite, il y a le problème du randn.
Là tu dit que ta matrice In c'est la matrice I plus sigma fois randn(n). Or randn te renvoi une matrice de n*n, et tu ne peux pas additionner des matrices qui ont des tailles différentes ! il faut donc dimensionné correctement ta matrice de nombres aléatoires. Essai ça :
si sigma est bien un scalaire, il ne devrait pas y avoir de souci.
ensuite, il y a le problème du randn.
In = I + sigma*randn(n);
Là tu dit que ta matrice In c'est la matrice I plus sigma fois randn(n). Or randn te renvoi une matrice de n*n, et tu ne peux pas additionner des matrices qui ont des tailles différentes ! il faut donc dimensionné correctement ta matrice de nombres aléatoires. Essai ça :
m=size(I,2); In = I + sigma*randn(n,m);
si sigma est bien un scalaire, il ne devrait pas y avoir de souci.
tchichik
Messages postés
2
Date d'inscription
dimanche 11 décembre 2011
Statut
Membre
Dernière intervention
12 décembre 2011
12 déc. 2011 à 19:51
12 déc. 2011 à 19:51
salut,
j'ai l'essayé mais j'ai obtenu la meme erreur :
??? Error using ==> sigma at 81
Not enough input arguments.
Error in ==> debruitond at 7
In = I + sigma*randn(n,m);
j'ai essayé de faire l'instruction suivante
In = I + 10*randn(size(I));
j'ai obtenu l'image originale avec celle bruité par un bruit gaussien, mais les détails de l'image obtenue(bruité) sont disparus totalement comparé à sa version originale, mais quand je prend une petite valeur de l'ordre de 0.1 ou 0.2
je peux visualiser le bruit ajouté et à partir de de la valeur 0.3 l'image devient trop bruité.
et j'ai eu une erreur au niveau du code de la Transformée en ondelettes orthogonale 2D:
??? Undefined function or variable 'Jmin'.
Error in ==> debruitond at 17
Iw = FWT2_PO(I,Jmin,qmf);
Pouvez vous me dire si l'instruction d'ajout de bruit: In = I + sigma*randn(n,m);
est valide ou pas càd que je peux la retenir dans la suite .
d'ou viens l'erreur pour la fonction de débruitage.
Merci.
j'ai l'essayé mais j'ai obtenu la meme erreur :
??? Error using ==> sigma at 81
Not enough input arguments.
Error in ==> debruitond at 7
In = I + sigma*randn(n,m);
j'ai essayé de faire l'instruction suivante
In = I + 10*randn(size(I));
j'ai obtenu l'image originale avec celle bruité par un bruit gaussien, mais les détails de l'image obtenue(bruité) sont disparus totalement comparé à sa version originale, mais quand je prend une petite valeur de l'ordre de 0.1 ou 0.2
je peux visualiser le bruit ajouté et à partir de de la valeur 0.3 l'image devient trop bruité.
et j'ai eu une erreur au niveau du code de la Transformée en ondelettes orthogonale 2D:
??? Undefined function or variable 'Jmin'.
Error in ==> debruitond at 17
Iw = FWT2_PO(I,Jmin,qmf);
Pouvez vous me dire si l'instruction d'ajout de bruit: In = I + sigma*randn(n,m);
est valide ou pas càd que je peux la retenir dans la suite .
d'ou viens l'erreur pour la fonction de débruitage.
Merci.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
13 déc. 2011 à 08:16
13 déc. 2011 à 08:16
As tu vérifier la dimension de sigma ? Pour moi le problème vient de là, de ta mauvaise utilisation des min et des max (je te l'ai déjà dit, deux fois, mais tu ne m'a pas fais de retour).
Pour tes ondelettes, je ne connais pas ces fonctions, donc je ne serai te dire. Mais le message d'erreur est explicite : il attend un Jmin avec quelque chose dedans.
Pour tes ondelettes, je ne connais pas ces fonctions, donc je ne serai te dire. Mais le message d'erreur est explicite : il attend un Jmin avec quelque chose dedans.
Bonjour,
Au début j'ai utilisé le code
sigma = 0.06 * (max(I()-min(I());
In = I + sigma*randn(n);
Mais j'aurais des problèmes avec les min et les max, alors j'ai changé la valeur de sigma en utilisant l'instruction suivante tout cours :
In = I + 0.1*randn(size(I));
Dans ce cas sigma vaut 0.1, ca marche comme j'avais dis mais quand je prend une valeur de sigma supérieur à 0.3 par exemple l'image sera trop bruité.
Pouvez vous me proposez un code matlab qui permet d'ajouter un bruit gaussien de variance variable par exemple sigma=10, 20 ou 3O puis faire appliqué les ondelettes en matière de débruitage tel que les ondelettes de symlet, de coifflet, de daubechies orthogonales et biorthogonale?
Merci pour votre aide.
Au début j'ai utilisé le code
sigma = 0.06 * (max(I()-min(I());
In = I + sigma*randn(n);
Mais j'aurais des problèmes avec les min et les max, alors j'ai changé la valeur de sigma en utilisant l'instruction suivante tout cours :
In = I + 0.1*randn(size(I));
Dans ce cas sigma vaut 0.1, ca marche comme j'avais dis mais quand je prend une valeur de sigma supérieur à 0.3 par exemple l'image sera trop bruité.
Pouvez vous me proposez un code matlab qui permet d'ajouter un bruit gaussien de variance variable par exemple sigma=10, 20 ou 3O puis faire appliqué les ondelettes en matière de débruitage tel que les ondelettes de symlet, de coifflet, de daubechies orthogonales et biorthogonale?
Merci pour votre aide.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
13 déc. 2011 à 08:42
13 déc. 2011 à 08:42
T'es un boulet. Je t'ai expliqué dans le premier message comment utiliser les min et max. max d'une matrice te donne un vecteur, max d'un vecteur te donne un scalaire. Donc :
sigma = 0.06 * ( max(max(I))-min(min(I)) );
sigma = 0.06 * ( max(max(I))-min(min(I)) );
29 déc. 2011 à 11:20
29 déc. 2011 à 19:20
29 déc. 2011 à 21:52
6 mars 2012 à 21:48
SVP j'ai besoin du code matlab pour la décompositionn en curvelet.
je serais reconnaissante si vous pouvez m'aidé
Mercii d'avance.