Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python图像边缘检测_Python_Image Processing_Edge Detection - Fatal编程技术网

python图像边缘检测

python图像边缘检测,python,image-processing,edge-detection,Python,Image Processing,Edge Detection,python中是否有快速提取水平、垂直、对角和反对角边的方法,每个边都必须是单独的矩阵 我这样做似乎很慢,可能有一些索引问题 def ImageEdges(arr): Harr , Varr , Darr,Marr= arr*0,arr*0,arr*0,arr*0 for i in range(arr.shape[0]-1): for j in range(arr.shape[1]-1): Harr[i,j] = np.abs(arr[i,

python中是否有快速提取水平、垂直、对角和反对角边的方法,每个边都必须是单独的矩阵 我这样做似乎很慢,可能有一些索引问题

def ImageEdges(arr):
    Harr , Varr , Darr,Marr= arr*0,arr*0,arr*0,arr*0
    for i in range(arr.shape[0]-1):
        for j in range(arr.shape[1]-1):
            Harr[i,j] = np.abs(arr[i,j] - arr[i+1,j])
            Varr[i,j] = np.abs(arr[i,j] - arr[i,j+1])            
            Darr[i,j] = np.abs(arr[i,j] - arr[i+1,j+1])   
            Marr[i,j] = np.abs(arr[i,j] - arr[i+1,j-1])            

    return Harr,Varr, Darr,Marr

一些细节取决于是否需要任何填充,以便为所有数组获得相同的输出维度。假设你没有,那么这应该可以做到:

Harr = np.abs(arr[:,:-1]-arr[:,1:])
Varr = np.abs(arr[:-1,:]-arr[1:,:])
Darr = np.abs(arr[:-1,:-1]-arr[1:,1:])
Marr = np.abs(arr[:-1,1:]-arr[1:,:-1])
(注意,我按照第一个索引被视为“垂直”的惯例,交换了
Harr
Varr
的定义)


看看您是否不熟悉Python的切片表示法,一些细节将取决于您是否需要任何填充,以便为所有数组获得相同的输出维度。假设你没有,那么这应该可以做到:

Harr = np.abs(arr[:,:-1]-arr[:,1:])
Varr = np.abs(arr[:-1,:]-arr[1:,:])
Darr = np.abs(arr[:-1,:-1]-arr[1:,1:])
Marr = np.abs(arr[:-1,1:]-arr[1:,:-1])
(注意,我按照第一个索引被视为“垂直”的惯例,交换了
Harr
Varr
的定义)

看看您是否不熟悉Python的切片符号