我是 python 編程的初學者,我要求一些技巧。我有一個圖表,我想通過它來檢測邊緣,然后過濾以獲得干凈的邊緣。誰能幫助我如何撰寫 python 代碼來完成圖表的其余部分?我使用 Sobel 濾波器進行邊緣檢測,但我不知道如何使用鄰域來處理中值濾波器

pxq 條件為 p >> q 和 p << q。
這是我在python中的代碼:
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('original_image.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ddepth = -1
sobelX = cv2.Sobel(img, ddepth ,1, 0, ksize=3,borderType=cv2.BORDER_DEFAULT)
sobelY = cv2.Sobel(img, ddepth, 0, 1, ksize=3,borderType=cv2.BORDER_DEFAULT)
mag = np.hypot(sobelX, sobelY)
mag = mag / mag.max() * 255
mag = np.uint8(mag)
theta = np.arctan2(sobelY, sobelX)
angle = np.rad2deg(theta)
我不明白下一步:
應用具有鄰域 pxq (p>>q) 和 (p<<q) 的中值濾波器
有人可以用簡單的方式向我解釋嗎?
uj5u.com熱心網友回復:
我想你的教授試圖區分水平和垂直邊緣,但沒有解釋得太清楚。
如果我從這張圖片開始,并忽略 Sobel 的東西,因為它已經是有效的邊緣:

from skimage.filters.rank import median
import cv2
# Load image and greyscale it
im = cv2.imread('radial.png', cv2.IMREAD_GRAYSCALE)
# Define a 25x1 and a 1x25 footprint for the median function
footprintA = np.ones((1,25), np.uint8)
footprintB = footprintA.reshape(-1,1)
# Apply each to image
resA = median(im, footprintA)
resB = median(im, footprintB)


這是一個顯示腳印形狀效果的小影片:

我使用scikit-image是因為我不知道您如何使用OpenCV制作非方形足跡。
uj5u.com熱心網友回復:
我認為這意味著具有非方形內核的中值濾波器。在 OpenCV
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/484526.html
