您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

高斯边缘检测的拉普拉斯算术的Python实现

高斯边缘检测的拉普拉斯算术的Python实现

matlab edge()应该做什么

scipy的LoG过滤器仅执行上述步骤1。我实现了以下代码段来模仿上面的步骤2?4:

import scipy as sp
import numpy as np
import scipy.ndimage as nd
import matplotlib.pyplot as plt
from skimage import data

# lena = sp.misc.lena() this function was deprecated in version 0.17
img = data.camera()  # use a standard image from skimage instead
LoG = nd.gaussian_laplace(img , 2)
thres = np.absolute(LoG).mean() * 0.75
output = sp.zeros(LoG.shape)
w = output.shape[1]
h = output.shape[0]

for y in range(1, h - 1):
    for x in range(1, w - 1):
        patch = LoG[y-1:y+2, x-1:x+2]
        p = LoG[y, x]
        maxP = patch.max()
        minP = patch.min()
        if (p > 0):
            zeroCross = True if minP < 0 else False
        else:
            zeroCross = True if maxP > 0 else False
        if ((maxP - minP) > thres) and zeroCross:
            output[y, x] = 1

plt.imshow(output)
plt.show()

这当然很慢,并且可能不是惯用的,因为我也是Python的新手,但应该可以证明这个想法。也欢迎任何有关如何改进它的建议。

python 2022/1/1 18:30:46 有368人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