0
我想做一个矩形图像,以垂直零填充方形图像。有什么办法吗?如何垂直填零图像matlab?
我想做一个矩形图像,以垂直零填充方形图像。有什么办法吗?如何垂直填零图像matlab?
您可以使用图像处理工具箱功能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]