【问题标题】:How to divide image into block and add zero border for each block如何将图像划分为块并为每个块添加零边框
【发布时间】:2013-10-19 17:45:32
【问题描述】:

我有一个问题,我需要将图像分成块并为每个块添加零边框,一个或两个零就足够了,我为所有图像添加了边框但我想为每个图像块添加边框。

注意::: 没有任何大小的块,例如:4X4 块

img=round(100*rand(4,4));
[n,m]=size(img);
x=zeros(n+2,m+2);
%%%%%Applying zero padding to the image
for i=1:n+2
    for j=1:m+2
        if i==1 || i==n+2 || j==1 || j==m+2
            x(i,j)=0;
        else
            x(i,j)=img(i-1,j-1);
        end
    end
end
x

我需要在每个块一或两个零周围得到这样的输出

 0     0     0     0    0    0     0   0  
 0    84    80     0    0   65    85   0
 0    29    19     0    0   23    77   0
 0     0     0     0    0    0     0   0
 0     0     0     0    0    0     0   0
 0    84    80     0    0   66    74   0
 0    29    19     0    0   36    80   0
 0     0     0     0    0    0     0   0

【问题讨论】:

  • 我不知道你为什么删除并重新发布了这个问题。请明确预期的输出应该是什么样子。再说一遍:第二行应该是 0xx0xx0 还是 0xx00xx0?周围的边框不清楚之间是否应该有一个或两个分隔符。
  • 我删除并添加原因我在删除和添加后尝试编辑它我看到了编辑按钮

标签: matlab image-processing matrix block


【解决方案1】:
%n: Size of original matrix
n=size(img,1)
%prealloc new matrix
img2=zeros(n+3,n+3)
%p indicates indices to store img at
p=[(2:n/2+1),(n/2+3:n+2)]
%Copy img to the correct positions
img2(p,p)=img

【讨论】:

  • 感谢亲爱的丹尼尔的帮助,我需要这个再次感谢
  • 是正确的,但是如果我将图像大小更改为 256x256 会发生什么?
  • 经过 Luis Mendo 的更正,代码适用于所有偶数尺寸(2x2、4x4、6x6....)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多