2024-05-23 14:22:58 发布
网友
有没有像下图一样,利用图像处理技术分割检测轨迹的方法
图1:车轮在沙地上的轨迹
图2:要检测的轨迹的一个示例
根据我的说法,答案是否定的。首先我去除了照明效果,然后应用Canny来获得图像的特征,只有部分轨迹可见。接下来,我执行彩色分割以获得二进制掩码。然后我用了一个二元遮罩来去除背景,同样,唯一的部分轨迹是可见的
# Load the image img = cv2.imread("v1uU4.jpg") # Convert to the gray-scale gry = convert_to_grayscale(img) # Remove the lightning effect blr = cv2.GaussianBlur(gry, (125, 125), 0) div = cv2.divide(gry, blr, scale=192)
# Load non-lightning image img = cv2.imread("non-lightning.png") # Convert to the gray-scale gry = convert_to_grayscale(img) # Remove the lightning effect blr = cv2.GaussianBlur(gry, (5, 5), 0) # Find canny features cny = cv2.Canny(blr, 50, 200)
在这里,您只看到轨迹的左侧部分部分可见。当然,不同的参数会产生不同的结果。如果您愿意尝试,更多不需要的功能将变得更可用
第二种方法
# Convert to HSV color-space hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # Perform color-segmentation to get the binary mask lwr = np.array([0, 0, 0]) upr = np.array([179, 255, 194]) msk = cv2.inRange(hsv, lwr, upr)
# Extracting the rod using binary-mask krn = cv2.getStructuringElement(cv2.MORPH_RECT, (50, 30)) dlt = cv2.dilate(msk, krn, iterations=5) res = 255 - cv2.bitwise_and(dlt, msk)
在我看来,不可能删除背景并只显示可见的轨迹
根据我的说法,答案是否定的。首先我去除了照明效果,然后应用Canny来获得图像的特征,只有部分轨迹可见。接下来,我执行彩色分割以获得二进制掩码。然后我用了一个二元遮罩来去除背景,同样,唯一的部分轨迹是可见的
在这里,您只看到轨迹的左侧部分部分可见。当然,不同的参数会产生不同的结果。如果您愿意尝试,更多不需要的功能将变得更可用
第二种方法
在我看来,不可能删除背景并只显示可见的轨迹
相关问题 更多 >
编程相关推荐