Лекция Стивена Вольфрама

ВНИМАНИЕ!!!

БЛОГ ПЕРЕЕХАЛ НА НОВЫЙ АДРЕС https://blog.wolframmathematica.ru

Онлайн машина вычисления знаний Wolfram|Alpha ®

Онлайн машина вычисления знаний Wolfram|Alpha ®

понедельник, 18 февраля 2013 г.

Обработка изображений в Mathematica
Obrabotka_izobrazhenij_v_Mathematica_Large.png
Обработка изображений в Mathematica

Перевод поста Джулио Алессандрини (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
Оригинальный пост: Image Effects in Mathematica
Перевод сделал Алик Клименков, студент 4-го курса механико-математического факультета КНУ им. Т. Г. Шевченко
Недавно вышедшая Mathematica 9 обладает множеством новых и улучшенных возможностей для обработки изображений. Вы сможете выполнять морфологические операции, манипуляции с цветом, сегментный анализ изображений, строить функции обнаружения объектов на изображениях, а также получите множество других возможностей, большинство из которых также могут быть применены к новому объекту Image3D.
Сопутствующим продуктом всей этой системы встроенных функций и возможностей является то, что теперь легче, чем когда-либо, использовать Mathematica при создании и применении эффектов к вашим изображениям.
Obrabotka_izobrazhenij_v_Mathematica__1.gif
Есть две супер функции, которые используются для применения преобразований непосредственно над изображениями — это ImageApply, которая является пиксельным оператором, и ImageFilter, которая рассматривает пиксель вместе с его соседними пикселями и работает как локальный фильтр.
К примеру, Вы можете удалить синий канал и выполнить гамма-коррекцию только для зеленого канала следующим образом:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Obrabotka_izobrazhenij_v_Mathematica__2.gif
Или создать пользовательский фильтр для усреднения значений в синем канале только в диапазоне указанной окрестности:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Obrabotka_izobrazhenij_v_Mathematica__3.gif
Однако, для многих задач существуют встроенные функции, работа которых оптимизирована; так обстоит дело для с фильтром типа скользящей средней (mean filter), который называется, как ни странно, MeanFilter.
Используя его в сочетании с парой ColorSeparate/ColorCombine (ColorSeparate — предоставляет список, состоящий из одноканальных изображений, каждое из которых соответствует одному из каналов исходного изображения; ColorCombine — операция, обратная к ColorSeparate) мы можем написать гораздо более читаемую и эффективную версию фильтра, описанного выше.
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Obrabotka_izobrazhenij_v_Mathematica__4.gif
Вот несколько других фильтров, представленных в Mathematica 9.
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Obrabotka_izobrazhenij_v_Mathematica__5.gif
А вот несколько встроенных эффектов.
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Obrabotka_izobrazhenij_v_Mathematica__6.gif
Функция обработки изображения в Mathematica позволяет Вам применять маски, например, для создания эффектов виньетирования (затемнение изображения по краям кадра). Во-первых, мы должны сгенерировать маску. Я собираюсь просто затенить углы, что можно сделать с помощью Гауссовой маски (Gaussian mask).
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Obrabotka_izobrazhenij_v_Mathematica__7.gif
Теперь нам нужно только подогнать размеры маски к размерам исходного изображения, чтобы соединить их.
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Obrabotka_izobrazhenij_v_Mathematica__8.gif
Мы сможем даже изменить цвет маски.
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Obrabotka_izobrazhenij_v_Mathematica__9.gif
Эта процедура очень проста, но немного груба. А что, если мы захотим выполнить некоторую тонкую настройку нашего смешения цветов?
Общая идея будет такой - реализовать выражение типа:
(1 – α) mask + α color.
Или, если мы хотим сохранить черный цвет по углам, просто:
mask + α color.
Мы можем все это сделать используя арифметические функции для изображений, такие как ImageSubtract и ImageMultiply, которые теперь могут работать со списками значений каналов.
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Приложив немного усилий, можно применить еще много эффектов вместе в одной, интерактивной панели.
Используя светимость в качестве параметра, я реализовал эффект смешивания с ограничением на темные или светлые участки. С помощью ImageAdjust мы можем исправлять контраст, яркость и гамму, а ImageMultiply может запросто справиться с применением текстур.
Obrabotka_izobrazhenij_v_Mathematica__11.gif
В качестве последнего примера, я бы хотел создать нечто совершенно отличное от того, что мы только что видели: фильтр, который превращает мою картинку в нечто похожее на комикс, черно-белое и с равномерно заполняющим шаблоном в серой зоне.
Я не хочу слишком много черного цвета в изображении, поэтому я стараюсь преобразовать наше изображение в черно-белое с низким порогом. Затем нам потребуется часть цветов в середине диапазона оттенков от белого до черного, серая зона; это мы тоже можем сделать с помощью Binarize.
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Чтобы создать повторяющийся узор, который мы будем использовать, чтобы заполнить серую зону, мы используем функцию Mod.
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
В качестве последнего шага, мы используем AlphaChannel, чтобы сделать серые пиксели полностью прозрачными, чтобы узор был виден сквозь маску.
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Obrabotka_izobrazhenij_v_Mathematica__14.gif
Одной из прекрасных особенностей Mathematica является то, что всегда можно интерактивно работать с Вашим кодом. Вот CDF, где Вы можете видеть  эффект от изменения параметров в реальном времени. Я также добавил панель, чтобы изменять фоновый узор и опцию для выделения краев на изображении.
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Мы только что увидели, как создать некоторые основные эффекты для изображений в Mathematica. Использование их в качестве строительных блоков позволяет воспроизводить фильтры, встроенные в популярные приложения, типа Instagram или Hipstamatic, приложив немного усилий. Большая разница с Mathematica в том, что Вы точно знаете, что происходит за кулисами, и можете получать удивительные результаты всего несколькими строчками простого кода.

Блог принадлежит “Русскоязычной поддержке Wolfram Mathematica
При любом использовании материалов блога, ссылка на блог обязательна.
SpikeyСоздано с помощью Wolfram Mathematica 9

Комментариев нет:

Отправить комментарий