小编Mar*_*urz的帖子

图像抽取后的异常直方图

使用:进行简单的图像抽取后img_decim_arr = img_arr[::2,::2],我获得的直方图与原始图像直方图非常相似:在此输入图像描述
使用:skimage.measure.block_reduce(img_arr, block_size = (2,2), func=np.mean)(2x2块平均)进行抽取,这是下采样的推荐方法(在某些讨论中在stackoverflow上找到)会产生非常有特色的直方图:在此输入图像描述
每隔一个箱子就更大了.我不确定这可能是由于一些混叠效应.任何人都可以解释并提供一些关于下采样如何影响图像(2D信号)直方图的理论提示?

python numpy image-processing

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

Scipy ndimage 形态学运算符使我的计算机内存 RAM (8GB) 饱和

我需要使用半径为 17 或更大的 3D 结构元素来计算 3D 形状数组 (400,401,401)、大小为 64320400 字节的形态学开度。结构元素 ndarray 的大小为 42875 字节。使用scipy.ndimage.morphology.binary_opening,整个过程消耗 8GB RAM。

I have read scipy/ndimage/morphology.py on GitHub, and as far as I can tell, the morphology erosion operator is implemented in pure C. It is to difficult for me to understand the ni_morphology.c source, so I haven't found any part of this code which leads to such enormous memory utilization. Adding more RAM is not a workable solution, since memory usage may increase …

python numpy image-processing scipy mathematical-morphology

5
推荐指数
2
解决办法
1193
查看次数

算术运算中的奇怪类型推广

为什么这个cython功能:

cimport numpy as np
cimport cython

def foo(np.uint32_t b):
    cdef np.int32_t a = 0


    if a-b <0: return 0
    else: return 1
Run Code Online (Sandbox Code Playgroud)

对于foo(1),返回1?我在C中编译了类似的代码,并没有观察到两个操作数(a,b)都被提升为unsigned int.

python cython

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

NumPy vs Cython - 嵌套循环这么慢?

我很困惑,与Cython相比,NumPy嵌套循环的3D数组是如此之慢.我写了一些简单的例子.

Python/NumPy版本:

import numpy as np

def my_func(a,b,c):
    s=0
        for z in xrange(401):
        for y in xrange(401):
            for x in xrange(401):
                if a[z,y,x] == 0 and b[x,y,z] >= 0:
                    c[z,y,x] = 1
                    b[z,y,x] = z*y*x
                    s+=1
    return s

a = np.zeros((401,401,401), dtype=np.float32)
b = np.zeros((401,401,401), dtype=np.uint32)
c = np.zeros((401,401,401), dtype=np.uint8)

s = my_func(a,b,c)
Run Code Online (Sandbox Code Playgroud)

Cythonized版本:

cimport numpy as np
cimport cython

@cython.boundscheck(False)
@cython.wraparound(False)
def my_func(np.float32_t[:,:,::1] a, np.uint32_t[:,:,::1] b, np.uint8_t[:,:,::1] c):
    cdef np.uint16_t z,y,x
    cdef np.uint32_t s = 0

    for z in …
Run Code Online (Sandbox Code Playgroud)

python numpy

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

形态骨架-scikit图像,pymorph,OpenCV-Python之间的差异?

我注意到各种面向Python科学图形的软件包之间的骨架几何存在显着差异。

使用OpenCV-Python的骨架:

使用OpenCV-Python的骨架

使用pymorph的骨架:

使用pymorph的骨架

使用scikit-image的骨骼:

使用scikit图像的骨架

可以观察到,OpenCV-Python和pymorph产生相同的骨架,而scikit-image则不然。骨骼差异的原因是什么?哪一个是合适的骨架?

python morphological-analysis scikit-image

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

切片3d numpy数组 - 误解

我知道对于3d numpy数组我可以索引如下:

item = x[0,2,1] 
Run Code Online (Sandbox Code Playgroud)

要么

item = x[0][2][1]
Run Code Online (Sandbox Code Playgroud)

但切片工作对我来说很奇怪:

item = x[:,:,1]
Run Code Online (Sandbox Code Playgroud)

是不一样的:

item = x[:][:][1]
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

python numpy

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