Salut à tous...
J'ai une image, dégradée, et j'ai l'image originale. Ma question est simple, peut-on retrouver la matrice ayant dégradée l'image originale ?
Merci d'avance de votre réponse
Salut à tous...
J'ai une image, dégradée, et j'ai l'image originale. Ma question est simple, peut-on retrouver la matrice ayant dégradée l'image originale ?
Merci d'avance de votre réponse
Tu peux regarder à:
Déconvolution
Déconvolution et chaine de markov
Filtre de Wiener je pense que ton cas c'est le plus adapté....
Au fait au vu de tes précédents postes c'est pour un "deblocking filter"?
C'est vrai que tu as les 2 images, donc tu peux faire une transformée de Fourier sur les 2 car Y = H * X - l'image d'arrivée est la convolution de H et de l'image originale -, donc fY = fH fX - multiplication - et ça, c'est "assez" facile à récupérer
Disons que le filtre de Wiener était l'idée première que j'avais !
Oui, en quelque sorte c'est pour un "deblocking filter", en fait, c'est pour améliorer une image qui contient des lignes rouges/bleues après numérisation.
Le truc, c'est que j'essaie de trouver une matrice de correction, mais je crois que je vais devoir tâtonner...
La TF, ouep, pourquoi pas, mais en dernier ressort
Pour Wiener j'ai un lien pas mal:
http://www4.utc.fr/~bm06/cours/5-filwien.pdf
Sinon, on ne peut jamais se ramener à une déconvolution brute, ce serait considerer que la transformée de l'image de départ ne s'annule jamais.
On se raméne en théorie toujours à un probléme de minimisation,
on cherche f telque MIN(|conv(f,i)-j|²) sur le plan spatial <=> MIN(|F*I-J|²) sur le plan fréquentiel.
Si le bruit est nul et que la matrice de convolution est correcte, on peut.
Miles Peux-tu me donner plus de précision sur les conditions à poser sur f ça peut m'intéresser.
Moi j'en suis rester à:
et du coup reformuler le probléme sous forme de minimisation.//i image de départ
//f ton filtre
//j ton image bruitée
conv(f,i) = j en fréquence F*I = J
en considérant que I ne s'annule jamais F = J/I tu es obligé de poser E (epsilon), tel que E + I <> 0 , tu as F = J/(I+E).
Dans un autre post, je me suis dit qu'il fallait que je réfléchisse un peu plus parfois, donc je sors, et je reviens
Bon, naturellement, tu as raison, c'est pas sur F la condition
Du coup, j'ai une autre question, annexe, qui ne mérite probablement pas d'ouvrir une discussion...
Comment mesurer objectivement la qualité d'une image ?
Je sais qu'on peut le faire avec le rapport signal/bruit, mais pour cela, il faut avoir l'image sans bruit/déformation.
Y a-t-il une autre mesure ?
La qualité d'une image ? Déjà là, c'est subjectif
Il faut avoir un critère, le rapport signal/bruit en est un.
Disons, détecter de la distortion par exemple ?
Le plus dur, c'est de trouver des critères!!!!
Certains critère simples donnent de bons résultats : l'histogramme
* son étalement
* ses variations d'amplitude...
Pour le bruit,
Certains bruits sont irréversibles : poivre et sel, filtrage médian... Donc c'est très difficile de remonter à la matrice!
Compliqué aussi, comment tu définis un degré de distortion ?Envoyé par progfou
Ce qui m'intéresse, dans un deuxième temps, c'est d'exploiter une image, retouchée de manière automatique pour éliminer des lignes gênantes (cf. un post je ne sais plus où dans le forum algo ), et vérifier, de manière automatique, qu'elle est visuellement acceptable.
Si je fais l'intercorrélation entre l'image d'origine et l'image retouchée, quelle information j'obtiens ?
Franchement??? Rien du tout !Envoyé par progfou
Sans connaissance en traitement du signal, ça va être difficile d'obtenir ce que tu veux...
Surtout que tu t'attaques pas au plus simple!
J'ai des connaissances, mais en 1D surtout.
Si j'en avais pas, je ne parlerais pas de corrélation .
Je demande, ça m'évite de partir sur un truc qui sert à rien .
Mais bon, ça ne résoud pas mon problème...
La corrélation ne va te donner qu'une information du type est-ce que les 2 images sont proches.
Ouep, c'est ce que je pense aussi, mais comme l'image de départ a juste des trucs "en trop", ça me permet de savoir si j'en suis loin...
Et je je "floute" l'image obtenue après traitement, je sais qu'elle est presque meilleure.
Mais bon, c'est flou .
Est-ce que je peux me rapprocher de l'image "optimale" en utilisant ça ?
En gros, l'image qui est entre l'image "juste" traitée et l'image traitée et floue ?
J'essaie de m'expliquer, mais ce n'est pas simple...
En 1D, celà marcherait!!!!
Le problème est comme tu le dis en 2D. Là ça va rien donner...
Pourquoi? Parce que si ton image est en 8bits, tu vas trouver un produit sur toute l'image pour chaque pixel...
A moins d'avoir fai tun seuillage avant, pour que les valeurs soient 0 ou 1, ça ne marchera pas...
Si tu fais une autocorrélation entre deux images seuillées, tu vas trouver un pic à la valeur max en (0,0) (ou au centre de l'image ça dépend), et le reste va rester faible (ça dépend encore de l'image, car le produit d'une image par son image décalée n'est généralement pas 0). Autrement dit, tu n'as pas de relation d 'indépendance entre tes pixels!
Faire une différence entre la somme de tous les pixels d'une autocorrélation et la somme de tous les pixels d'une intercoorélation te donnera peut être quelque chose, mais j'ai jamais éssayé!!!!
Ben en fait nonEnvoyé par Miles
Moi aussi je pensais ça, mais c'est pas vrai en 2D...
Si tu fais une corrélation entre une image blanche (255 partout en 8bits) et ton image de départ, tu vas trouver une très grande valeur de pic...
Ce qu'il faut voir aussi, c'est la décroissance du pic (vers le dirac...).
Celà dit, l'intercorrélation peut fournir quelques explications
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager