如何将图像分成块并为每个块添加零边框

时间:2013-10-19 17:45:33

标签: matlab image-processing matrix block

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

note :::阻止任何大小的块为例: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

1 个答案:

答案 0 :(得分:2)

%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