How can I put margins in an image?

核能气质少年 提交于 2019-11-27 08:06:54

问题


I have a binary image of 18x18 pixels and I want to put margins around this image with the purpose of obtaining an image 20x20 pixels.

The image is binary and it can be represented by a matrix of 1s and 0s. The 0 pixels are in black colour and the 1 pixels are in white colour. I need to put margins of 1 pixel of zeros around the image that I have.

How can I do it?


回答1:


Let's get hackish:

%// 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



回答2:


The padarray function from the image processing toolbox can be used for this purpose:

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



回答3:


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.

This first gets the size of your image matrix, and creates a zero matrix with two additional columns and rows, after which you can set everything except the outer edges to the image matrix.

Example with a non-square matrix of size [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



回答4:


First make a matrix of 20 by 20 zeroes, Zimg, then insert your image matrix into the matrix of zeroes:

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


来源:https://stackoverflow.com/questions/33582856/how-can-i-put-margins-in-an-image

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!