<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ilya Siganov</title>
    <description>The latest articles on DEV Community by Ilya Siganov (@senior_sigan).</description>
    <link>https://dev.to/senior_sigan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F215556%2F5d52588b-c30d-47b8-b0c8-1b49bc89d98b.jpeg</url>
      <title>DEV Community: Ilya Siganov</title>
      <link>https://dev.to/senior_sigan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/senior_sigan"/>
    <language>en</language>
    <item>
      <title>Новый UX (для игр) с помощью ML</title>
      <dc:creator>Ilya Siganov</dc:creator>
      <pubDate>Sat, 03 Feb 2018 00:00:00 +0000</pubDate>
      <link>https://dev.to/senior_sigan/ux-ml-55c</link>
      <guid>https://dev.to/senior_sigan/ux-ml-55c</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;TL;DR; ML создает способы, с помощью которых виртуальная реальность сможет нас почувствовать. Мы в свою очередь через VR/AR и так её достаточно хорошо ощущаем, но она о нас практически ничего не знает. Будущее UX в том, чтобы дать виртуальной реальности эти возможности.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;У нас уже есть &lt;a href="https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5" rel="noopener noreferrer"&gt;ML&lt;/a&gt;, &lt;a href="https://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C" rel="noopener noreferrer"&gt;AR&lt;/a&gt;, &lt;a href="https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C" rel="noopener noreferrer"&gt;VR&lt;/a&gt; и другие новые &lt;a href="https://en.wikipedia.org/wiki/Emerging_technologies" rel="noopener noreferrer"&gt;модные технологии&lt;/a&gt;. Если с последними двумя ясно что делать в играх, то что можно делать с ML? Там всякое компьютерное зрение, генерация контента, предсказание чего-нибудь. Где же новые игры, что используют ML?&lt;br&gt;
Я предлагаю пофантазировать и придумать либо новые жанры игр, либо новые способы управления.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3lgbyd7zs7xc9p7jl76u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3lgbyd7zs7xc9p7jl76u.png" alt="Alt Text" width="499" height="481"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Новое управление
&lt;/h1&gt;

&lt;p&gt;Это довольно скучно управлять игрой с помощью клавиатуры, джойстика или мыши. Это придумали еще в 80-ые годы. Прошло почти 40 лет(sic!) с тех времён. Мы с вами насмотрелись фантастических фильмов и не только, где управляют игрой силой мысли через нейроинтерфейс. Но в домашних условиях вряд ли получится присоединить электроды к голове, поэтому пока что отложим эту тему. И все же у нас есть веб камера, возможно даже несколько, и микрофон. Два интерфейса, которые не популярно использовать в играх. Но сейчас в 2к18 году мы уже так много всего умеем делать с изображением и звуком, надо этим воспользоваться. Начинаем генерировать идеи.&lt;/p&gt;
&lt;h2&gt;
  
  
  Управление мимикой лица
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmitr6sbjctaqwxtdncvv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmitr6sbjctaqwxtdncvv.png" alt="Alt Text" width="700" height="393"&gt;&lt;/a&gt;&lt;/p&gt;
Apple анонсировали emoji, повторяющие мимику человека



&lt;p&gt;Начнём с простого. Можно сделать обычный Dance revolution для мимики. Представьте, падает то emoji улыбающейся какахи, что в слайде у Apple, и вам нужно успеть тоже улыбнуться. Конечно, если посмотреть на emoji, то возникает вопрос — “А что человек реально такое может изобразить?”. Уморительно же. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbwpkocrg67fuohnsgace.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbwpkocrg67fuohnsgace.jpeg" alt="Alt Text" width="500" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;А еще если это всё делать на вечеринках и снимать видео как кто-то играет, то получится очень смешно и всем будет что вспомнить. Можно будет устроить соревнование, кто быстрее может менять мимику, точнее чью мимику компьютер лучше распознаёт.&lt;/p&gt;
&lt;h2&gt;
  
  
  Управление направлением лица
&lt;/h2&gt;

&lt;p&gt;Мимика по факту представляет собой кнопки нашей игры, а нам нужны еще и заменители джойстика или “стрелочек”, чтобы указывать направления.&lt;/p&gt;

&lt;p&gt;Я совсем недавно наткнулся на классную демку, где управляют самолетиком с помощью направления лица и стреляют, открывая рот. Можно ещё реализовать это как наклон головы на несколько градусов.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/cGR30llvamU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Кстати, такую игру где надо управлять глазами, лицом, ртом можно использовать для тренировки концентрации. Если ты отвлечешься, то потеряешь управление и проиграешь. Интересный момент, не так ли?&lt;/p&gt;

&lt;h1&gt;
  
  
  Управление позами
&lt;/h1&gt;

&lt;p&gt;Если у нас будет достаточно простой способ получать информацию о положении человека в пространстве, о том где его рука-нога-голова, то можно делать, очевидно, всякие спортивные игры, танцы, теннис. На сколько я знаю, такие уже есть, но они используют &lt;em&gt;специальные&lt;/em&gt; приспособления. Идея в том, чтобы это происходило автомагически по данным камеры. Это может работать даже на смартфонах.&lt;/p&gt;

&lt;p&gt;Естественно, существуют исследования о сегментации тела, определении позы по видео. И уже есть успешные реализации, можете сами посмотреть: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/pW6nZXeWlGM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://people.ee.ethz.ch/~cvlsegmentation/osvos/" rel="noopener noreferrer"&gt;OSVOS: One-Shot Video Object Segmentation&lt;/a&gt; — сегментация целого тела на видео, паркур6 все дела.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/ZheC/Realtime_Multi-Person_Pose_Estimation" rel="noopener noreferrer"&gt;Realtime_Multi-Person_Pose_Estimation&lt;/a&gt; — а тут уже интереснее, тут строят скелетный каркас человека. Примеры показывают как на танцующих людях это работает.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Голосовое управление
&lt;/h2&gt;

