大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
一. sobel滤波器介绍
sobel滤波器常用来提取灰度图像的水平边缘(水平特征)和竖直边缘(竖直特征)
二. sobel算子
纵向算子,提取图像水平边缘 ↑
横向算子,提取图像竖直边缘 ↑
三. 实验:python实现sobel算子并将算子作用于图像
import cv2
import numpy as np
# Gray scale
def BGR2GRAY(img):
b = img[:, :, 0].copy()
g = img[:, :, 1].copy()
r = img[:, :, 2].copy()
# Gray scale
out = 0.2126 * r + 0.7152 * g + 0.0722 * b
out = out.astype(np.uint8)
return out
# sobel filter
def sobel_filter(img, K_size=3):
if len(img.shape) == 3:
H, W, C = img.shape
else:
H, W = img.shape
# Zero padding
pad = K_size // 2
out = np.zeros((H + pad * 2, W + pad * 2), dtype=np.float)
out[pad: pad + H, pad: pad + W] = img.copy().astype(np.float)
tmp = out.copy()
out_v = out.copy()
out_h = out.copy()
## Sobel vertical
Kv = [[1., 2., 1.],[0., 0., 0.], [-1., -2., -1.]]
## Sobel horizontal
Kh = [[1., 0., -1.],[2., 0., -2.],[1., 0., -1.]]
# filtering
for y in range(H):
for x in range(W):
out_v[pad + y, pad + x] = np.sum(Kv * (tmp[y: y + K_size, x: x + K_size]))
out_h[pad + y, pad + x] = np.sum(Kh * (tmp[y: y + K_size, x: x + K_size]))
out_v = np.clip(out_v, 0, 255)
out_h = np.clip(out_h, 0, 255)
out_v = out_v[pad: pad + H, pad: pad + W].astype(np.uint8)
out_h = out_h[pad: pad + H, pad: pad + W].astype(np.uint8)
return out_v, out_h
# Read image
img = cv2.imread(“../paojie.jpg”).astype(np.float)
# grayscale
gray = BGR2GRAY(img)
# sobel filtering
out_v, out_h = sobel_filter(gray, K_size=3)
# Save result
cv2.imwrite(“out_g.jpg”,gray)
cv2.imshow(“result_g”,gray)
cv2.imwrite(“out_v.jpg”, out_v)
cv2.imshow(“result_v”, out_v)
cv2.imwrite(“out_h.jpg”, out_h)
cv2.imshow(“result_h”, out_h)
cv2.waitKey(0)
cv2.destroyAllWindows()
四. 实验结果
原图 ↑
原图转换为灰度图像 ↑
sobel横向算子提取了图像的竖直特征 ↑
sobel纵向算子提取了图像的水平特征 ↑
从本实验结果我们观察到,在提取图像在水平或者垂直方向上的线条或轮廓时,可以使用sobel算子。
五. 参考内容:
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/210094.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...