close

高斯梯度 (Gaussian Gradient)

基礎理論: 高斯梯度通常用於邊緣檢測和圖像增強。它結合了高斯濾波器的平滑特性和梯度計算的銳化特性,以檢測圖像中的邊緣。該方法首先使用高斯濾波器對圖像進行平滑,然後計算平滑後圖像的梯度以識別邊緣。

高斯梯度的計算包括在水平和垂直方向上計算梯度,並根據以下公式得到結果的幅度和方向:

Magnitude=��2+��2
Orientation=arctan⁡(����)

其中,���� 分別是圖像在x和y方向上的梯度。

Python舉例: 使用Python和OpenCV,我們可以計算上傳圖像的高斯梯度。讓我們開始進行計算並顯示結果。

 

# Function to compute the Gaussian gradient of an image
def gaussian_gradient(img, ksize=5, sigma=1):
    # Compute gradients in x and y direction using Sobel filters
    grad_x = cv2.Sobel(cv2.GaussianBlur(img, (ksize, ksize), sigma), cv2.CV_64F, 1, 0, ksize=3)
    grad_y = cv2.Sobel(cv2.GaussianBlur(img, (ksize, ksize), sigma), cv2.CV_64F, 0, 1, ksize=3)
    
    # Compute the magnitude and orientation of the gradient
    magnitude = cv2.magnitude(grad_x, grad_y)
    orientation = cv2.phase(grad_x, grad_y, angleInDegrees=True)
    
    return magnitude, orientation

# Compute the Gaussian gradient for the uploaded image
gradient_magnitude, gradient_orientation = gaussian_gradient(uploaded_image)

# Display the gradient magnitude and orientation
fig, axes = plt.subplots(1, 3, figsize=(15, 5))

axes[0].imshow(uploaded_image, cmap='gray')
axes[0].axis('off')
axes[0].set_title('Original Image')

axes[1].imshow(gradient_magnitude, cmap='hot')
axes[1].axis('off')
axes[1].set_title('Gradient Magnitude')

axes[2].imshow(gradient_orientation, cmap='hsv')
axes[2].axis('off')
axes[2].set_title('Gradient Orientation')

plt.tight_layout()
plt.show()

以上是使用高斯梯度計算的結果。

  • 原始圖像:這是您上傳的圖像。
  • 梯度幅度:這表示圖像中各點的梯度強度。邊緣的地方梯度幅度較大,因此更亮。
  • 梯度方向:這表示圖像中各點的梯度方向。使用不同的顏色代表不同的方向。

透過這些結果,您可以看到圖像中邊緣的位置和方向。高斯梯度提供了一種有效的方式來識別和強化圖像中的邊緣。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Rocky 的頭像
    Rocky

    Rocky的部落格

    Rocky 發表在 痞客邦 留言(0) 人氣()