&lt;p&gt;Как минимум, приложение, в котором надо отдавать команды голосом, будет очень веселое. Представьте, приложение управления таксистом: “поворачивай налево, да не туда, а сюда, быстрее” или командование армией. Кстати вспомнил 3 и 4 серии из аниме &lt;a href="https://online.anidub.com/anime/full/8944-net-igry-net-zhizni-no-game-no-life-01-iz-12.html" rel="noopener noreferrer"&gt;“No game, no life”&lt;/a&gt; , где главные герои играли в шахматы и отдавали команды фигурам, а от их решительности и убедительности фигуры решали — ходить или нет. Думаю, построив модель распознавания эмоции и намеренности, можно получить игру, которая будет реагировать на наши эмоции. Научные статьи &lt;a href="https://scirate.com/search?utf8=%E2%9C%93&amp;amp;q=emotion+voice#results" rel="noopener noreferrer"&gt;можно найти&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  MMORPG игры в дополненной реальности
&lt;/h2&gt;

&lt;p&gt;Это уже на грани фантастики, даже аниме есть, где применяется эта технология, и вышло оно в 2017 году, называется &lt;a href="https://online.anidub.com/anime_movie/10301-mastera-mecha-onlayn-poryadkovyy-rang-gekijouban-sword-art-online-ordinal-scale-movie.html" rel="noopener noreferrer"&gt;Sword Art Online, Ordinal Scale&lt;/a&gt;. В нём люди носят специальные “очки” и с помощью них дополняют реальность и играют в ней в MMORPG! Но это же фантастика, как такое сделать? Всё очень просто(нет).&lt;/p&gt;

&lt;p&gt;Для этого вам понадобится: модель сегментации изображения, чтобы выделить на нем человека; модель построения 3D mesh поверхности по 2D изображению или видео; алгоритм замены одежды или частей 3d поверхности; вывод через очки дополненной реальности на глаз маски, которая будет видеться поверх человека или любого другого объекта. Profit! Вы сделали первую в мире MMORPG в дополненной реальности, где люди бегают в доспехах. Я полагаю, как минимум вычисление mesh и применение маски будет готово для применения в ближайшее время, &lt;a href="https://github.com/timzhang642/3D-Machine-Learning" rel="noopener noreferrer"&gt;уже есть статьи&lt;/a&gt;. А вот с очками, надо попросить Google выпустить новый образец.&lt;/p&gt;

&lt;h1&gt;
  
  
  Вывод
&lt;/h1&gt;

&lt;p&gt;Все наши размышления над применением ML для создания новых способов управления не совсем уж и смешные или глупые. Мы этими новыми методами решаем следующую проблему VR и AR — мы улучшаем то, как человек может войти в виртуальную реальность. До сих пор VR/AR это только 3D-очки, GPS, очки специальные. Но методы ввода и взаимодействия с виртуальной реальностью остались в целом теми же: клавиатура и мышь, да тачскрин. Что это означает? А то что мы можем ощущать виртуальную реальность через очки, слышать её и даже ощущать через, например, вибрации джойстика, то сама виртуальность не может до нас прикоснуться, кроме как через кнопки. Нам нужны методы, которыми мы наделим её тоже некоторыми способностями: понимать в какой мы позе стоим, куда смотрим, какое у нас выражение лица, какой у нас голос, на сколько мы решительны, как двигаемся. И прелесть в том, что уже сейчас мы можем начать это делать. И я думаю, что за этим будущее UX.&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;Частично содержимое этой статьи рассказывал на Омском IT-субботнике.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/nSZWvW8SALk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.google.com/presentation/d/e/2PACX-1vSf4kSoa0vfBmnr3tpnoM_fJ-QjdKBWSZkS6kV2yYjfzfzO-LBDJn7sCV7bioA4Ta4C-1KqnLowo0eD/pub?start=false&amp;amp;loop=false&amp;amp;delayms=3000" rel="noopener noreferrer"&gt;Слайды презентации.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>ux</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Multiplayer game? On the Ludum Dare #35 jam? Oh RLY?</title>
      <dc:creator>Ilya Siganov</dc:creator>
      <pubDate>Tue, 26 Apr 2016 00:00:00 +0000</pubDate>
      <link>https://dev.to/senior_sigan/multiplayer-game-on-the-ludum-dare-35-jam-oh-rly-2gl4</link>
      <guid>https://dev.to/senior_sigan/multiplayer-game-on-the-ludum-dare-35-jam-oh-rly-2gl4</guid>
      <description>&lt;p&gt;That's our 9th Ludum Dare, so we decided to make something challenging this time. We've tried to create multiplayer action-horror-shooter thingy with two characters trying to kill each other. One is a werewolf (short-range attack, wide angle of view), another one is a hunter (long-range attack, small view angle and viewing distance). And yeah, that was pretty challenging indeed for some reasons.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nQAW3KA9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/ag624l2r8596cancum0v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nQAW3KA9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/ag624l2r8596cancum0v.png" width="800" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Networking
&lt;/h1&gt;

