如何将边距放入图像中?

时间:2015-11-07 12:38:06

标签: matlab matrix binary-image

我有一个18x18像素的二进制图像,我想在此图像周围放置边距,目的是获得20x20像素的图像。

Description of the problem

图像是二进制的,它可以用1和0的矩阵表示。 0像素是黑色,1像素是白色。我需要在我拥有的图像周围放置1个零像素的边距。

我该怎么做?

4 个答案:

答案 0 :(得分:3)

图像处理工具箱中的padarray功能可用于此目的:

B=padarray(A,[1,1])

答案 1 :(得分:1)

A=ones(18,18);%// your actual image
[M,N] = size(A);
B = zeros(M+2,N+2);%// create matrix
B(2:end-1,2:end-1) = A; %// matrix with zero edge around.

首先获取图像矩阵的大小,然后创建一个带有两个额外列和行的零矩阵,之后您可以将除外边缘以外的所有内容设置为图像矩阵。

大小为[4x6]的非方矩阵的示例:

B =

     0     0     0     0     0     0     0     0
     0     1     1     1     1     1     1     0
     0     1     1     1     1     1     1     0
     0     1     1     1     1     1     1     0
     0     1     1     1     1     1     1     0
     0     0     0     0     0     0     0     0

答案 2 :(得分:0)

首先制作一个20乘20的矩阵Zimg,然后将图像矩阵插入零矩阵中:

Zimg(2:end-1,2:end-1)=img;

答案 3 :(得分:0)

让我们变得束手无策:

%// Data:
A = magic(3);                 %// example original image (matrix)
N = 1;                        %// margin size

%// Add margins:
A(end+N, end+N) = 0;          %// "missing" values are implicitly filled with 0
A = A(end:-1:1, end:-1:1);    %// now flip the image up-down and left-right ...
A(end+N, end+N) = 0;          %// ... do the same for the other half ...
A = A(end:-1:1, end:-1:1);    %// ... and flip back