2016-04-07 7 views
2

Я новичок в обработке изображений в R. Для начала я использую пакет EBImage R для этого. У меня есть 260 by 134Matrix, который я преобразуется в изображение с помощьюНевозможно отобразить фактическое изображение в оттенках серого с помощью пакета EBImage в R

> image1 <- as.Image(matrix1) 

И, вот резюме изображения объекта

> 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 

значения больше нуля для конкретной ячейки в image объекте выглядит следующим образом :

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

затем я использую функцию display в EBImage пакет для просмотра изображения который строится из матричных данных.

> display(image1, method = "raster") 

Однако, я получаю двоичное изображение, а только черно-белые пиксели. Я показал это ниже. Мои данные состоят не только из 0 и 1. Фоновые значения равны нулю, но области с фактическим рисунком изображения имеют значения, превышающие 1. Как мне отобразить изображение с использованием оттенков серого и с помощью функций в этом пакете? Кто-то сталкивался с подобной проблемой? Я также не мог найти параметр для указания уровня градиента.

enter image description here

ответ

2

Причина, почему изображение делает только как черно-белой, так как функция display ожидает, что значения в диапазоне [0, 1]. Значения выше 1 обрезаются и эффективно отображаются как 1 (белый).

Для правильной визуализации данных сначала необходимо масштабировать значения интенсивности пикселей до диапазона [0, 1]. Это можно сделать с помощью функции normalize:

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

Это работает отлично! – novicegeek