&lt;p&gt;We've made our first network game for LD#34. It was quite primitive, a peer-to-peer game for two players. But it proved that our team can handle network-game-specific issues and make network game at least playable. This time we decided to go further and create a server which would interconnect all game instances into pairs. That is still quite simple client-server architecture, but it required lots of time to implement and some knowledge of websockets magic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6Mbb8bgf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/jmfqgwma6k1jhibzg5pz.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6Mbb8bgf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/jmfqgwma6k1jhibzg5pz.gif" width="640" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Dynamic shadows
&lt;/h1&gt;

&lt;p&gt;Our game is based on LibGDX engine which is quite simple and, of course, doesn't have any built-in shadow support. So, shadows were made using a bunch of black triangles, dozens of math and sorting obstacles by distance, from farther to closer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gZn34yyK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/fc21bm8gb6sq6cb1pa32.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gZn34yyK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/fc21bm8gb6sq6cb1pa32.png" width="712" height="722"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Collisions detection
&lt;/h1&gt;

&lt;p&gt;Trigonometry magicCharacters should not go through trees, right? LibGDX has built-in box2d engine support, but for such simple task, it adds so much overhead to code that we decided to make everything on our own. That required some math too, and sometimes led to funny bugs such as trees making you stuck inside them and tear you apart.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S93Dqah3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/wbat2vb8o2g8y99o4sx7.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S93Dqah3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/wbat2vb8o2g8y99o4sx7.jpeg" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Soft torch beam effect
&lt;/h1&gt;

&lt;p&gt;Dynamic shadowsIt may look simple. But inside it carries some OpenGL vertex and fragment shaders magic. One of us spent 5 hours or something making this effect look properly and be configurable too. This soft-beam torch effect could be also achieved with gradient transparent bitmap, but it would be less challenging and less funny to make.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SlCt8uXh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/2ahpcg84vfzxsfzkz7wi.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SlCt8uXh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/2ahpcg84vfzxsfzkz7wi.gif" width="640" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Balancing and small details
&lt;/h1&gt;

&lt;p&gt;After basic game mechanics was complete, we decided to add some more features to fix the game balance and make it more interesting to play. First, we've made a wolf jump over the trees to compensate hunter's advantage in attack range, and then we've added traces to our characters to help them find each other in the dark forest. To balance a game a bit more, we've added sounds of characters' steps so players could hear each other walking. This also makes a game more atmospheric.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kLReI27d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/27jo9zq7p9as61itbdhj.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kLReI27d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/27jo9zq7p9as61itbdhj.jpeg" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After all, we are completely happy with the result and we hope you'll enjoy playing this. It's hard to find opponent sometimes, so be ready to grab your friend and play with him over the Internet.&lt;/p&gt;

&lt;p&gt;We also had a page with game statistics and Telegram chat for everyone who wants to receive notifications about active players waiting for an opponent.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--op0MzzMF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/bipv1x0897exsz3j3nu0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--op0MzzMF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/bipv1x0897exsz3j3nu0.png" width="300" height="146"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can download and play our game from &lt;a href="https://catinthedark.itch.io/za-bochok" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Gameplay video: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/X_CfocY6BvQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Also we have a development timelapse. &lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/qkEgv-Azkxk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://medium.com/cat-in-the-dark/multiplayer-game-on-the-ludum-dare-35-jam-oh-rly-77d5dd04d51c" rel="noopener noreferrer"&gt;originally posted on medium in 2016–04–26&lt;/a&gt; by &lt;a href="https://medium.com/@KirillLeyfer" rel="noopener noreferrer"&gt;Kirill Leyfer&lt;/a&gt; and &lt;a href="https://dev.to/senior_sigan"&gt;Ilya Siganov&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>ludumdare</category>
    </item>
    <item>
      <title>Изображение как звук</title>
      <dc:creator>Ilya Siganov</dc:creator>
      <pubDate>Thu, 03 Sep 2015 00:00:00 +0000</pubDate>
      <link>https://dev.to/senior_sigan/-9a1</link>
      <guid>https://dev.to/senior_sigan/-9a1</guid>
      <description>&lt;p&gt;А что будет если над изображением применить не обычные фильтры или спецэффекты из фотошопа, а аудио эффекты из звукового редактора, например, эхо, реверберация, эквалайзер, увеличить низкие или верхние частоты. Может быть интересно. Но как это сделать? Располагайтесь по-удобнее, сейчас на ваших глазах будет происходить магия преобразования форматов данных.&lt;/p&gt;

&lt;h1&gt;
  
  
  Матчасть
&lt;/h1&gt;

&lt;p&gt;Чтобы применять над изображением фильтры аудио, нужно уметь сохранять и открывать изображения как звуковые файлы. Напрямую это сделать невозможно. Но в таких программах как Gimp и Audacity есть возможность работать с так называемыми сырыми данными без заголовков.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F563fhrnu9rzw8pi1svrk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F563fhrnu9rzw8pi1svrk.png" alt="Alt Text" width="500" height="147"&gt;&lt;/a&gt;&lt;/p&gt;
Магическая последовательность ffd8ff означает, что это jpeg.



&lt;p&gt;Обычно в заголовках всегда описан формат данных, чтобы программы могли понимать как интерпретировать бинарные данные из полезной нагрузки. Если же мы сохраним только данные из полезной нагрузки, то получим сырые данные без заголовка(raw), которые можно интерпретировать как угодно.&lt;/p&gt;

&lt;p&gt;Чтобы сохранить картинку в формате raw, откроем ее в gimp и экспортируем как Raw Image Data с расширением .data. Выберем режим сохранения RGB Planar, т.е. в файле сначала будет идти значения яркостей пикселей канала Red, далее Green и Blue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F72ml0czv3uke1q4iuty4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F72ml0czv3uke1q4iuty4.png" alt="Alt Text" width="500" height="157"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;В Audacity импортируем .data файл. Кодирование выбираем U-Law, без учёта байтового порядка, одноканальный режим.&lt;/p&gt;

