首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定三维核的可分性(一个一维核能得到三维卷积的结果吗?)

确定三维核的可分性(一个一维核能得到三维卷积的结果吗?)
EN

Stack Overflow用户
提问于 2014-12-11 07:59:13
回答 1查看 367关注 0票数 1

我有三个大小为2×2×2的内核(如下面由ker1ker2ker3定义的)。我想知道如何确定这些核是否是可分离的(用于3D卷积)。我读过在线如何在MATLAB中为2D内核做到这一点。但是3D数组的排名!嗯,我不认为有这样的事情。也许还有其他方法?

主要问题是:一个1D 内核能不能得到三维卷积的结果(不使用FFT)?

MATLAB命令convn对于三维阵列卷积的计算是非常快速的。但是,我正在编写一个独立于MATLAB的独立的MATLAB应用程序,不能在代码中使用convn。如果能够确定上述内核的可分性,这将极大地帮助我在代码中使用1D卷积,这也很容易实现。

我很感谢社会上的朋友们对这件事的看法。

代码语言:javascript
复制
>> % I am investigating this in MATLAB
ker1(:,:,1) =
    -1     1
    -1     1
ker1(:,:,2) =
    -1     1
    -1     1

>> 
ker2(:,:,1) =
    -1    -1
    -1    -1
ker2(:,:,2) =
     1     1
     1     1

>> 
ker3(:,:,1) =
    -1    -1
     1     1
ker3(:,:,2) =
    -1    -1
     1     1

>> my3Darray = ones( 200,200,200 );
>> res1 = convn( my3Darray, ker1 );
>> res2 = convn( my3Darray, ker2 );
>> res3 = convn( my3Darray, ker3 );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-11 17:22:48

是的,这三个张量都可以写成三个向量*的外积a*b*c

  1. ker1 = [ 1,1] * [-1,1] * [ 1,1]
  2. ker2 = [ 1,1] * [ 1,1] * [-1,1]
  3. ker3 = [-1,1] * [ 1,1] * [ 1,1]

(当然,这不是Matlab语法。你可以认为第一个向量是列向量,第二个向量是行向量,第三个向量是‘顶’向量。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27417906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档