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 算法 的相关文章

  • 什么是 ANN 中的纪元以及它如何转换为 MATLAB 中的代码?

    我试图理解 并可视化 训练人工神经网络的时代到底是什么 我们有一个包含约 7000 个产品的训练集 其中有 10 个特征 输入 这些产品必须根据这 10 个输入分为 7 个类别 我们的 ANN 有 10 个输入 这些输入进入由 10 个神经
  • MATLAB 特征函数

    我很好奇哪里可以找到完整的描述FEATURE功能 它接受哪些论点 没有找到文档 我只听说过memstats and getpid 还要别的吗 gt gt which feature built in undocumented 注意 更完整的
  • MATLAB 教程中的 SIFT 实现

    我正在寻找 MATLAB 中的一些基本 SIFT 实现 我需要从第一原则来写它 另外 我正在寻找一些可以解释程序中发生的事情的内容 Vedali 的代码和 David Lowe 的代码超出了我的理解范围 如果您是 Matlab 用户 您一定
  • 有没有办法在matlab中进行隐式微分

    我经常使用 matlab 来帮助我解决数学问题 现在我正在寻找一种在 matlab 中进行隐式微分的方法 例如 我想区分y 3 sin x cos y exp x 0关于dy dx 我知道如何使用数学方法通常做到这一点 但我一直在努力寻找使
  • 在 Matlab 中将 datenum 转换为 datetime 的最快方法

    我在 Matlab 中将 datenum 转换为 datetime 时遇到问题 Given dnum floor now floor now 1 我尝试了以下方法 datenum dnum 但这没有用 我发现有效的方法是 datetime
  • OpenCV 机器学习算法的 CSV 格式

    OpenCV 中的机器学习算法似乎使用以 CSV 格式读取的数据 参见示例这个 cpp文件 https code ros org trac opencv browser trunk opencv samples c tree engine
  • Pytorch RuntimeError:张量 a (4) 的大小必须与非单维 0 处张量 b (3) 的大小匹配

    我使用的代码来自here https www learnopencv com image classification using transfer learning in pytorch 训练模型来预测印刷样式编号0 to 9 idx t
  • PHP 中的 imagecolortransparent 不起作用

    我想改变图像中的白色 http www arso gov si vreme napovedi 20in 20podatki radar gif http www arso gov si vreme napovedi 20in 20podat
  • 括号中的波形符字符

    在 MATLAB 中 以下代码执行什么操作 m func returning matrix 波浪号运算符 的作用是什么 在 Matlab 中 这意味着不要将函数中相应的输出参数分配到赋值的右侧 因此 如果func returning mat
  • 黑白随机着色的六角格子

    我正在尝试绘制一个 10 000 x 10 000 随机半黑半白的六边形格子 我不知道如何将该格子的六边形随机填充为黑色和白色 这是我真正想要从这段代码中得到的示例 但我无法做到 https i stack imgur com RkdCw
  • matlab中的排列函数是如何工作的

    这是一个有点愚蠢的问题 但我似乎无法弄清楚排列在 matlab 中是如何工作的 以文档为例 A 1 2 3 4 permute A 2 1 ans 1 3 2 4 到底是怎么回事 这如何告诉 matlab 3 和 2 需要交换 哇 这是我迄
  • 检测植物图片中的所有分支

    我想知道有什么可以检测下图中的所有绿色树枝 目前我开始应用 Frangi 过滤器 options struct FrangiScaleRange 5 5 FrangiScaleRatio 1 FrangiBetaOne 1 FrangiBe
  • 如何找到平面和 3d 矩阵之间的交平面

    如果我有一堆图像并且尺寸如下 size M 256 256 124 我有 3 个点 它们的坐标是 coor a 100 100 124 coor b 256 156 0 coor c 156 256 0 如何创建 M 与这 3 个点定义的平
  • 从凸点获取角点

    我编写了算法来提取图像中显示的点 它们形成凸形 我知道它们的顺序 如何从这些点中提取角点 顶部 3 个和底部 3 个 我正在使用opencv 如果你已经有了物体的凸包 并且该包包含角点 那么你需要做的就是简化包直到它只有 6 个点 有很多方
  • Java - 调整图像大小而不损失质量

    我有 10 000 张照片需要调整大小 因此我有一个 Java 程序来执行此操作 不幸的是 图像的质量损失很大 而且我无法访问未压缩的图像 import java awt Graphics import java awt AlphaComp
  • 找到图像特征宽度的正确方法和Python包

    输入是一个在黑色背景上带有彩色 抱歉 垂直线的光谱 给定该带的近似 x 坐标 用 X 标记 我想找到该带的宽度 我对图像处理不熟悉 请引导我前往正确的方法图像处理和Python图像处理package也能起到同样的作用 我认为 PIL Ope
  • 我需要什么库才能在 Java 中访问这个 com.sun.image.codec.jpeg?

    我正在用java创建一个图像水印程序 并导入了以下内容 import com sun image codec jpeg JPEGCodec import com sun image codec jpeg JPEGEncodeParam im
  • MATLAB 中的霍夫变换

    有谁知道如何使用霍夫变换来检测二值图像中最强的线 A zeros 7 7 A 6 10 18 24 36 38 41 1 使用 rho theta 格式 其中 theta 以 45 为步长 从 45 到 90 以及如何在 MATLAB 中显
  • “Desort”向量(撤消排序)

    在Matlab中 sort返回排序后的向量和索引向量 显示哪个向量元素已移动到以下位置 v ix sort u Here v是一个包含所有元素的向量u 但已排序 ix是一个向量 显示每个元素的原始位置v in u 使用 Matlab 的语法
  • 图像处理 - 使用 opencv 进行服装分割

    我正在使用 opencv 进行服装特征识别 第一步 我需要通过从图像中移除脸部和手来分割 T 恤 任何建议表示赞赏 我建议采用以下方法 Use 阿德里安 罗斯布鲁克的用于检测皮肤的皮肤检测算法 谢谢罗莎 格隆奇以获得他的评论 在方差图上使用

随机推荐

  • 如何通过 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 张量输入到函数中 我确实会得到输出 不过我不太明白你是如何