&lt;h1&gt;
  
  
  Басы
&lt;/h1&gt;

&lt;p&gt;Начнем с простого эффекта — увеличим басы в картинке.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9xfamigwqqeidva0o0yz.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9xfamigwqqeidva0o0yz.jpeg" alt="Alt Text" width="700" height="518"&gt;&lt;/a&gt;&lt;/p&gt;
Исходное изображение



&lt;p&gt;Применим увеличение басов.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhjq5kjw3htv003g17do3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhjq5kjw3htv003g17do3.jpeg" alt="Alt Text" width="800" height="592"&gt;&lt;/a&gt;&lt;/p&gt;
Увеличенные басы



&lt;h1&gt;
  
  
  Эхо
&lt;/h1&gt;

&lt;p&gt;Эхо-эффект — один или несколько сигналов задержанные во времени с затуханием добавляются к существующему сигналу. Интересно посмотреть как это выглядит. Выставим время задержки 2 секунды и коэффициент затухания 0.3.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0z8gubnemmtxwpl7kcif.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0z8gubnemmtxwpl7kcif.jpeg" alt="Alt Text" width="700" height="518"&gt;&lt;/a&gt;&lt;/p&gt;
Исходное изображение



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3ec2hmkaeoyz0hxv6ls0.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3ec2hmkaeoyz0hxv6ls0.jpeg" alt="Alt Text" width="800" height="592"&gt;&lt;/a&gt;&lt;/p&gt;
Эффект Эхо



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe1gw2l0nduhw28t1xf6b.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe1gw2l0nduhw28t1xf6b.jpeg" alt="Alt Text" width="800" height="592"&gt;&lt;/a&gt;&lt;/p&gt;
Эффект Эхо



&lt;h1&gt;
  
  
  Реверберация
&lt;/h1&gt;

&lt;p&gt;Реверберация — это процесс постепенного уменьшения интенсивности звука при его многократных отражениях.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fo0jg8fnbli3lwkys3ekm.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fo0jg8fnbli3lwkys3ekm.jpeg" alt="Alt Text" width="800" height="592"&gt;&lt;/a&gt;&lt;/p&gt;
Эффект реверберации



&lt;p&gt;Есть еще куча всяких разных звуковых эффектов. А еще можно по-разному сохранять в raw-формат данные — planar RGB, просто RGB, RGB с альфа каналом, режим BMP. Можно по-другому импортировать raw-данные в звуковой редактор. В общем экспериментировать можно очень много. В следующих постах этой серии я покажу, что бывает в случае ошибки экспортирования, как сжатие влияет на данные и другие интересные опыты.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/%D0%B7%D0%B2%D1%83%D0%BA%D0%B8-%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D1%8B/%D0%BD%D0%B0%D0%B3%D0%BB%D1%8F%D0%B4%D0%BD%D0%B0%D1%8F-%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D1%81%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB%D0%BE%D0%B2-c5a313765e04" rel="noopener noreferrer"&gt;Следующий пост&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>ImageMagick эксперименты #9</title>
      <dc:creator>Ilya Siganov</dc:creator>
      <pubDate>Thu, 16 May 2013 08:36:00 +0000</pubDate>
      <link>https://dev.to/senior_sigan/imagemagick-9-2m36</link>
      <guid>https://dev.to/senior_sigan/imagemagick-9-2m36</guid>
      <description>&lt;p&gt;Продолжаем поиск чего-то необычного и вещественного.&lt;br&gt;
В предыдущем посте я сделал “квадратное сложение” няшек. Настал час истины. Совершим же перекрёстное слияние няшек. И тут размер итогового изображения в два раза больше исходного. Для усиления умиления рекомендую смотреть как оригинал, а не превьюху!!!!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjvkjivomg6u8ozqmytsl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjvkjivomg6u8ozqmytsl.jpg" alt="Alt Text" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Дополнительный бонус. Идеальное вмешивание картинок.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fflaj21d7bzk30zgt1s7i.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fflaj21d7bzk30zgt1s7i.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Исходники
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/blan4/magick/blob/master/diffusion.h" rel="noopener noreferrer"&gt;https://github.com/blan4/magick/blob/master/diffusion.h&lt;/a&gt;&lt;/p&gt;

</description>
      <category>fun</category>
      <category>imagemagick</category>
    </item>
    <item>
      <title>ImageMagick эксперименты #8</title>
      <dc:creator>Ilya Siganov</dc:creator>
      <pubDate>Sat, 04 May 2013 14:53:00 +0000</pubDate>
      <link>https://dev.to/senior_sigan/imagemagick-8-1gd3</link>
      <guid>https://dev.to/senior_sigan/imagemagick-8-1gd3</guid>
      <description>&lt;p&gt;Привет!&lt;br&gt;
Сегодня у нас уроки кирпичизма. Надеюсь m$oft не наедет на меня за использование прямоугольников. Итак, что будет если мы разобьем матрицу на много подматриц произвольной формы? А если при этом произведем какую-нибудь операцию над подматрицей? Так вот, написал я тут алгоритм, наверное очень тупо, так как картинку 1900*1200 он обрабатывает десяток секунд, который перемешивает каналы у данной подматрицы. Не переживайте, я разовью эту идею дальше и будет очень забавно.&lt;/p&gt;

&lt;h1&gt;
  
  
  Генерация матриц
&lt;/h1&gt;

