我正在使用 Efros and Leung Algorithm 对图像执行纹理合成.我的目标是增加当前纹理图像的大小,为此,我想用零填充当前图像矩阵的所有边。
我目前的计划是给定大小为 MxN 的原始图像矩阵和 P 的所需增长大小:
(1) 创建大小为(M+2P)x(N+2P)的目标矩阵
(2) 设置target(i+P,j+P) = original(i,j)的值
(3) Run Efros 和 Leung
有没有一种方法可以消除 (1) 和 (2) 并仅对原始图像进行操作以在所有方向上用 P 零填充它?
最佳答案
如果您有权访问图像处理工具箱,则可以使用函数 PADARRAY :
imgPadded = padarray(img, [p p], 0, 'both');
否则你可以简单地使用矩阵索引:
sz = size(img);
imgPadded = zeros([sz(1:2)+2*p size(img,3)], class(img));
imgPadded((1:sz(1))+p, (1:sz(2))+p, :) = img;
这应该适用于灰度和 RGB 图像。
关于matlab - 有没有一种有效的方法可以在所有边上用零填充矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8287289/