數字圖像處理:邊緣檢測整理

形態學邊緣提取

在這裏插入圖片描述
實現代碼:

def contour_morphology(image):
    return image - cv2.erode(image, np.ones((3, 3), np.uint8))

實現很簡單,原圖減腐蝕的圖

結果

在這裏插入圖片描述
爲了去除房頂瓦片,對其進行均值平滑處理後的結果

mask_averaging = np.array([
    [1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1],
], np.float)/25
house_averaging = cv2.filter2D(house, -1, mask_averaging)
house_contour_morphology = contour_morphology(house_averaging )

結果

在這裏插入圖片描述
在這裏插入圖片描述
雖然瓦片被去除了,可是輪廓邊粗了,房頂邊緣變弱

線的檢測

mask_45 = np.array([
    [-1, -1,  2],
    [-1,  2, -1],
    [2,  -1, -1],
])

house_segment_45 = cv2.filter2D(house_contour_morphology, -1, mask_45)
mask__45 = np.array([
    [2, -1, -1],
    [-1, 2, -1],
    [-1, -1, 2],
])
house_segment__45 = cv2.filter2D(house_contour_morphology, -1, mask__45)
mask_0 = np.array([
    [-1, -1, -1],
    [2,   2,  2],
    [-1, -1, -1],
])
house_segment_0 = cv2.filter2D(house_contour_morphology, -1, mask_0)

用上一步的輸出house_contour_morphology作爲輸入:

結果

在這裏插入圖片描述
方向固定,不能很好的檢測直線

梯度算子

mask_sobel_horizontal = np.array([
    [-1, -2, -1],
    [0,   0,  0],
    [1,   2,  1],
])
mask_sobel_vertical = np.array([
    [-1, 0, 1],
    [-2, 0, 2],
    [-1, 0, 1],
])

mask_sobel_diagonal = np.array([
    [-2, -1, 0],
    [-1, 0,  1],
    [0,  1,  2],
])

house_sobel_horizontal = cv2.filter2D(house_contour_morphology, -1, mask_sobel_horizontal)
house_sobel_vertical = cv2.filter2D(house_contour_morphology, -1, mask_sobel_vertical)
house_sobel_diagonal = cv2.filter2D(house_contour_morphology, -1, mask_sobel_diagonal)
plt_show_opcv("house_sobel", house_sobel)
用上一步的輸出house_contour_morphology作爲輸入:
### 結果

在這裏插入圖片描述

霍夫/Hough變換

edges = cv2.Canny(house_contour_morphology, 50, 20)
re = np.zeros(house.shape, np.uint8)
lines = cv2.HoughLinesP(edges, 1, np.pi/180, 30, minLineLength=30, maxLineGap=5)
lines = lines[:, 0, :]
for x1, y1, x2, y2 in lines:
    cv2.line(re, (x1, y1), (x2, y2), (255, 255, 255), 1)

先用Canny算法進行邊緣檢測,再用霍夫變換檢測直線輪廓。用上一步的輸出house_contour_morphology作爲輸入:

結果

在這裏插入圖片描述
原圖作爲輸入:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章