首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将二维图像像素存储到一维阵列中?

如何将二维图像像素存储到一维阵列中?
EN

Stack Overflow用户
提问于 2014-11-17 14:40:54
回答 1查看 1.4K关注 0票数 0

我想将m(i,j)值存储在一个由2行组成的一维数组中。第1行wd是m(ij)计数器,第2行w是每个iteration.How的m(ij)值,我可以这样做吗?请帮帮忙。想要像数组一样将二维数组转换为一维数组(2,计数)。

代码语言:javascript
复制
     [e,f] = size(outImg);    
    m = zeros(e,f);    
    counter=0
    w = [1 2 4 8; 16 32 64 128; 256 512 1024 2048; 4096 8192 16384 32768];    
    for i = 1:e-3    
        for j = 1:f-3    
            I = double(outImg((i:i+3),(j:j+3)));  
            counter=counter+1;  
            m(i,j) = sum(sum(I .* w));   
        end     
    end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-17 14:46:00

在您的代码中,最快的方法(虽然不一定是最有效的,但与您的代码最兼容)将分配一个2D数组,并在每次迭代时填充这个数组。引用my previous post to you,此循环迭代的总次数为(e-3) x (f-3)次数。因此,像你在帖子中所说的那样,分配一个2D数组。只有这一次,将count替换为(e-3)*(f-3)

如下所示:

代码语言:javascript
复制
[e,f] = size(outImg);    
m = zeros(e,f);    
counter=0;
counts = zeros(2, (e-3)*(f-3)); %// NEW
w = [1 2 4 8; 16 32 64 128; 256 512 1024 2048; 4096 8192 16384 32768];    
for i = 1:e-3    
    for j = 1:f-3    
        I = double(outImg((i:i+3),(j:j+3)));  
        counter=counter+1;  
        m(i,j) = sum(sum(I .* w));  
        counts(:,counter) = [counter; m(i,j)]; %// NEW
    end     
end

因此,您将有一个名为counts of size 2 x (e-3)*(f-3)的2D数组,其中每一列都表示“迭代次数”和循环中每个迭代中每个像素邻域的总和的值。

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

https://stackoverflow.com/questions/26975140

复制
相关文章

相似问题

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