&lt;p&gt;Существует 2 вида подматриц- синие зеленые и красны. Размер выбирается как случайное число.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdaegq1c3dbdvhgupp8y3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdaegq1c3dbdvhgupp8y3.jpeg" alt="Alt Text" width="600" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;А здесь размер выбирается как половина от ширины матрицы. Очевидно прогрессия 

&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;(12)n(\frac{1}{2})^n&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mopen nulldelimiter"&gt;&lt;/span&gt;&lt;span class="mfrac"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mtight"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="frac-line"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mtight"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mclose nulldelimiter"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mclose"&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;n&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
. Ну или почти такая. Не суть.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fg3il2xvxdvl1hbqfntk9.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fg3il2xvxdvl1hbqfntk9.jpeg" alt="Alt Text" width="600" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Теперь случайное перемешивание в подматрицах. Обычный рандом дает не очень клевый результат.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpdr32slb9rdg286vfi8u.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpdr32slb9rdg286vfi8u.jpeg" alt="Alt Text" width="700" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Тут волей случая первая подматрица оказалась очень большой. FIX IT!!!!&lt;br&gt;
Вот то-то же. Нам нужен был true_random. Здесь выбирается средний размер квадратов с некоторой дельтой. Вот так красить машины надо. Это я понимаю искусство.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0o59xkji5ryopzodz2t1.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0o59xkji5ryopzodz2t1.jpeg" alt="Alt Text" width="700" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Теперь перекрасим няшку.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr06gl4lyb2iufc2ltwur.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr06gl4lyb2iufc2ltwur.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Тебя теперь интел засудит, у них вся реклама в таком стиле)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Смешивание картинок
&lt;/h1&gt;

&lt;p&gt;Нет времени объяснять, прямоугольники захватывают мир……………&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fswc95wnehq27ectw3t0c.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fswc95wnehq27ectw3t0c.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;От сложения няшек, няшность не возросла T_T.&lt;/p&gt;

&lt;h1&gt;
  
  
  Исходники
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/senior-sigan/magick/blob/master/brick.h" rel="noopener noreferrer"&gt;https://github.com/senior-sigan/magick/blob/master/brick.h&lt;/a&gt;&lt;/p&gt;

</description>
      <category>fun</category>
      <category>imagemagick</category>
    </item>
    <item>
      <title>ImageMagick эксперименты #7</title>
      <dc:creator>Ilya Siganov</dc:creator>
      <pubDate>Wed, 24 Apr 2013 14:46:00 +0000</pubDate>
      <link>https://dev.to/senior_sigan/imagemagick-7-1h7i</link>
      <guid>https://dev.to/senior_sigan/imagemagick-7-1h7i</guid>
      <description>&lt;p&gt;Продолжаем творить велосипеды, самокаты, драндулеты и прочие штуки. Отвлечемся от искажения цвета и поэкспериментируем над позициями пикселей.&lt;/p&gt;

&lt;h1&gt;
  
  
  Инвертирование
&lt;/h1&gt;

&lt;p&gt;Каждую нечетную строку инвертируем-ну тут совсем скучно, разве что это не обычное зеркальное наложение. Рассмотрите в оригинале, очень интересный эффект с вертикальными полосами.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fccvtxi3ffocfl2pohwx5.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fccvtxi3ffocfl2pohwx5.jpeg" alt="Alt Text" width="700" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Смещение
&lt;/h1&gt;

&lt;p&gt;Смещение с коэффициентом. А тут весело, получается какое-то там размазывание, не помню как это называется в фотошопе.&lt;br&gt;
В след раз попытаюсь осилить и сделаю метро интерфейс из картинки ;)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5c1n02llufnre9puls8d.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5c1n02llufnre9puls8d.jpeg" alt="Alt Text" width="700" height="500"&gt;&lt;/a&gt;&lt;/p&gt;
Смещение с коэффициентом 10



&lt;p&gt;Моя любимая машинка размазалась полностью. Грусть-тоска T_T&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmr1ez8uhj9gx3hlocz2w.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmr1ez8uhj9gx3hlocz2w.jpeg" alt="Alt Text" width="700" height="437"&gt;&lt;/a&gt;&lt;/p&gt;
Смещение с коэффициентом 1000



&lt;p&gt;В следующей части разбиение картинки на квадраты произвольного цвета и размера.&lt;/p&gt;

&lt;h1&gt;
  
  
  Исходники
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/senior-sigan/magick/blob/master/diffusion.h" rel="noopener noreferrer"&gt;https://github.com/senior-sigan/magick/blob/master/diffusion.h&lt;/a&gt;&lt;/p&gt;

</description>
      <category>fun</category>
      <category>imagemagick</category>
    </item>
    <item>
      <title>ImageMagick эксперименты #6</title>
      <dc:creator>Ilya Siganov</dc:creator>
      <pubDate>Tue, 09 Apr 2013 15:33:00 +0000</pubDate>
      <link>https://dev.to/senior_sigan/imagemagick-6-38m3</link>
      <guid>https://dev.to/senior_sigan/imagemagick-6-38m3</guid>
      <description>&lt;p&gt;Сегодня был очень длинный день. Поэтому для поддержания себя в бодром состоянии, я написал следующий сценарий искажения фоток. Вас ждет снова много “вещественных” преобразований. Надеюсь, я придумаю как делать фотки пастельными, а не мерзео-эпилептическими. Итак, сегодня на очереди — применение функций от координат на насыщенность каналов. Кто хочет- может посмотреть исходники, я там замутил массив указателей на функции. Описания под картинками.&lt;/p&gt;

&lt;h1&gt;
  
  
  X/Y
