iT邦幫忙

2022 iThome 鐵人賽

DAY 29
0
自我挑戰組

數位影像處理系列 第 29

[Day 29]輪廓特徵

  • 分享至 

  • xImage
  •  

輪廓特徵(Contour Feature)又稱為輪廓描述子(Contour Descriptor),目的是根據影像中的物件輪廓,使用量化的數據,描述物件的輪廓特徵。


1.多邊形近似

 多邊形近似(Polygon Approximation)演算法,目的是將輪廓以多邊形表示,並且採用較少的頂點,用來近似原始的輪廓。

 OpenCV提供的多邊形近似演算法,是根據 Douglas-Peucker演算法設計,採用遞迴方式分割原始輪廓,其中牽涉的參數稱為ε,是近似過程中的距離誤差值。通常,若ε的值愈小,則近似多邊形輪廓愈接近原始的平滑輪廓。

程式碼如下

 import numpy as np
import cv2
import math

def polygon_approximation(f, epislon):
    g = f.copy()
    nr, nc = f.shape[: 2]
    contours, hierarchy = cv2.findContours(f, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
    approx = cv2.approxPolyDP(contours[0], epislon, True)

    for x in range(nr):
        for y in range(nc):
            if f[x, y] != 0:
                g[x, y] = 100
    
    cv2.drawContours(g, [approx], -1, (255, 255, 255))
    return g

def main():
    img1 = cv2.imread("D:/Desktop/IThome/bug.bmp", 0)
    img2 = polygon_approximation(img1, 5)
    cv2.imshow("Original", img1)
    cv2.imshow("After", img2)
    cv2.waitKey()
    cv2.destroyAllWindows()

main()

 上述程式碼選取的ε值為5,結果如下:

https://ithelp.ithome.com.tw/upload/images/20221006/201523706qT98FX6WP.png


上一篇
[Day 28]特徵擷取
下一篇
[Day 30]人臉辨識
系列文
數位影像處理30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言