Created
August 16, 2018 17:28
-
-
Save gonzaloruizdevilla/2d1870de1c80ef70d52bebd7a6a4d25b to your computer and use it in GitHub Desktop.
Sobel x,y
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import numpy as np | |
import cv2 | |
import matplotlib.pyplot as plt | |
import matplotlib.image as mpimg | |
import pickle | |
# Read in an image and grayscale it | |
image = mpimg.imread('signs_vehicles_xygrad.png') | |
# Define a function that applies Sobel x or y, | |
# then takes an absolute value and applies a threshold. | |
# Note: calling your function with orient='x', thresh_min=5, thresh_max=100 | |
# should produce output like the example image shown above this quiz. | |
def abs_sobel_thresh(img, orient='x', thresh_min=0, thresh_max=255): | |
# Apply the following steps to img | |
# 1) Convert to grayscale | |
# 2) Take the derivative in x or y given orient = 'x' or 'y' | |
# 3) Take the absolute value of the derivative or gradient | |
# 4) Scale to 8-bit (0 - 255) then convert to type = np.uint8 | |
# 5) Create a mask of 1's where the scaled gradient magnitude | |
# is > thresh_min and < thresh_max | |
# 6) Return this mask as your binary_output image | |
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) | |
if orient == 'x': | |
a = 1 | |
b = 0 | |
if orient == 'y': | |
a = 0 | |
b = 1 | |
sobel = cv2.Sobel(gray, cv2.CV_64F, a, b) | |
abs_sobel = np.absolute(sobel) | |
scaled_sobel = np.uint8(255*abs_sobel/np.max(abs_sobel)) | |
sbinary = np.zeros_like(scaled_sobel) | |
sbinary[(scaled_sobel >= thresh_min) & (scaled_sobel <= thresh_max)] = 1 | |
return sbinary | |
# Run the function | |
grad_binary = abs_sobel_thresh(image, orient='y', thresh_min=20, thresh_max=100) | |
# Plot the result | |
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(24, 9)) | |
f.tight_layout() | |
ax1.imshow(image) | |
ax1.set_title('Original Image', fontsize=50) | |
ax2.imshow(grad_binary, cmap='gray') | |
ax2.set_title('Thresholded Gradient', fontsize=50) | |
plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment