我正在尝试在 matlab 中编写自己的扩张和侵蚀函数。我有一个有效的实现,但它改变了输出图像的大小。
这就是我所拥有的:
侵蚀
function eroded = erode(X)
eroded = col2im(min(im2col(X, [3 3])), [3 3], size(X));
end
扩张
function dilated = dilate(X)
dilated = col2im(max(im2col(X, [3 3])), [3 3], size(X));
end
这些在视觉上可以工作,但是当我尝试覆盖用它们制作的区域时,它会变得一团糟,因为图像矩阵的尺寸已经改变。我已经确定问题出在col2im
或中im2col
。谁能告诉我我做错了什么?
玩弄它,我发现它可能与如何将转换后的矩阵中的列的大小减小到 1min
相关联。max