matlab - 有没有一种有效的方法可以在所有边上用零填充矩阵?

标签 matlab image-processing matrix padding

我正在使用 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/

相关文章:

java - 获取已经随机生成矩阵的整数

excel - 将图像和表格链接到 MS Word

python - 如何使用 win32com 打开单个 Matlab 实例?

Matlab : Minimum of matrix

image-processing - 使用 Electron js 转换原始图像

对象构造中的 C++ 错误。未解析的外部符号

c++ - C++ 中 bwdist 的替换函数

math - 在哪里可以找到有关线生长算法的信息?

java - 有图像的Java库吗?

c - C中矩阵实现之间的差异