查看原文
其他

Max/MSP/ Jitter 教程20 - 迭代和矩阵重采样

kidult00 科技无障碍 2022-11-03

Max/MSP/Jitter 教程11 - 矩阵混合
Max/MSP/Jitter 教程12 - 视频去背景合成
Max/MSP/Jitter 教程13 - 列表和矩阵
Max/MSP/Jitter 教程14 - 颜色查找表
Max/MSP/Jitter 教程15 - 剪刀和胶水
Max/MSP/Jitter 教程16 - 矩阵定位

Max/MSP/Jitter 教程17 - 图像旋转

Max/MSP/Jitter 教程18 - 使用已命名的矩阵

Max/MSP/ Jitter 教程19 - 使用已命名矩阵的反馈


00 翻译自 Cycling74 的 Max/MSP/Jitter 官方文档:Tutorial 18: Iterative Processes and Matrix Re-Sampling

https://docs.cycling74.com/max7/tutorials/jitterchapter18

本教程演示何时应该使用已命名 jit.matrix 对象的更复杂示例,以及如何使用 jit.matrix 对图像增采样(upsampling)和减采样(downsampling)。

patch 左上角包含一个 jit.movie,patch 打开时会加载一个静止图像 fuzz_circle.jpg。

单击开关启动 metro。图像出现在 patch 右下角的 jit.pwindow 中:

fuzz_circle.jpg 包含一个白色圆圈与黑色背景,在最终矩阵里尺寸被缩放为小的圆形。

Getting Drunk

patch 顶部将 jit.movie 中的图像写入链条中的第一个 jit.matrixbangbang 对象发出的 bang 用 drunk 对象随机变化坐标,来改变 jit.matrix 每一帧的 dstdimstart 和 dstdimend 属性。请注意第一个 jit.matrix 的 usedstdim 属性为 1,它将缩放输入矩阵:

第一个 jit.matrix 只是用来缩放圆形图像以适应输出矩阵的 80 x 60 区域。请注意,格式化缩放图像坐标的消息框,也会逐帧清除矩阵(用 clear 消息),这样就不会残留之前的图像。drunk 改变了圆圈的位置,让它四处抖动。

单击 patch 右下角 jit.pwindow 中的某个位置。圆圈将跳到单击的位置,并从那里开始移动。

jit.pwindow 中单击鼠标的结果将发送到 r winclick 对象。route 对象将 mouse 相关的信息抽出来,用 unpack 对象提取前两个元素(鼠标单击的 x 和 y 位置)。然后使用来设置 drunk 对象的新原点。

反馈网络

一旦圆圈图像已被缩放并由 jit.matrix 放置好,patch 流程就进入一对名为 blurry 的 jit.matrix 反馈链:

反馈循环

这一部分包含四个 jit.matrix(不包括顶部的一个缩小圆形图像的对象)。其中两个对象同名(blurry),仅用于存储和检索由 patch 的其余部分之前生成的矩阵。最上面的 jit.matrix 将矩阵发送到第一个 jit.op 的右入口。此外,它用 bangbang 发送 bang 到第一个 jit.matrix blurry 让它输出矩阵。该矩阵最终到达 jit.op 的左入口,然后显示(通过 jit.pwindow)并乘以标量(第二个 jit.op 对象)。它最终会覆盖先前的矩阵(进入下面的 jit.matrix blurry)。先不管中间一些对象,可以看到 blurry 矩阵将保留圆形图像前一“帧”的某个版本:

第一个 jit.op @op max 组合新旧图像。@op max 比较两个矩阵中每个单元并保留值较高的那个单元。第二个 jit.op @op * 对象乘以标量(由 patch 右侧的数字框发送到 s fb)使图像变暗:

反馈量指定图像在存储之前变暗的程度

在 patch 的蓝色区域中用标记为 Feedback 的数字框来更改反馈量。单击 jit.pwindow 移动圆圈时,注意圆圈后的轨迹如何增加或减少,这取决于所设置的反馈量。

增采样和减采样

图像处理算法的最后一步,涉及这两个对象之间的区域:发送前一帧中保留的矩阵的第一个 jit.matrix blurry,以及合成前后两个矩阵的 jit.op

jit.matrix 重新采样图像

教程 patch 中两个绿色 jit.matrix 重新采样上方的 jit.matrix 的模糊图像矩阵。两个 jit.matrix 中的第一个将 dim 的属性设置为 4 x 4。可以用蓝色区域中标记为 Pixelation 的数字框来更改。这个数字被发送到 jit.matrix 上方的 s dim   对象。

在教程 patch 的蓝色区域中,更改标记为 Pixelation 的数字框。注意圆形轨迹如何变化。

对图像矩阵减采样,jit.matrix 将 320 x 240 矩阵从其输入复制到一个小得多的矩阵中,舍弃多余的数据。得到像素化的图像,可以用矩阵的 dim 控制。

第二个 jit.matrix 将矩阵增采样回到 320 x 240 大小。当后续的对象处理矩阵时,它们有全分辨率图像并将输出全分辨率矩阵。

jit.streak 对象通过随机复制到相邻单元得到好看的像素化轨迹效果。jit.streak 的 prob 属性控制矩阵中任何给定单元格被复制到相邻单元格的可能性。这里的 prob 为 0.5,任何给定单元格都有 50% 的可能性。

技术细节:默认情况下 jit.streak 将单元格复制到左侧。更改  direction 属性将改变此行为。还有一个 scale 属性可以指定被复制的单元格与其原始值的亮度比值。jit.streak 的帮助文档有更具体的信息。

小结

成对命名 jit.matrix 可以有效地存储先前迭代。这些技术可以用合成对象(例如 jit.op)组合先前矩阵与当前矩阵来生成视频延迟效果。还可以使用 jit.matrix 重新采样图像(使用 dim 属性)以更有效地执行算法(矩阵越小,图像处理得越快)并创建像素化效果。jit.streak 对象根据概率因子(prob 属性)随机复制单元格到相邻单元格。




Max/MSP/Jitter 教程系列

Max/MSP/Jitter 教程 01 - 什么是矩阵?
Max/MSP/Jitter 教程 02 - Jitter 对象的属性
Max/MSP/Jitter 教程 03 - 播放 QuickTime 视频
Max/MSP/Jitter 教程 04 - 创建矩阵
Max/MSP/Jitter 教程 05 - 矩阵的数学运算
Max/MSP/Jitter 教程 06 - 控制视频播放
Max/MSP/Jitter 教程 07 - ARGB 颜色
Max/MSP/Jitter 教程 08 - 调整颜色
Max/MSP/Jitter 教程 09 - 调整图像颜色
Max/MSP/Jitter 教程 10 - 交叉渐变

友情提示:独自折腾 Max 易患上癔症……不妨入群互助

👇👇👇

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存