Python Computer Vision: Harris Corner

Harris Corner 偵測:

看了 CV 的書實做了一下 Harris Corner Detector,原理等之後有空再補吧(Latex 好麻煩XDD)

def compute_harris_responce(im, sigma=3):
    """
        Compute the Harris response of each pixel
        in the gray-scale image.
    """
    from scipy.ndimage import filters
    import numpy as np

    imx = np.zeros(im.shape)
    filters.gaussian_filter(im, (sigma,sigma), (0,1), imx)
    imy = np.zeros(im.shape)
    filters.gaussian_filter(im, (sigma,sigma), (1,0), imy)
    
    # compute Harris corner
    Wxx = filters.gaussian_filter(imx*imx, sigma)
    Wxy = filters.gaussian_filter(imx*imy, sigma)
    Wyy = filters.gaussian_filter(imy*imy, sigma)

    Wdet = Wxx * Wyy - Wxy ** 2
    Wtr = Wxx + Wyy
    return Wdet/Wtr  
    
if __name__ == "__main__":
    import numpy as np
    from matplotlib import pyplot as plt
    from PIL import Image
    from scipy.ndimage import filters

    pli_img = Image.open("TT.jpg").convert("L")
    img = np.array(pli_img)
    
    plt.subplot(121)
    plt.axis("off")
    plt.imshow(img, cmap="gray")

    # compute and display Harris corner
    harris_response = compute_harris_responce(img)
    plt.subplot(122)
    plt.axis("off")
    plt.imshow(harris_response, cmap="gray")

    plt.show()

結果如下:

留言

熱門文章