Image 如何在matlab中对图像进行垂直零填充?

Image 如何在matlab中对图像进行垂直零填充?,image,matlab,padding,zero,Image,Matlab,Padding,Zero,我想制作一个矩形到正方形的图像,只需要垂直的零填充。有什么办法吗?您可以使用图像处理工具箱函数来完成此任务。可以在垂直或水平方向指定要填充的行数: padarray(data, [vertical_padding, horizontal_padding]) 因此,在您的情况下,要创建方形图像,您可以执行以下操作: img = rand(20, 40); padsize = (size(img, 2) - size(img, 1)) / 2 newimg = padarray(img, [pa

我想制作一个矩形到正方形的图像,只需要垂直的零填充。有什么办法吗?

您可以使用图像处理工具箱函数来完成此任务。可以在垂直或水平方向指定要填充的行数:

padarray(data, [vertical_padding, horizontal_padding])
因此,在您的情况下,要创建方形图像,您可以执行以下操作:

img = rand(20, 40);
padsize = (size(img, 2) - size(img, 1)) / 2

newimg = padarray(img, [padsize, 0]);


这假定顶部和底部的填充大小相等。如果不是,则需要使用
padarray
两次,分别填充顶部和底部。

您可以使用图像处理工具箱功能来完成此操作。可以在垂直或水平方向指定要填充的行数:

padarray(data, [vertical_padding, horizontal_padding])
因此,在您的情况下,要创建方形图像,您可以执行以下操作:

img = rand(20, 40);
padsize = (size(img, 2) - size(img, 1)) / 2

newimg = padarray(img, [padsize, 0]);


这假定顶部和底部的填充大小相等。如果没有,则需要使用
padarray
两次来分别填充顶部和底部。

在不太可能的情况下,您没有图像处理工具箱,这仍然是非常简单的:

padsize = (size(img, 2) - size(img, 1)) / 2
pad = zeros(padsize, size(img,2));
newimg = [pad; img; pad]
注:如果行数和列数之间的差值为奇数,则上述操作将失败。更稳健的方法是:

padsize = floor((size(img, 2) - size(img, 1)) / 2)
pad = zeros(padsize, size(img,2));
extraLineWhenNeeded = zeros(mod(size(img, 2) - size(img, 1), 2) == 1 ,size(img,2)); % Note that extra line will have 0 rows if it's not needed i.e. when the difference between the number of rows and columns of img is even
newimg = [pad; img; pad; extraLineWhenNeeded]

在不太可能的情况下,您没有图像处理工具箱,这仍然是非常简单的:

padsize = (size(img, 2) - size(img, 1)) / 2
pad = zeros(padsize, size(img,2));
newimg = [pad; img; pad]
注:如果行数和列数之间的差值为奇数,则上述操作将失败。更稳健的方法是:

padsize = floor((size(img, 2) - size(img, 1)) / 2)
pad = zeros(padsize, size(img,2));
extraLineWhenNeeded = zeros(mod(size(img, 2) - size(img, 1), 2) == 1 ,size(img,2)); % Note that extra line will have 0 rows if it's not needed i.e. when the difference between the number of rows and columns of img is even
newimg = [pad; img; pad; extraLineWhenNeeded]