【问题标题】:python image edge detectionpython图像边缘检测
【发布时间】:2020-12-20 21:44:59
【问题描述】:

有没有一种快速的方法来在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

【问题讨论】:

    标签: python image-processing edge-detection


    【解决方案1】:

    某些细节取决于您是否需要任何填充以便为所有数组获得相同的输出尺寸。假设您没有,那么这应该可以解决问题:

    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])
    

    (请注意,我按照第一个索引被认为是“垂直”的约定交换了 HarrVarr 的定义)

    如果您不熟悉 Python 的切片符号,请参阅 https://docs.python.org/3/library/stdtypes.html#common-sequence-operations

    【讨论】:

      猜你喜欢
      • 2010-12-01
      • 1970-01-01
      • 2020-10-11
      • 2020-11-18
      • 2021-03-01
      • 1970-01-01
      • 2013-08-28
      相关资源
      最近更新 更多