&lt;/h1&gt;

&lt;p&gt;Значение канала * (x/y). Только вот незадача. Я не перевёл во float, поэтому видны резкие границы разделения.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgn61wklfmmftg3ep5atf.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgn61wklfmmftg3ep5atf.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;
(int)(x/y)



&lt;p&gt;Теперь плавное использвание x/y.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc342x0p7a7z3kc62s79p.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc342x0p7a7z3kc62s79p.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;
(float)(x/y)



&lt;h1&gt;
  
  
  Логарифм
&lt;/h1&gt;

&lt;p&gt;Логарифм произведения координат. По-моему это самый прикольный результат.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn6v3rsl1vvo00ji4oqf9.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn6v3rsl1vvo00ji4oqf9.jpeg" alt="Alt Text" width="700" height="500"&gt;&lt;/a&gt;&lt;/p&gt;
log(x*y)



&lt;p&gt;А что если взять log(x/y)?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3gfyi9wnv7z6dwhif365.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3gfyi9wnv7z6dwhif365.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;
log(x/y)



&lt;p&gt;Ещё один экземпляр. (прим. времени — через 2 года уже не могу вспомнить, что тут за функция. Имя файла xyyx.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0ndg0khoqxeudglswu9j.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0ndg0khoqxeudglswu9j.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;
xyyx



&lt;h1&gt;
  
  
  Sin
&lt;/h1&gt;

&lt;p&gt;Quant*sin(x*y). Советую открыть оригинал и приблизить. Зрелище ооооочень странное.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwjjzi8e8uo52qqic5yco.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwjjzi8e8uo52qqic5yco.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;
Quant*sin(x*y)



&lt;p&gt;Тоже синус, но с более слабыми коэффициентами.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdv0ospy750vqf5vs8stp.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdv0ospy750vqf5vs8stp.jpeg" alt="Alt Text" width="700" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;В следующей серии я покажу что будет если не менять цвет пикселей, а менять их местами.&lt;/p&gt;

&lt;h1&gt;
  
  
  Исходники
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/senior-sigan/magick/blob/master/function.h" rel="noopener noreferrer"&gt;https://github.com/senior-sigan/magick/blob/master/function.h&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>ImageMagick эксперименты #5</title>
      <dc:creator>Ilya Siganov</dc:creator>
      <pubDate>Mon, 08 Apr 2013 15:02:00 +0000</pubDate>
      <link>https://dev.to/senior_sigan/imagemagick-5-29d6</link>
      <guid>https://dev.to/senior_sigan/imagemagick-5-29d6</guid>
      <description>&lt;p&gt;Специально для любителей острых ощущений. Сейчас вы станете свидетелями того как каждый “пиксель” влияет на следующий с разными коэффициентами.&lt;/p&gt;

&lt;p&gt;Для простоты в данном эксперименте значение цвета предыдущего пикселя просто складывается со следующим с некоторым коэффициентом.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Febg2b8tcd487z4j66mdm.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Febg2b8tcd487z4j66mdm.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;
Коэффициент 0.5 — это только начало.



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3hpe29jwkyr8nnhzqbbu.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3hpe29jwkyr8nnhzqbbu.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;
Коэффициент 0.7



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmnns10ld8i6w6qi74dka.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmnns10ld8i6w6qi74dka.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;
Коэффициент 0.8



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fz3ztngzwb2s0acopl55e.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fz3ztngzwb2s0acopl55e.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;
Коэффициент 0.9



&lt;p&gt;И самое весёлое 1.1. Почти белый шум. Как будто телевизор плохо показывает.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjpph1wq06ctxldsqcvgb.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjpph1wq06ctxldsqcvgb.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;
Коэффициент 1.1



&lt;p&gt;В следующей части мы применим некоторую функцию от координаты пикселя и его значением над изображением.&lt;/p&gt;

&lt;h1&gt;
  
  
  Исходники
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/senior-sigan/magick/blob/master/dependence.h" rel="noopener noreferrer"&gt;https://github.com/senior-sigan/magick/blob/master/dependence.h&lt;/a&gt;&lt;/p&gt;

</description>
      <category>fun</category>
      <category>imagemagick</category>
    </item>
    <item>
      <title>ImageMagick эксперименты #4</title>
      <dc:creator>Ilya Siganov</dc:creator>
      <pubDate>Fri, 05 Apr 2013 14:44:00 +0000</pubDate>
      <link>https://dev.to/senior_sigan/imagemagick-4-4fo7</link>
      <guid>https://dev.to/senior_sigan/imagemagick-4-4fo7</guid>
      <description>&lt;p&gt;Пятница, и этим всё сказано. Насладимся же сортировкой изображения. Я написал построчечную сортировку каналов и полную. Некоторые результаты были весьма неожиданными, особенно segmentation fault, иногда :D.&lt;/p&gt;

&lt;h1&gt;
  
  
  Частичная сортировка.
&lt;/h1&gt;

&lt;p&gt;Начнем с сортировки красного канала. Напомню, что машина желтая. Выглядит как закат. Ну почти.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frpolbjcin7dc9r9y4d8h.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frpolbjcin7dc9r9y4d8h.jpeg" alt="Сортировка по яркости красного канала" width="700" height="437"&gt;&lt;/a&gt;&lt;/p&gt;
Сортировка по яркости красного канала



&lt;p&gt;А теперь отправим синий канал в другую сторону.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fo1xdysi0xya3ivboyzp3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fo1xdysi0xya3ivboyzp3.jpeg" alt="Красный канал сортируется в правую сторону, синий — в левую" width="700" height="437"&gt;&lt;/a&gt;&lt;/p&gt;
Красный канал сортируется в правую сторону, синий — в левую



&lt;p&gt;Картинка всё еще похожа на оригинал. НУЖНО ИСПРАВИТЬ ЭТОТ НЕДОЧЕТ.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb99trvo3ja0t70gtlfdh.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb99trvo3ja0t70gtlfdh.jpeg" alt="Alt Text" width="700" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Вот это я понимаю искусство. Полная сортировка всех каналов в левую сторону. Поздравляю. Так бы выглядела машина на десятой скорости света.&lt;br&gt;
Мне так понравился эффект растаскивания цветов в разные стороны, что сделал еще несколько экземпляров.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F41dq0cfm885rqwsr77go.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F41dq0cfm885rqwsr77go.jpeg" alt="Alt Text" width="700" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Хорошо, а вот еще одна подопытная няша. Отсортируем её полностью.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftfnxhtxyixm80m8rac49.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftfnxhtxyixm80m8rac49.jpeg" alt="Alt Text" width="700" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;УПС. это не то чего я ожидал. Тьфу ты, перепутал сортировку. Часть каналов отсортирована полностью другая часть — нет. Короче я не понял, что тут произошло. Наверное баг в проге.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fv9pbx8b8cns2wgps66q0.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fv9pbx8b8cns2wgps66q0.jpeg" alt="Alt Text" width="700" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Вот это другое дело. Полностью отсортированная картинка. Назовем её розовый градиент [s]Малевича[/s].&lt;br&gt;
Это всё. В следующем выпуске я покажу как один пиксель может “сломать” всю картинку.&lt;/p&gt;
&lt;h1&gt;
  
  
  Исходники
&lt;/h1&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


</description>
      <category>fun</category>
      <category>imagemagick</category>
    </item>
    <item>
      <title>ImageMagic эксперименты #2</title>
      <dc:creator>Ilya Siganov</dc:creator>
      <pubDate>Wed, 03 Apr 2013 15:58:00 +0000</pubDate>
      <link>https://dev.to/senior_sigan/imagemagic-2-551h</link>
      <guid>https://dev.to/senior_sigan/imagemagic-2-551h</guid>
      <description>&lt;p&gt;Сегодня была чудесная лекция по теории вероятностей. Там было что-то про ЦЕНТРАЛЬНУЮ ПРЕДЕЛЬНУЮ ТЕОРЕМУ, но не это важно. Главное то, что меня накрыло, что я понял!!! Нужно сравнить две картинки между собой.&lt;/p&gt;

&lt;h1&gt;
  
  
  Сравнение картинок.
&lt;/h1&gt;

&lt;p&gt;Итак найдем какая из картинок больше другой!&lt;br&gt;
И самое интересное. Я решил расставить все штрихи в кси( ξ). Сравниваем, что лучше аниме или обычное жалкое тридэ.&lt;br&gt;
Берём странную картинку кубиков.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0jgo1gfzdlv8x9xtex6v.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0jgo1gfzdlv8x9xtex6v.jpeg" alt="Alt Text" width="700" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;И милую картинку танцующих фигурок оригами.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2vy54l3snollrp0vjel4.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2vy54l3snollrp0vjel4.jpeg" alt="Alt Text" width="700" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Получаем такое чудо.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxcnw4h2fhe6lwih37873.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxcnw4h2fhe6lwih37873.jpeg" alt="Alt Text" width="700" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Действительно очень красиво вышло. Это не просто какой-то xor или вычитание. А нежное сочетание цветов.&lt;/p&gt;

&lt;h1&gt;
  
  
  Аниме vs ТриДэ.
&lt;/h1&gt;

&lt;p&gt;Берём тридэ девушку, которая косплеит индианку.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5xutv662nvuyqaca782r.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5xutv662nvuyqaca782r.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;И анимешную няшу.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F156acf6d26v0yyxt9cs7.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F156acf6d26v0yyxt9cs7.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;В итоге получаем. Аниме побеждает с огромным отрывом. Ура!!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk87r0mfbdhaxxmoeg16m.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk87r0mfbdhaxxmoeg16m.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Исходники.
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://gist.github.com/senior-sigan/5293378" rel="noopener noreferrer"&gt;https://gist.github.com/senior-sigan/5293378&lt;/a&gt;&lt;/p&gt;

</description>
      <category>fun</category>
      <category>imagemagick</category>
    </item>
    <item>
      <title>ImageMagick эксперименты #3</title>
      <dc:creator>Ilya Siganov</dc:creator>
      <pubDate>Wed, 03 Apr 2013 09:54:00 +0000</pubDate>
      <link>https://dev.to/senior_sigan/imagemagick-3-1h2</link>
      <guid>https://dev.to/senior_sigan/imagemagick-3-1h2</guid>
      <description>&lt;p&gt;Нет времени объяснять-через 20 минут начинается тренировка. Просто выкладываю новую порцию картинок. Теперь я произвёл случайное перемешивание каналов.&lt;/p&gt;

&lt;p&gt;Берем 3 канала RGB. Существует всего 

&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;3!=63! = 6&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;3&lt;/span&gt;&lt;span class="mclose"&gt;!&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 возможных перестановок. Каждую перестановку выбираем с равными вероятностями 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;16\frac{1}{6}&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mopen nulldelimiter"&gt;&lt;/span&gt;&lt;span class="mfrac"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mtight"&gt;6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="frac-line"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mtight"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mclose nulldelimiter"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
. То есть равномерное дискретное распределение. Ожидается, что картинка становится почти монохромной. Так и оказалось.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmvhog1p7ji8o5405se7z.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmvhog1p7ji8o5405se7z.jpeg" alt="Перемешивание цветов. Увеличьте фотографию, для усиления эффекта." width="350" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fuc1hy1u30ivo9z3i1jhe.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fuc1hy1u30ivo9z3i1jhe.jpeg" alt="Перемешивание цветов. Увеличьте фотографию, для усиления эффекта." width="700" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Мультик-преобразование
&lt;/h1&gt;

&lt;p&gt;Следующее преобразование- берем яркость канала, если она больше половины яркости, то делаем её максимальной, иначе минимальной. Я забыл как называется этот эффект, кто знает фотошоп скажите.&lt;/p&gt;

&lt;p&gt;Усиление каналов. Получаем вроде всего 8 цветов — red green blue black white cyan magenta yellow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmcu487go6pep9wfagsox.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmcu487go6pep9wfagsox.jpeg" alt="Alt Text" width="700" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Няшке опять не везет. Но когда-нибудь я найду эффект, который сделает картинку фееричной.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F91qkynvbr9uh1jbyh0ow.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F91qkynvbr9uh1jbyh0ow.jpeg" alt="Alt Text" width="700" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Исходники.
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://gist.github.com/senior-sigan/5301188" rel="noopener noreferrer"&gt;https://gist.github.com/senior-sigan/5301188&lt;/a&gt;&lt;/p&gt;

</description>
      <category>fun</category>
      <category>imagemagick</category>
    </item>
    <item>
      <title>ImageMagic эксперименты #1</title>
      <dc:creator>Ilya Siganov</dc:creator>
      <pubDate>Mon, 01 Apr 2013 15:48:00 +0000</pubDate>
      <link>https://dev.to/senior_sigan/imagemagic-1-ah5</link>
      <guid>https://dev.to/senior_sigan/imagemagic-1-ah5</guid>
      <description>&lt;p&gt;Фуууф, ребята. Опоздал к пятнице сделать, так хоть 1 апреля выложу. На днях мне пришла странная идея-умножать картинки. Ну как матрицы, вы в курсе. Так вот, пришлось сегодня вечерком быстренько поверхностно изучить библиотеку ImageMagick для Си и написать на коленке прогу без очистки памяти и прочего.&lt;/p&gt;

&lt;h1&gt;
  
  
  Меняем местами.
&lt;/h1&gt;

&lt;p&gt;Итак. Начинаем с простого - поменять RGB местами, например BRG или еще как. Оказывается это очень клево выглядит(да, такое в фотошопе наверное 10 лет назад есть).&lt;br&gt;
Берём Марселину&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc1cv9n3srwxx7kr1r6nm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc1cv9n3srwxx7kr1r6nm.jpg" alt="Alt Text" width="496" height="750"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Получили синенькую Марселину. Няяяя&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4gio3ung8j96d4wg9xui.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4gio3ung8j96d4wg9xui.jpg" alt="Alt Text" width="496" height="750"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Клевая тачка желтого цвета. Надо перекрасить.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6kcmzkfuyndwy4o997fx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6kcmzkfuyndwy4o997fx.jpg" alt="Alt Text" width="540" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Получилось круче, чем было.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq0426ldnmz5d609cndga.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq0426ldnmz5d609cndga.jpg" alt="Alt Text" width="540" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  XOR
&lt;/h1&gt;

&lt;p&gt;Далее. По просьбам друзей впилил XOR. Но это совсем не интересно, результат вполне ожидаем.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzhla5l9d0jkblq3xvdbf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzhla5l9d0jkblq3xvdbf.jpg" alt="Alt Text" width="429" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;XOR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fizwpqkylp48v7gxcjq83.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fizwpqkylp48v7gxcjq83.jpg" alt="Alt Text" width="429" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Получаем после XOR.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsvw576nz25jfn00ors49.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsvw576nz25jfn00ors49.jpg" alt="Alt Text" width="429" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Очевидно это просто наложение картинок. Ну так немного вещественно.&lt;/p&gt;

&lt;h1&gt;
  
  
  Вычитание.
&lt;/h1&gt;

&lt;p&gt;Подумал я после XOR — А что если вычитать цвета? Получилось еще вещественнее.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwcqhllaxij6piwi1dh5i.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwcqhllaxij6piwi1dh5i.jpg" alt="Alt Text" width="429" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Умножение.
&lt;/h1&gt;

&lt;p&gt;И таки да. быстро написав построчечное умножение матриц, умножил картинку саму на себя. Ожидания оправдались. ПОЛУЧИЛОСЬ ШЕДЕВРАЛЬНО.&lt;/p&gt;

&lt;p&gt;Берём квадратную картинку, для простоты. И умножаем на саму себя.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fepqlanhlsug9eezb91d0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fepqlanhlsug9eezb91d0.jpg" alt="Alt Text" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Результат умножения картинки саму на себя. Черт возьми, да это же офигенно. Я давно не видел такой игры цвета и формы. Как изящно верх картинки косплеет под баркод. Ах.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsfnfj9pu5jpyt60r808s.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsfnfj9pu5jpyt60r808s.jpg" alt="Alt Text" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Исходники.
&lt;/h1&gt;

&lt;p&gt;И те кто хочет обхаять мой код. Сказать чтобы я проч шел с программирования вот исходник: &lt;a href="https://gist.github.com/senior-sigan/5285689" rel="noopener noreferrer"&gt;https://gist.github.com/senior-sigan/5285689&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>fun</category>
      <category>imagemagick</category>
    </item>
  </channel>
</rss>
