8
votes

Pourquoi le filtre de journal renvoie-t-il l'image de fond noir?

J'avais prise de co-relation de l'image avec le filtre de journal via la commande iMfilter. xxx

image:

 Entrez la description de l'image ici


10 commentaires

Nous montre un code et des résultats! J'aimerais pouvoir comprendre un processus d'image entier gproblème avec une seule ligne :(. Cependant, votre image uint8 ou double?


Impossible de poster des images: / à cause de la traîne de 10 points ou de 10 points, mais le code exemple est comme suit z = iMfilter (i, fspecial ("log", 11,1.5)); % I est l'image 11 est la taille du masque et 1,5 est la valeur de la valeur de Sigma, Imshow (Z);


Téléchargez-le quelque part et je posterai le lien. Je vais le mettre


essayer: z = imfilter (double (i) ./ 255, fspecial ("log", 11,1.5)); Figure Imshow (x);


S27.POSTIMG.ORG/UCTR8EOPF/LOG_FILTERD_IMAGE.jpg


Note mineure: Ce serait imshow (z) non?


S'il vous plaît, modifiez votre question avec les informations. De plus, je voulais que vous postiez l'image d'origine. Nous savons comment une image noire est


L'image originale était: S30.POSTIMG.ORG/DG7E0FJFL/WHEEL.PNG


Oui, c'est vraiment imshow (z).


Comment diable cette question a-t-elle eu 10 upvotes? (10 UPVOTES / 3 Downvotes = +7 Total). Avez-vous un tas de comptes de marionnettes chaussettes pour gonfler votre réputation?


3 Réponses :


3
votes

Le problème que vous avez est que vous ne montrez pas le résultat correctement.

Votre résultat est dans la plage 0-31, mais vous devez le convertir en 0-255 pour le tracer!

faire xxx

Entrez la description de l'image ici


5 commentaires

Pourquoi le résultat est-il dans la plage 0-31?


Parce que vous appliquez un filtre de journal et que le filtre ne normalise pas le résultat.


@Anderbiguri - Vous pouvez également faire imshow (z, []) , ce qui contraste normaliser les résultats d'affichage lorsque les valeurs minimales et maximales correspondaient à [0,1] . Sinon, bon endroit!


Conversion de l'image au double de l'unité par défaut8 résoudra également le problème.


@ M.Zaman Vous devez faire attention à la conversion en double. Faire simplement double (z) ; Ne résoudra pas le problème car vous aurez des valeurs qui sont au-delà de 1 et satiseront l'image lorsque vous essayez de l'afficher. Pensez à utiliser im2double au lieu de contraster normaliser les intensités à [0,1] .



4
votes

convertir l'image en double (double précision) résoudra le problème car Imread Commande a pris l'image dans l'unité par défaut de l'unité 8 (non signé INT).


3 commentaires

Je envisagerais d'utiliser im2double au lieu de simplement lancer comme double comme im2double normalisera également les intensités afin qu'elles s'adaptent entre [0, 1] . Juste casting à double ne fera pas cela. De plus, imread Chargement d'une image dans "Par défaut" uint8 est techniquement pas correct. La précision de chaque pixel est définie dans l'en-tête de l'image que imread analyse et examine. Par exemple, TIF peut être de 8, 16 ou 24 ou 32 bits. Ce n'est que la majorité des images qui utilisent 8 bits par intensité / couleur, nous pensons donc naturellement que c'est "par défaut".


mais Im2Double ne fonctionnera pas dans ce cas parce que les intensités resteront dans [0,1] mais nous ne voulons pas normaliser les intensités, si nous le faisons, l'image résultante sera black.Je avait essayé et obtenu les résultats précis .


Une absurdité totale. imshow pour double Les images sont conçues pour prendre des intensités entre [0,1] , qui obtiennent Visualisée aux intensités entre le noir et le blanc. Quiconque vous a donné le vote de +1 pour votre commentaire ne sait pas ce qu'ils parlent non plus.



2
votes

Le meilleur moyen de résoudre ce problème n'est pas de changer votre image, mais de modifier la façon dont imshow l'affiche. Essayez ceci: xxx

ou, mieux encore, essayez ceci: xxx

qui revalonnera automatiquement l'image, cartographier la valeur minimale à 0 et le maximum à 255.


0 commentaires