Обработка изображений в Mathematica
Перевод поста Джулио Алессандрини (Giulio Alessandrini),Mathematica Algorithm R&D
Перевод поста Джулио Алессандрини (Giulio Alessandrini),Mathematica Algorithm R&D
Общее количество использованных в посте встроенных функций или символов: 143
Список имен используемых встроенных функций и символов в порядке их появления в коде:
CompoundExpression (;) | Set (=) | Image | RawArray | List ({...}) | Rule (->, ->) | ImageSize | All | ColorSpace | Interleaving | True | SetDelayed (:=) | Pattern (:) | Blank (_) | Power (^) | ImageApply | Function (&) | Module | Transpose | Flatten | Slot (#) | Length | Times (*, ×) | Plus (+) | Part ([[…]]) | Mean | ImageFilter | ColorSeparate | ColorCombine | MeanFilter | Grid | Partition | Map (/@) | Labeled | Show | ImageAdjust | Style | ToString | Head | Unevaluated | FontFamily | Through | GradientFilter | GradientOrientationFilter | LaplacianGaussianFilter | RangeFilter | StandardDeviationFilter | MinFilter | ImageEffect | GaussianMatrix | ImageResize | ImageDimensions | ImageMultiply | Red | Manipulate | ImageSubtract | ColorConvert | Apply (@@) | ControlPlacement | Bottom | SaveDefinitions | DynamicModule | Gamma | False | Blur | SetAttributes | HoldFirst | String ("...") | BlankNullSequence (___) | Spacer | Slider | Dynamic | InputField | FieldSize | With | Hue | ImageCompose | SetAlphaChannel | If | Identity | ColorNegate | TrueQ | Greater (>) | Composition | Deploy | Panel | Column | Reverse | TabView | Italic | SpanFromLeft | Alignment | Left | Dividers | GrayLevel | Spacings | Automatic | Row | Control | MapThread | Enabled | Pi (π) | MaxFilter | Sequence | Small | SpanFromAbove | Framed | FrameMargins | FrameStyle | Background | White | RuleDelayed (:>, :->) | Initialization | Compile | Real | Dot (.) | MedianFilter | ImageAssemble | ImagePartition | None | FullSimplify | Inverse | RotationMatrix | Table | Exp | BlankSequence (__) | Optional (:) | Alternatives (|) | Masking | GraphicsRow | Binarize | Array | Sign | Mod | Options | Delimiter | Graphics | Beta | OptionsPattern | SameQ (===) | OptionValue | EdgeDetect | RidgeFilter
Список имен используемых встроенных функций и символов в порядке их появления в коде:
CompoundExpression (;) | Set (=) | Image | RawArray | List ({...}) | Rule (->, ->) | ImageSize | All | ColorSpace | Interleaving | True | SetDelayed (:=) | Pattern (:) | Blank (_) | Power (^) | ImageApply | Function (&) | Module | Transpose | Flatten | Slot (#) | Length | Times (*, ×) | Plus (+) | Part ([[…]]) | Mean | ImageFilter | ColorSeparate | ColorCombine | MeanFilter | Grid | Partition | Map (/@) | Labeled | Show | ImageAdjust | Style | ToString | Head | Unevaluated | FontFamily | Through | GradientFilter | GradientOrientationFilter | LaplacianGaussianFilter | RangeFilter | StandardDeviationFilter | MinFilter | ImageEffect | GaussianMatrix | ImageResize | ImageDimensions | ImageMultiply | Red | Manipulate | ImageSubtract | ColorConvert | Apply (@@) | ControlPlacement | Bottom | SaveDefinitions | DynamicModule | Gamma | False | Blur | SetAttributes | HoldFirst | String ("...") | BlankNullSequence (___) | Spacer | Slider | Dynamic | InputField | FieldSize | With | Hue | ImageCompose | SetAlphaChannel | If | Identity | ColorNegate | TrueQ | Greater (>) | Composition | Deploy | Panel | Column | Reverse | TabView | Italic | SpanFromLeft | Alignment | Left | Dividers | GrayLevel | Spacings | Automatic | Row | Control | MapThread | Enabled | Pi (π) | MaxFilter | Sequence | Small | SpanFromAbove | Framed | FrameMargins | FrameStyle | Background | White | RuleDelayed (:>, :->) | Initialization | Compile | Real | Dot (.) | MedianFilter | ImageAssemble | ImagePartition | None | FullSimplify | Inverse | RotationMatrix | Table | Exp | BlankSequence (__) | Optional (:) | Alternatives (|) | Masking | GraphicsRow | Binarize | Array | Sign | Mod | Options | Delimiter | Graphics | Beta | OptionsPattern | SameQ (===) | OptionValue | EdgeDetect | RidgeFilter
Оригинальный пост: Image Effects in Mathematica
Перевод сделал Алик Клименков, студент 4-го курса механико-математического факультета КНУ им. Т. Г. Шевченко
Перевод сделал Алик Клименков, студент 4-го курса механико-математического факультета КНУ им. Т. Г. Шевченко
Недавно вышедшая Mathematica 9 обладает множеством новых и улучшенных возможностей для обработки изображений. Вы сможете выполнять морфологические операции, манипуляции с цветом, сегментный анализ изображений, строить функции обнаружения объектов на изображениях, а также получите множество других возможностей, большинство из которых также могут быть применены к новому объекту Image3D.
Сопутствующим продуктом всей этой системы встроенных функций и возможностей является то, что теперь легче, чем когда-либо, использовать Mathematica при создании и применении эффектов к вашим изображениям.
Есть две супер функции, которые используются для применения преобразований непосредственно над изображениями — это ImageApply, которая является пиксельным оператором, и ImageFilter, которая рассматривает пиксель вместе с его соседними пикселями и работает как локальный фильтр.
К примеру, Вы можете удалить синий канал и выполнить гамма-коррекцию только для зеленого канала следующим образом:
закрыть
Или создать пользовательский фильтр для усреднения значений в синем канале только в диапазоне указанной окрестности:
закрыть
закрыть
Однако, для многих задач существуют встроенные функции, работа которых оптимизирована; так обстоит дело для с фильтром типа скользящей средней (mean filter), который называется, как ни странно, MeanFilter.
Используя его в сочетании с парой ColorSeparate/ColorCombine (ColorSeparate — предоставляет список, состоящий из одноканальных изображений, каждое из которых соответствует одному из каналов исходного изображения; ColorCombine — операция, обратная к ColorSeparate) мы можем написать гораздо более читаемую и эффективную версию фильтра, описанного выше.
закрыть
закрыть
Вот несколько других фильтров, представленных в Mathematica 9.
закрыть
А вот несколько встроенных эффектов.
закрыть
Функция обработки изображения в Mathematica позволяет Вам применять маски, например, для создания эффектов виньетирования (затемнение изображения по краям кадра). Во-первых, мы должны сгенерировать маску. Я собираюсь просто затенить углы, что можно сделать с помощью Гауссовой маски (Gaussian mask).
закрыть
Теперь нам нужно только подогнать размеры маски к размерам исходного изображения, чтобы соединить их.
закрыть
Мы сможем даже изменить цвет маски.
закрыть
Эта процедура очень проста, но немного груба. А что, если мы захотим выполнить некоторую тонкую настройку нашего смешения цветов?
Общая идея будет такой - реализовать выражение типа:
(1 – α) mask + α color.
Или, если мы хотим сохранить черный цвет по углам, просто:
mask + α color.
Мы можем все это сделать используя арифметические функции для изображений, такие как ImageSubtract и ImageMultiply, которые теперь могут работать со списками значений каналов.
закрыть
Приложив немного усилий, можно применить еще много эффектов вместе в одной, интерактивной панели.
Используя светимость в качестве параметра, я реализовал эффект смешивания с ограничением на темные или светлые участки. С помощью ImageAdjust мы можем исправлять контраст, яркость и гамму, а ImageMultiply может запросто справиться с применением текстур.
В качестве последнего примера, я бы хотел создать нечто совершенно отличное от того, что мы только что видели: фильтр, который превращает мою картинку в нечто похожее на комикс, черно-белое и с равномерно заполняющим шаблоном в серой зоне.
Я не хочу слишком много черного цвета в изображении, поэтому я стараюсь преобразовать наше изображение в черно-белое с низким порогом. Затем нам потребуется часть цветов в середине диапазона оттенков от белого до черного, серая зона; это мы тоже можем сделать с помощью Binarize.
закрыть
Чтобы создать повторяющийся узор, который мы будем использовать, чтобы заполнить серую зону, мы используем функцию Mod.
закрыть
В качестве последнего шага, мы используем AlphaChannel, чтобы сделать серые пиксели полностью прозрачными, чтобы узор был виден сквозь маску.
закрыть
Одной из прекрасных особенностей Mathematica является то, что всегда можно интерактивно работать с Вашим кодом. Вот CDF, где Вы можете видеть эффект от изменения параметров в реальном времени. Я также добавил панель, чтобы изменять фоновый узор и опцию для выделения краев на изображении.
закрыть
Мы только что увидели, как создать некоторые основные эффекты для изображений в Mathematica. Использование их в качестве строительных блоков позволяет воспроизводить фильтры, встроенные в популярные приложения, типа Instagram или Hipstamatic, приложив немного усилий. Большая разница с Mathematica в том, что Вы точно знаете, что происходит за кулисами, и можете получать удивительные результаты всего несколькими строчками простого кода.
Блог принадлежит “Русскоязычной поддержке Wolfram Mathematica"©
При любом использовании материалов блога, ссылка на блог обязательна.
Создано с помощью Wolfram Mathematica 9
При любом использовании материалов блога, ссылка на блог обязательна.
Создано с помощью Wolfram Mathematica 9
Комментариев нет:
Отправить комментарий