ND 输入的 im2col 算法

2024-04-24

我正在尝试为输入维度 > 2D 编写自己的 im2col 算法。 目前我正在研究 Matlab im2col 的实现。但是,我找不到任何有关二维以上输入的情况的文档。

如果我将 3D 张量输入到函数中,我确实会得到输出。不过我不太明白你是如何从 2D 到 ND 的。事实上,文档中没有提到这一点,这表明它很简单,但我仍然不明白。

哎呀,我什至不明白为什么输出矩阵的大小是它的大小。


首先我要说的是im2col http://www.mathworks.com/help/images/ref/im2col.html仅适用于二维矩阵。事实上,它有时会起作用(我的意思是返回结果而不抛出错误)只是一个令人高兴的巧合。

现在我看了一眼edit im2col.m,并且无需过多研究代码,每个的第一行distinct and sliding方法应该让您直观地了解正在发生的事情:

...
if strcmp(kind, 'distinct')
    [m,n] = size(a);
    ...
elseif strcmp(kind,'sliding')
    [ma,na] = size(a);
    ...
end
...

首先回想一下[s1,s2] = size(arr) where arr是一个 3d 数组,会将第二维和第三维的大小折叠为一个大小。这是相关的doc size http://www.mathworks.com/help/matlab/ref/size.html:

[d1,d2,d3,...,dn] = size(X)返回数组维度的大小X,提供输出参数的数量n equals ndims(X). If n < ndims(X), di等于第 i 维的大小X for 0<i<n, but dn等于其余尺寸大小的乘积X,即尺寸n通过ndims(X).

所以基本上对于一个大小的数组M-by-N-by-P,该函数反而认为它是一个大小矩阵M-by-(N*P)。现在 MATLAB 有一些奇特的索引规则,可以让您执行以下操作:

>> x = reshape(1:4*3*2,4,3,2)
x(:,:,1) =
     1     5     9
     2     6    10
     3     7    11
     4     8    12
x(:,:,2) =
    13    17    21
    14    18    22
    15    19    23
    16    20    24
>> x(:,:)
ans =
     1     5     9    13    17    21
     2     6    10    14    18    22
     3     7    11    15    19    23
     4     8    12    16    20    24

我认为这就是这里最终发生的事情。这是一个确认行为的示例im2col在 RGB 图像上:

% normal case (grayscale image)
>> M = magic(5);
>> B1 = im2col(M, [3 3], 'sliding');

% (RGB image)
>> MM = cat(3, M, M+50, M+100);
>> B2 = im2col(MM, [3 3], 'sliding');
>> B3 = im2col(reshape(MM, [5 5*3]), [3 3], 'sliding');
>> assert(isequal(B2,B3))

注意B2 and B3是相等的,所以基本上想想结果im2col在数组上arr = cat(3,R,G,B)与...相同arr = cat(2,R,G,B)(水平连接)。

有趣的是,使用“不同”块方法你不会那么幸运:

>> B1 = im2col(M, [3 3], 'distinct')    % works
% ..snip..

>> B2 = im2col(MM, [3 3], 'distinct')   % errors
Subscripted assignment dimension mismatch.
Error in im2col (line 59)
    aa(1:m,1:n) = a; 

现在我们了解了发生了什么,让我们考虑如何正确地对 3D 数组执行此操作。

我认为要实施im2col对于彩色图像,我只需在每个颜色通道上单独运行它(每个通道都是一个二维矩阵),然后沿第三维连接结果。所以像这样的包装函数:

