相关疑难解决方法(0)

Python中速度最快的2D卷积或图像滤镜

几个用户询问在numpy的或SciPy的图像卷积的速度或存储器消耗[ 1,2,3,4 ].从回答和我使用Numpy的经验来看,我相信与Matlab或IDL相比,这可能是numpy的一个主要缺点.

到目前为止,答案都没有解决整个问题,所以这里是:"在Python中计算2D卷积的最快方法是什么?" 常见的python模块是公平游戏:numpy,scipy和PIL(其他?).为了进行具有挑战性的比较,我想提出以下规则:

  1. 输入矩阵分别为2048x2048和32x32.
  2. 单精度或双精度浮点都是可以接受的.
  3. 将输入矩阵转换为适当格式所花费的时间不计算 - 只是卷积步骤.
  4. 用你的输出替换输入矩阵是可以接受的(任何python库支持吗?)
  5. 对常见C库的直接DLL调用是好的 - lapack或scalapack
  6. PyCUDA就出局了.使用自定义GPU硬件是不公平的.

python optimization numpy scipy python-imaging-library

20
推荐指数
2
解决办法
2万
查看次数

是否有Python等效的MATLAB的conv2函数?

Python或其任何模块是否具有MATLAB的conv2功能?更具体地说,我对与conv2(A, B, 'same')MATLAB 中进行相同计算的东西感兴趣.

python matlab matrix convolution

6
推荐指数
2
解决办法
8085
查看次数

如何计算python中大矩阵(平均滤波器)的每个坐标的有效局部平均值

我有大矩阵,4000x4000我需要计算每个x的本地平均值11x11窗口,这个矩阵的y一般它必须是这样的

for x in range(4000)
  for y in range(4000)
    b[x,y]=mean(a[x-5:x+5,y-5:y+5]
Run Code Online (Sandbox Code Playgroud)

但这会花很多时间这是一种更有效的方法吗?谢谢.

python arrays average local matrix

3
推荐指数
1
解决办法
2390
查看次数

仅使用 NumPy 的 Python 图像卷积

我正在尝试仅使用 NumPy 来实现图像卷积代码,类似于cv2.filter2D(...)的做法。

import numpy as np
import time

# kernal
H = np.array([[0,1,0],[1,-4,1],[0,1,0]])

# image
SEED = 23
img = np.random.RandomState(SEED).randint(10, size=(4, 4))

# shapes
Hi, Wi = img.shape
Hk, Wk = H.shape
hk = Hk//2
wk = Wk//2

# padding
new_img = np.pad(img, (hk, wk), 'constant', constant_values=0)
pHi, pWi = new_img.shape

print('img: ')
print(new_img)

print('kernal: ')
print(H)
print('\n')

# image convolution
##################################################
# Method 1
st = time.time()

out = np.zeros((Hi, Wi))
for i in range(hk, …
Run Code Online (Sandbox Code Playgroud)

python numpy image-processing convolution

3
推荐指数
1
解决办法
3281
查看次数

从第一原理简单地"模糊"表示python中的图像的数组

我有一个图像,包括两个任意放置的黑色1px"斑点"在白色画布上100px到200px.我试图通过将一些相邻像素(每个blob的半径10px内)转为黑色来模糊这些斑点.我已经将以下代码放在一起,但我不确定下一步...

import numpy as np
from PIL import Image 
from scipy import ndimage
from matplotlib import pyplot
from matplotlib import cm
from scipy.misc import imsave

im = Image.open("test.png")
pix = np.asarray(im)
new_pix = np.copy(pix[:,:,0]) # need this otherwise can't write to the pix array.
pix_to_enlarge = np.where(new_pix != 255)
pixels_to_enlarge_by = 10
i=0
for each_pixel in pix_to_enlarge[0]: # this cycles through each non-white pixel
    for y in range(len(new_pix)): # this looks across the length (down) the page
        for x in …
Run Code Online (Sandbox Code Playgroud)

python numpy image-processing python-imaging-library python-2.7

1
推荐指数
1
解决办法
2912
查看次数