相关疑难解决方法(0)

在Python中实现MATLAB的im2col"滑动"

问:如何加快速度?

下面是我对Matlab的im2col '滑动'的实现,以及返回每个第n列的附加功能.该函数采用图像(或任意2个暗淡的数组)并从左到右,从上到下滑动,拾取给定大小的每个重叠子图像,并返回其列为子图像的数组.

import numpy as np

def im2col_sliding(image, block_size, skip=1):

    rows, cols = image.shape
    horz_blocks = cols - block_size[1] + 1
    vert_blocks = rows - block_size[0] + 1

    output_vectors = np.zeros((block_size[0] * block_size[1], horz_blocks * vert_blocks))
    itr = 0
    for v_b in xrange(vert_blocks):
        for h_b in xrange(horz_blocks):
            output_vectors[:, itr] = image[v_b: v_b + block_size[0], h_b: h_b + block_size[1]].ravel()
            itr += 1

    return output_vectors[:, ::skip]
Run Code Online (Sandbox Code Playgroud)

例:

a = np.arange(16).reshape(4, 4)
print a
print im2col_sliding(a, (2, 2))  # return every …
Run Code Online (Sandbox Code Playgroud)

python performance numpy image-processing python-2.7

15
推荐指数
2
解决办法
8664
查看次数

使用python和numpy的2d卷积

我试图使用numpy在python中执行2d卷积

我有一个2d数组,如下所示,行内核为H_r,列为H_c

data = np.zeros((nr, nc), dtype=np.float32)

#fill array with some data here then convolve

for r in range(nr):
    data[r,:] = np.convolve(data[r,:], H_r, 'same')

for c in range(nc):
    data[:,c] = np.convolve(data[:,c], H_c, 'same')

data = data.astype(np.uint8);
Run Code Online (Sandbox Code Playgroud)

它不会产生我期望的输出,这段代码看起来不错,我认为问题在于从float32到8bit的转换.什么是最好的方法来做到这一点

谢谢

python numpy convolution

14
推荐指数
3
解决办法
4万
查看次数