Débruitage par seuillage en ondelettes
Résolu
tchichik
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
tchichik -
tchichik -
Bonjour,
salut à tous
mon objectif est d'appliquer la transformation en ondelettes sur l'image bruité, ensuite appliquer l'opération de seuillage,
ci-aprés mon code en matlab:
clear all;close all;clc;
%Charger et bruiter une image
C1=double(imread('C:\Users\user\Desktop\ACTIVITEMULTI\activité_1.jpg'));
I=rgb2gray(C1/255);
n = size(I,1);
sigma = 0.06 * (max(I()-min(I());
In = I + sigma*randn(n);
subplot(1,2,1);
imagesc(I); axis image; axis off;
subplot(1,2,2);
imagesc(In); axis image; axis off;
colormap gray(256);
%Transformée en ondelettes orthogonale 2D et seuillage
% Transformée en ondelettes 2D
Iw = FWT2_PO(I,Jmin,qmf);
IwT = Iw; IwT = Iw .* (abs(Iw)>T);
I_ond = IWT2_PO(IwT,Jmin,qmf); % transformée inverse
% dessines des transformée originale et seuillées
subplot(1,2,1);
plot_wavelet(Iw, Jmin); colormap gray(256);
subplot(1,2,2);
plot_wavelet(IwT, Jmin); colormap gray(256);
Mais je n'arrive pas à simuler mon code j'obtiens l'erreur suivante:
??? Error using ==> plus
Matrix dimensions must agree.
Error in ==> debruitond at 7
In = I + sigma*randn(n);
j'essaye de terminer la taille de mon image I en tapant size(I)
ans =
105 71
JE serais reconnaissante si quelqu'un peux me déterminer l'erreur.
salut à tous
mon objectif est d'appliquer la transformation en ondelettes sur l'image bruité, ensuite appliquer l'opération de seuillage,
ci-aprés mon code en matlab:
clear all;close all;clc;
%Charger et bruiter une image
C1=double(imread('C:\Users\user\Desktop\ACTIVITEMULTI\activité_1.jpg'));
I=rgb2gray(C1/255);
n = size(I,1);
sigma = 0.06 * (max(I()-min(I());
In = I + sigma*randn(n);
subplot(1,2,1);
imagesc(I); axis image; axis off;
subplot(1,2,2);
imagesc(In); axis image; axis off;
colormap gray(256);
%Transformée en ondelettes orthogonale 2D et seuillage
% Transformée en ondelettes 2D
Iw = FWT2_PO(I,Jmin,qmf);
IwT = Iw; IwT = Iw .* (abs(Iw)>T);
I_ond = IWT2_PO(IwT,Jmin,qmf); % transformée inverse
% dessines des transformée originale et seuillées
subplot(1,2,1);
plot_wavelet(Iw, Jmin); colormap gray(256);
subplot(1,2,2);
plot_wavelet(IwT, Jmin); colormap gray(256);
Mais je n'arrive pas à simuler mon code j'obtiens l'erreur suivante:
??? Error using ==> plus
Matrix dimensions must agree.
Error in ==> debruitond at 7
In = I + sigma*randn(n);
j'essaye de terminer la taille de mon image I en tapant size(I)
ans =
105 71
JE serais reconnaissante si quelqu'un peux me déterminer l'erreur.
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.
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
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.
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.
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.
SVP j'ai besoin du code matlab pour la décompositionn en curvelet.
je serais reconnaissante si vous pouvez m'aidé
Mercii d'avance.