2016-04-07 3 views
2

Je suis nouveau traitement d'image R. Pour commencer, j'utilise le paquet EBImage R pour cela. J'ai un 260 by 134Matrix que je convertie en une image à l'aidepas capable d'afficher l'image en niveaux de gris réelle en utilisant package EBImage dans R

> image1 <- as.Image(matrix1) 

Et, voici le résumé de l'objet image

> image1 
    colorMode : Grayscale 
    storage.mode : double 
    dim   : 260 134 
    frames.total : 1 
    frames.render: 1 

imageData(object)[1:5,1:6] 
    [,1] [,2] [,3] [,4] [,5] [,6] 
[1,] 0 0 0 0 0 0 
[2,] 0 0 0 0 0 0 
[3,] 0 0 0 0 0 0 
[4,] 0 0 0 0 0 0 
[5,] 0 0 0 0 0 0 

Une valeur supérieure à zéro pour une cellule spécifique dans l'objet image ressemble à ceci :

> imageData(image1)[9,2] 
[1] 3686.308 

J'utilise alors la fonction display dans le package EBImage pour afficher l'image qui est construit à partir des données de la matrice. Cependant, j'obtiens une image binaire, c'est-à-dire juste des pixels noir et blanc. Je l'ai montré ci-dessous. Mes données ne consiste pas seulement de 0 et 1. Les valeurs de base sont nulles, mais les régions avec le motif d'image réelle ont des valeurs supérieures à 1. Comment afficher l'image en utilisant en niveaux de gris et en utilisant les fonctions dans ce package? Est-ce que quelqu'un a fait face à un problème similaire? Je n'ai pas non plus trouvé de paramètre pour spécifier un niveau de dégradé.

enter image description here

Répondre

2

La raison pour laquelle l'image rend uniquement en noir et blanc est parce que la fonction display attend des valeurs dans l'intervalle [0, 1]. Les valeurs supérieures à 1 sont tronquées et s'affichent effectivement en tant que 1 (blanc).

Pour visualiser correctement vos données, vous devez d'abord à l'échelle les valeurs d'intensité de pixel à [0, 1] Plage. Cela peut être fait avec l'aide de la fonction normalize:

image1 <- normalize(image1) 
display(image1, method = "raster") 
+0

Cela fonctionne parfaitement! – novicegeek