function B = im2col_rgb(img, sz, varargin)
    B = cell(1,size(img,3));
    for i=1:size(img,3)
        B{i} = im2col(img(:,:,i), sz, varargin{:});
    end
    B = cat(3, B{:});
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ND 输入的 im2col 算法 的相关文章

  • 如何将向量标准化/非标准化到范围 [-1;1]

    我怎么能够正常化到范围的向量 1 1 我想使用函数norm 因为它会更快 也让我知道我该怎么做非规范化之后的向量正常化 norm对向量进行归一化 使其平方和为 1 如果要对向量进行归一化 使其所有元素都在 0 和 1 之间 则需要使用最小值
  • 如何在 R 中导入 matlab 表

    我有一个matlab mat文件与表数据类型我想将其导入 R 中 我为此使用 readMat R 正在将其作为列表读取 之后有没有办法将列表转换为 R 中的数据帧或表格格式 当我使用as dataframe我收到以下错误 Error in
  • 使用 Mean Shift 进行图像分割的解释

    谁能帮我理解 Mean Shift 分割的实际工作原理吗 这是我刚刚制作的一个 8x8 矩阵 103 103 103 103 103 103 106 104 103 147 147 153 147 156 153 104 107 153 1
  • Matlab 中二维插值的函数形式

    我需要从二维数据数组构造一个插值函数 我需要返回实际函数的东西的原因是 我需要能够将函数作为我需要进行数值积分的表达式的一部分进行计算 因此 interp2 并没有解决这个问题 它不返回函数 我可以使用 TriScatteredInterp
  • 朴素分类器 matlab

    在 matlab 中测试朴素分类器时 即使我在相同的样本数据上进行训练和测试 我也会得到不同的结果 我想知道我的代码是否正确 是否有人可以帮助解释这是为什么 dimensionality reduction columns 6 U S V
  • 在 MATLAB 中高效地形成动态窗口

    有人可以帮助我提供一种有效的方法 或者帮助我执行提供的代码 以尽可能少的步骤获得相同的结果 我将感激你 我有一个原始数组 A 1 1 1 4 3 4 5 4 4 3 3 1 0 0 2 6 2 6 3 6 6 2 7 4 8 7 2 2 2
  • 优化数组压缩

    假设我有一个数组k 1 2 0 0 5 4 0 我可以按如下方式计算掩码m k gt 0 1 1 0 0 1 1 0 仅使用掩码 m 和以下操作 左移 右移 And Or 加 减 乘 我可以将 k 压缩为以下形式 1 2 5 4 以下是我目
  • 如何在 MATLAB 中创建带有分级标记颜色的散点图?

    我想在 MATLAB 中绘制一个简单的散点图 标记颜色从光谱的一端到另一端各不相同 例如红色 橙色 黄色 蓝色 紫色 我的数据比较了一段时间内河流的水量和水质 3 个简单的列 时间 水量 质量 我想绘制数量与质量的 x y 散点图 但颜色随
  • 如何在Matlab脚本中将泰勒级数系数存储到数组中

    这个问题是在 m 脚本的上下文中 我知道如何获取函数的泰勒级数 但我没有看到任何命令允许将级数的系数存储到数组中 sym2poly似乎不起作用 如何将系数存储到数组中 例如这个函数 syms x f 1 x 2 4 x 9 我们怎样才能得到
  • MATLAB 链表

    有哪些可能的方法来实现链表MATLAB http en wikipedia org wiki MATLAB 注意 我问这个问题是为了教学价值 而不是实用价值 我意识到 如果您实际上在 MATLAB 中滚动自己的链表 那么您可能做错了什么 然
  • 如何检测图像中对象的实例?

    我有一张包含几个特定对象的图像 我想检测这些物体在该图像中的位置 为此 我有一些模型图像 其中包含我想要检测的对象 这些图像在我想要检测的对象实例周围得到了很好的裁剪 这是一个例子 在这张大图里 我想检测此模型图像中表示的对象 自从你最初发
  • 在matlab中设置图例符号的精度

    我有这个 leg2 strcat Max Degree num2str adet 1 1 ch l leg3 strcat Min Degree num2str adet 1 2 ch l leg4 strcat Max Request n
  • 使用 varargin (...) 时如何显示不同的函数用法?

    当您输入 Matlab 函数名称并打开大括号时 例如sum 在命令窗口中 将打开一个工具提示 显示此函数的所有可能用法 当我编写自己的接受函数时varargin 工具提示仅显示一个选项 而不是varargin puts e g myfunc
  • 不使用 OpenCV 获取图像掩模

    我正在尝试以下方法从该图像中获取蒙版 但不幸的是我失败了 import numpy as np import skimage color import skimage filters import skimage io get filena
  • MATLAB 是否已有 YAML 库/解析器?

    我想使用 YAML 跨多种语言交流一些数据 将其视为 与语言无关的序列化 其中一种语言是 MATLAB 但我似乎找不到该语言的 YAML 库 我在 Google 上检查了 matlab yaml 和 matlab yaml parse 似乎
  • 如何将Matlab代码库与Android集成?

    我有一个算法和 MATLAB 中的一些其他代码 我想在我的 Android 应用程序中使用它 我怎样才能做到这一点 我可以从 MATLAB 制作 jar 文件以便与 Android 一起使用吗 我必须做点别的事吗 如果您还有其他产品 适用于
  • Matlab 的快速 JSON 解析器

    您知道 Matlab 中有一个非常快速的 JSON 解析器吗 目前我正在使用JSONlab http www mathworks com matlabcentral fileexchange 33381 jsonlab a toolbox
  • 在 Matlab 中对列进行排序

    我有 2 列使用 textscan 导入的数据 数据看起来像这样 其中U is undetect and D is detect mydata 51 U 57 D 48 U 47 D my data 4x1 double 4x1 char
  • 如何使用Matlab提高PSD的分辨率

    我有音频信号 我用 Matlab 读取该信号 并使用 pwelch 获取其 PSD 这是我正在使用的代码 x Fs audioread audioFile wav x x 1 mono xPSD f pwelch x hamming 512
  • MATLAB 中的抗锯齿线和标记

    您好 我在 MATLAB 中有一张图像 我希望这条线是平滑的 看看从 0 4 到 0 8 的线 这太可怕了 当在图中使用 LineSmoothing on 运算符时 我得到了这个 我在线条上做得很好 但它也使标记变得平滑 而且它们太可怕了

