高斯梯度 (Gaussian Gradient)
基礎理論: 高斯梯度通常用於邊緣檢測和圖像增強。它結合了高斯濾波器的平滑特性和梯度計算的銳化特性,以檢測圖像中的邊緣。該方法首先使用高斯濾波器對圖像進行平滑,然後計算平滑後圖像的梯度以識別邊緣。
高斯梯度的計算包括在水平和垂直方向上計算梯度,並根據以下公式得到結果的幅度和方向:
其中, 和 分別是圖像在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()
以上是使用高斯梯度計算的結果。
- 原始圖像:這是您上傳的圖像。
- 梯度幅度:這表示圖像中各點的梯度強度。邊緣的地方梯度幅度較大,因此更亮。
- 梯度方向:這表示圖像中各點的梯度方向。使用不同的顏色代表不同的方向。
透過這些結果,您可以看到圖像中邊緣的位置和方向。高斯梯度提供了一種有效的方式來識別和強化圖像中的邊緣。
留言列表