【发布时间】:2023-03-24 10:25:02
【问题描述】:
matlab 中的col2im 和im2col 函数对于图像处理很重要,但是通过谷歌搜索,python 没有有效的实现。
特别是我想用 numpy 为 python 重写 col2im
我有一个矩阵,我想将它的列重新排列成块。
通过测试我发现的实现并不可靠,它给出的结果与 matlab 不同。
对于 im2col,以下实现可以正常工作
def im2col_sliding(A, size):
dy, dx = size
xsz = A.shape[1] - dx + 1
ysz = A.shape[0] - dy + 1
R = np.empty((xsz * ysz, dx * dy))
for i in xrange(ysz):
for j in xrange(xsz):
R[i * xsz + j, :] = A[i:i + dy, j:j + dx].ravel()
return R
但是相关的 col2im 是假的!
假设我有一个大小为 (V) = 1 69169 的矩阵 V 在matlab中运行:
X = col2im(V, [3 3], [265 265], 'sliding');
它给我的 size(X) 是 263 263
但是,在与我为 im2col 发布的代码相关的 python 实现中,返回 size (263 2) 而不是 (263 263) 的 ndarray 并且 值不正确强>!
任何帮助
【问题讨论】:
-
也许您可以从指定您希望这些函数做什么开始?众所周知,matlab 函数名称是不言自明的。
-
Im2col 问题 - stackoverflow.com/q/30109068
-
@PaulPanzer 我有一个 isze size(V) 的 V 矩阵是 1 69169 X = col2im(V, [3 3], [265 265], 'sliding');它给我 size(X) is 263 263 在与我为 im2col 发布的代码相关的 python 实现中,返回一个大小为 (263 2) 而不是 263 263 的数组,并且值不正确
-
@hpaulj Im2col 对我来说很好并且工作正常,但是 col2im 不是这样
-
你试过什么col2im?您没有提供 im2col 的来源;应该如何猜测“相关”的?