2014-02-06 3 views
1

Я пытаюсь преобразовать импортированную цветную картинку в оттенки серого.Ошибка импорта изображения в графе Mathematica

Вот что я пытался до сих пор, но Mathematica просто падает после выполнения этого кода, может быть, вы можете найти ошибку, не может признать, что я делаю неправильно:

SetDirectory[NotebookDirectory[]] 
testimage = Import["test.jpg"] 
matrixpic = getMatrix[testimage] 

matrixpic = getMatrix[testimage] 
greypic = 
    Graphics[ 
    Raster[ 
     matrixpic, {{0, 0}, {sizeX[matrixpic], sizeY[matrixpic]}}, {0, 
     255}, ColorFunction -> (GrayLevel[#[[1]]*0.3 + #[[2]]*0.5 + #[[ 
     3]]*0.2] &) 
    ], 
    ImageSize -> {sizeX[matrixpic], sizeY[matrixpic]}, 
    AspectRation -> Automatic 
] 

Show[greypic] 
+0

Что случилось с 'ColorConvert [testimage," Grayscale "]'? –

+0

Хотите указать значение, как вы можете видеть? –

ответ

1

Это работает и больше кода стиля Mathematica.

SetDirectory[NotebookDirectory[]]; 
img = Import["55th-All-Japan-Kendo-Champ2007-4.jpg"]; 
colorXform[p_] := p[[1]]*0.3 + p[[2]]*0.5 + p[[3]]*0.2; 
newImg = Image[Map[colorXform, ImageData[img], {2}]]; 
Show[newImg] 
2

Я считаю, что лучший способ сделать это преобразование является использование ImageApply и Dot:

img = Import["ExampleData/lena.tif"] 

enter image description here

ImageApply[{.3, .5, .2}.# &, img] 

enter image description here


Пожалуйста, задавайте свои вопросы в будущем на выделенном StackExchange сайте Mathematica:

enter image description here

1

Ваш код может быть упрощен до

img = Import["ExampleData/lena.tif"]; 
matrixpic = ImageData[img, DataReversed -> True]; 
Graphics[Raster[matrixpic, 
    ColorFunction -> (GrayLevel[{.3, .5, .2}.#] &)]] 

Это работает без ошибок в Mathematica 8.0.4.

 Смежные вопросы

  • Нет связанных вопросов^_^