随机推荐

  • 如何通过 PHP App Engine 应用程序在 Google Compute Engine 实例上创建 cron 作业?

    由于我们的 App Engine 应用程序的架构 我们无法使用 Google 提供的 App Engine cron 服务 并且正在寻找替代选项 我们提出的一种可能的解决方案是允许我们的 App Engine PHP 应用程序在计算引擎实例
  • 计算div内的div

    我已经尝试过此页面上的解决方案来计算父 类 div 内的div 但不幸的是我的结果总是显示现有子 div 的总数 因为示例中的两个 span 标签都将输出 7 为了更好地理解 这是代码 html 缺少什么 我绝对是新手 谢谢
  • Hilt 和 WorkManager 错误:java.lang.NoSuchMethodException: [类 android.content.Context,类 androidx.work.WorkerParameters]

    我正在使用带有 Hilt 的工作管理器 但出现以下错误 我指的是Android教程https developer android com training dependency injection hilt jetpack https de
  • 如何以百分比形式获取mysql匹配结果?

    我在用匹配 Col1 对阵 Val 在mysql中 select match body against body var from articles 现在 如果完全匹配 我将得到数字形式的结果 例如 14 43 这个数字是什么意思 主要问题
  • B2C 和 Azure 应用服务的 CORS 问题

    我通过在控制器中使用 AddCors 和 EnableCors 在我的 ASP NET Angular 应用程序中启用了 CORS 我的应用程序正在与 AD B2C 页面进行通信 构建后 我在控制台中出现此错误 访问 XMLHttpRequ
  • 如何在 ChartJS 2.0 中隐藏超出 x 轴的值?

    如何在 ChartJS 2 0 中隐藏超出 x 轴的值 您会注意到图表突出超过了 60 标记 x 轴使用时间刻度 我设置了最大值和最小值 这是我的图表配置 type line data datasets label Scatter Data
  • 获取纸张下拉菜单的选定值

    我用的是聚合物paper dropdown menu https www polymer project org 0 5 docs elements paper dropdown menu html作为我的项目的下拉菜单 现在 当用户从下拉
  • Android 分辨率和模拟器未选择正确的图像

    我有一个关于 Android 分辨率及其在模拟器上如何表示的快速问题 我已经建立了一个测试项目来测试许多不同的分辨率以及它们在每个方向上的外观 所以我创建了drawable land ldpi mdpi hdpi xhpdi并对drawab
  • 使用 Intellij 调试 Scala 宏

    我有一个 sbt 项目 我运行 gen idea 来设置它以与 Intellij 12 4 一起使用 在一个项目中是我的主代码 另一个项目中有我的宏代码 当尝试通过以下测试文件调试我的宏时http docs scala lang org o
  • 创建一个新的颜色可绘制对象

    我正在尝试将十六进制值转换为整数 以便我可以创建一个新的颜色可绘制对象 我不确定这是否可能 但根据文档 https developer android com reference android graphics drawable Colo
  • getApplication() 与 getApplicationContext()

    我找不到令人满意的答案 所以我们开始 这是怎么回事Activity Service getApplication and Context getApplicationContext 在我们的应用程序中 两者都返回相同的对象 在一个Activ
  • 大数据库用什么DB?

    我正在着手一个项目 在不久的将来可能会跨越数百万行 所以我正在研究我使用的数据库 因为这肯定会证明是一个问题 据我所知 一旦表的行数达到 2 000 000 行 SQL 的所有版本都会出现问题 对于这些大型项目有推荐的好数据库吗 这是我正在
  • 为什么 Python 3 http.client 比 python-requests 快这么多?

    我今天测试了不同的 Python HTTP 库 我意识到http client https docs python org 3 library http client html库的执行速度似乎比requests http docs pyth
  • C 中指针的冒泡排序,输入末尾的预期声明或语句

    我尝试使用指针引用数组元素来实现冒泡排序 而不是使用数组索引 void bubble p long long int main long count 10 int i long data 5 2 1 7 10 6 8 4 9 0 bubbl
  • 缺少 Haskell 原语来连续将函数应用于列表的每个元素?

    在 Haskell 中 众所周知map原语可用于将给定函数应用于all列表的元素 gt map toUpper abcd ABCD gt 在尝试生成有限集 列表 的所有分区时 以下类似的原语会很方便 gt sap toUpper abcd
  • MySQL 中的一对多查询

    在 MySQL 中查询一对多的最佳方式是什么 这是我正在开发的数据库的简化版本 如果有什么看起来不对劲告诉我 CREATE TABLE Tenant tenant id int NOT NULL first name varchar 20
  • JAVA 中的四舍五入

    我想四舍五入 ex 的值 12 166666 gt 12 00 12 49999 gt 12 00 12 5111 gt 13 00 12 9999 gt 13 00 我想将 50 派塞四舍五入 你可以看看Math round double
  • 在cocos2D游戏环境中应用缩放效果?

    我正在开发一款游戏cocos2D游戏引擎并加载所有sprites当它加载关卡时 现在因为一些sprites 障碍物 高于 320 像素 因此看起来很难检查出来 所以为了方便起见我想申请ZOOM IN and ZOOM out效果 一次最小化
  • C# 动态创建 LinkBut​​ton 命令事件处理程序

    所以我这里有一个奇怪的情况 我有一个 System Web UI WebControls WebParts EditorPart 类 它呈现一个 搜索 按钮 当您单击此按钮时 它的 clickHandler 方法会执行数据库搜索 并为其返回
  • ND 输入的 im2col 算法

    我正在尝试为输入维度 gt 2D 编写自己的 im2col 算法 目前我正在研究 Matlab im2col 的实现 但是 我找不到任何有关二维以上输入的情况的文档 如果我将 3D 张量输入到函数中 我确实会得到输出 不过我不太明白你是如何