首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在图像中寻找重叠块Hu矩的性能问题

在图像中寻找重叠块Hu矩的性能问题
EN

Stack Overflow用户
提问于 2017-08-11 17:53:56
回答 1查看 49关注 0票数 0

我正在研究一种算法(在MATLAB中),它需要在图像中找到重叠块的Hu矩。我在列矩阵(im2col(.,‘滑动’)中转换图像,然后计算每个列的Hu矩。为了计算512X512图像块的Hu矩,我的系统需要14到15分钟。代码如下:

代码语言:javascript
复制
d=im2col(A,[m n],'sliding');

[mm nn]=size(d);
for j=1:nn
    d_temp=d(:,j);
    d_pass_temp=col2im(d_temp,[n n], [n n], 'distinct');
    [mn_t vr_t]=new_hu_moment(d_pass_temp);
    [mn]=[mn mn_t];
    [vr]=[vr vr_t];
end

“new_hu_moment”是我自己制作的函数,返回每个块的hu矩的均值和方差。

我的系统配置是6GB内存的I3处理器。

  1. 请推荐此代码的性能等级。
  2. matlab中是否有计算重叠块的7 Hu矩的函数?
EN

回答 1

Stack Overflow用户

发布于 2017-08-14 12:02:58

1.在循环前预先分配mn和vr,如下所示

代码语言:javascript
复制
% I suppose that new_hu_moment returns row of known length nvals
mn=zeros(nn,nvals); 
vr=zeros(nn,nvals);
for k=1:nn,
    ...
    [mn(k,:) vr(k,:)]=new_hu_moment(d_pass_temp);
    ...
end

我强烈建议不要使用i和j作为变量名,因为它们是假想单位的同义词。在旧的MATLAB中,它会导致错误。

2.如果您有足够的内存,并且需要循环处理独立的数据块,请使用parfor或cellfun/arrayfun。

3.如果代码没有您想要的那么快,请使用轮廓仪查找性能瓶颈

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

https://stackoverflow.com/questions/45641154

复制
相关文章

相似问题

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