Javascript must be enabled in your browser to use this page.
Please enable Javascript under your Tools menu in your browser.
Once javascript is enabled Click here to go back to �нтеллектуальная Кобринщина

Create an Image Object - Wolfram Mathematica

Создание изображений

Изображения являются важными стандартными структурами данных, тесно интегрированными с пользовательским интерфейсом и ядром Mathematica. Изображения, в качестве объектов Mathematica, по умолчанию создаются при импорте какого-либо файла в поддерживаемом системой формате изображения. Однако, Вы можете создавать изображения самостоятельно, имея некоторые базовые познания о структуре и свойствах выражений, с помощью которых создаются графические объекты.

Самый простой способ создать графический объект - "обернуть" функцией Image матрицу действительных значений в диапазоне от 0 до 1:

In[17]:=

CreateAnImageObjectRU_1.gif

Out[17]=

CreateAnImageObjectRU_2.gif

Для удобства, выводимый на экран размер этого крохотного 2?2 изображения намного больше, чем он есть на самом деле. Это работа интерфейса Mathematica, выполняемая автоматически. При создании изображений, Mathematica делает несколько предположений, автоматически подбирая значения для некоторых свойств изображения.

Чтобы просмотреть эти автоматические настройки, можно воспользоваться функцией  Options, применив ее к изображению:

In[27]:=

CreateAnImageObjectRU_3.gif

Out[27]=

CreateAnImageObjectRU_4.gif

Создадим изображение в оттенках серого, явно задав это значение для опции ColorSpace:

In[18]:=

CreateAnImageObjectRU_5.gif

Out[18]=

CreateAnImageObjectRU_6.gif

Теперь опция ColorSpace отражает заданное значение:

In[11]:=

CreateAnImageObjectRU_7.gif

Out[11]=

CreateAnImageObjectRU_8.gif

Цветное RGB изображение задается прямоугольным массивом из троек действительных или целых чисел. Любые данные с подобной структурой могут быть представлены в виде цветного изображения.

Воспользуемся функцией Tuples для создания триплетов значений, соответствующих разным цветам:

In[19]:=

CreateAnImageObjectRU_9.gif

Out[19]=

CreateAnImageObjectRU_10.gif

Теперь применим функцию Partition, разбив список на 4 столбца (другими словами - создав матрицу 4 х 2):

In[20]:=

CreateAnImageObjectRU_11.gif

Out[20]=

CreateAnImageObjectRU_12.gif

Наконец, применим функцию Image для создания цветного изображения:

In[21]:=

CreateAnImageObjectRU_13.gif

Out[21]=

CreateAnImageObjectRU_14.gif

Воспользуемся функцией InputForm для просмотра внутренней структуры выражения, созданного функцией Image:

In[15]:=

CreateAnImageObjectRU_15.gif

Out[15]//InputForm=

Image[{{{0., 0., 0.}, {0., 0., 1.}, {0., 1., 0.}, {0., 1., 1.}}, {{1., 0.,
0.}, {1., 0., 1.}, {1., 1., 0.}, {1., 1., 1.}}}, "Real",
ColorSpace -> "RGB", Interleaving -> True]

Функция ImageData извлекает массив с значениями пикселей. По умолчанию, ImageData возвращает 2D массив значений цвета в виде действительных чисел от 0 до 1:

In[16]:=

CreateAnImageObjectRU_16.gif

Out[16]=

CreateAnImageObjectRU_17.gif

Возможно, иногда Вам понадобится просмотреть исходные данные изображения в виде списка матриц, по одной для каждого цветового канала. Установите для опции Interleaving значение False, чтобы преобразовать данные изображения в эту форму:

In[33]:=

CreateAnImageObjectRU_18.gif

Out[33]=

CreateAnImageObjectRU_19.gif

    

Любая матрица или список из двух и более матриц одного размера могут быть использованы для создания нового изображения. Попробуем применить для этой цели функцию косинуса, "обернув" ее функцией Image, создав изображение волновой структуры из данных:

In[18]:=

CreateAnImageObjectRU_20.gif

Out[18]=

CreateAnImageObjectRU_21.gif

Вы можете создать цветное RGB изображение, объединив три такие структуры, по одной для каждого цветового канала. Вначале, при помощи функции Map сгенерируйте данные, получив результаты вычислений для списка из трех разных функций:

In[34]:=

CreateAnImageObjectRU_22.gif

Теперь цветное изображение может быть создано:

In[20]:=

CreateAnImageObjectRU_23.gif

Out[20]=

CreateAnImageObjectRU_24.gif

Помимо этого, Вы можете создать цветное RGB изображение путем комбинирования списка из трех изображений в оттенках серого.

Применим функцию Map к Image, чтобы сгенерировать изображение в оттенках серого для каждого набора результатов вычислений в tmp:

In[35]:=

CreateAnImageObjectRU_25.gif

Out[35]=

CreateAnImageObjectRU_26.gif

Теперь, применим функцию ColorCombine к списку изображений в оттенках серого, чтобы получить цветное RGB изображение:

In[22]:=

CreateAnImageObjectRU_27.gif

Out[22]=

CreateAnImageObjectRU_28.gif

    

Двухканальные изображения очень полезны для визуализации сложных функций:

In[23]:=

CreateAnImageObjectRU_29.gif

Out[23]=

CreateAnImageObjectRU_30.gif