更新於 2024/08/23閱讀時間約 1 分鐘

[Python] 在影像處理中歐氏距離的作用

本文主要介紹,如何介紹歐氏距離

在影像處理中,歐式距離有許多應用,以下是幾個常見的例子:

邊緣檢測:

歐式距離可以用來檢測影像中的邊緣。透過計算像素之間的強度差異,可以確定哪些像素屬於邊緣。這個差異通常以歐式距離的形式來衡量,特別是在 Sobel Canny 邊緣檢測算法中。

影像分割:

在影像分割中,歐式距離可以用來計算像素與某個參考點(如種子點或中心點)之間的距離。這樣可以將影像分成不同的區域。例如,在分水嶺算法中,使用歐式距離來確定各個區域的分界線。

顏色相似度:

在影像處理中,如果需要比較兩個像素或兩個區域的顏色是否相似,可以將顏色值視為三維向量(例如 RGB 值),並使用歐式距離來衡量它們之間的相似度。距離越小,顏色越相似。

圖像匹配:

在圖像匹配過程中,歐式距離用於衡量不同影像特徵點之間的差異

特徵匹配:

在影像匹配和特徵識別中,像是 SIFTSURF 這類特徵檢測算法會提取影像的局部特徵點,然後用歐式距離來比較這些特徵點之間的相似性,從而找到相同或相似的物體。

K-means 聚類:

在影像分割或分類中,K-means 聚類算法會使用歐式距離來將像素或特徵點聚集到最近的中心點。這可以用來分割影像中的區域或進行物體分類。


歐氏距離(Euclidean Distance)

歐氏距離是最易於理解的一種距離計算方法,源自歐氏空間中兩點間的距離公式。

(1)二維平面上兩點a(x1,y1)與b(x2,y2)間的歐氏距離:


(2)三維空間兩點a(x1,y1,z1)與b(x2,y2,z2)間的歐氏距離:

(3)兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的歐氏距離:


以下是如何用 Python 來實現計算歐式距離的範例:

二維平面上

程式碼

import numpy as np
import matplotlib.pyplot as plt

# 定義兩個點的座標
x1, y1 = 1, 2
x2, y2 = 4, 6

point1 = np.array([x1, y1])
point2 = np.array([x2, y2])

# 計算歐式距離
distance = np.linalg.norm(point1 - point2)

# 開啟畫布繪製座標點
plt.figure(figsize=(6, 6))
plt.plot([x1, x2], [y1, y2], 'ro-', label=f'Distance = {distance:.2f}')
plt.scatter([x1, x2], [y1, y2], color='blue')

# 標記兩個點
plt.text(x1, y1, f'({x1}, {y1})', fontsize=12, ha='right')
plt.text(x2, y2, f'({x2}, {y2})', fontsize=12, ha='left')

# 增加坐標軸標籤
plt.xlabel('X-axis')
plt.ylabel('Y-axis')

# 設置畫布範圍
plt.xlim(0, 5)
plt.ylim(0, 7)

# 增加右上角數據圖示說明
plt.legend()

# 設置標題
plt.title('Euclidean Distance between Two Points')

# 畫格子線
plt.grid(True)

# 顯示圖形
plt.show()

在這裡,np.linalg.norm 函數會計算兩個點之間的歐式距離。



總結

歐式距離越小,代表這兩個特徵點越相似,通常是找出特徵點之間的最佳匹配,這樣就能夠找到兩張影像中最相似的特徵點。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.