一. sobel滤波器介绍

sobel滤波器常用来提取灰度图像的水平边缘(水平特征)和竖直边缘(竖直特征)


二. sobel算子   

纵向算子,提取图像水平边缘 ↑

横向算子,提取图像竖直边缘 ↑


三. 实验:python实现sobel算子并将算子作用于图像

import cv2import numpy as np# Gray scaledef BGR2GRAY(img):b = img[:, :, 0].copy()g = img[:, :, 1].copy()r = img[:, :, 2].copy()# Gray scaleout = 0.2126 * r + 0.7152 * g + 0.0722 * bout = out.astype(np.uint8)return out# sobel filterdef sobel_filter(img, K_size=3):if len(img.shape) == 3:H, W, C = img.shapeelse:H, W = img.shape# Zero paddingpad = K_size // 2out = 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 verticalKv = [[1., 2., 1.],[0., 0., 0.], [-1., -2., -1.]]## Sobel horizontalKh = [[1., 0., -1.],[2., 0., -2.],[1., 0., -1.]]# filteringfor 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 imageimg = cv2.imread("../paojie.jpg").astype(np.float)# grayscalegray = BGR2GRAY(img)# sobel filteringout_v, out_h = sobel_filter(gray, K_size=3)# Save resultcv2.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算子。


五. 参考内容:

        https://www.cnblogs.com/wojianxin/p/12504622.html

https://www.jianshu.com/p/4b13fc189eba

利用sobel算子提取图像的水平特征和竖直特征相关推荐

  1. python sobel算子_利用sobel算子计算图像的梯度(python+opencv)

    sobel算子计算的梯度图是带有方向的 代码实现如下: #coding=utf-8 import cv2 import numpy as np #利用sobel算子计算图像的梯度 img=cv2.im ...

  2. OPENCV(四)对图像进行水平投影和竖直投影

    本篇博客讲述如何使用python的openCV库实现对图像的水平投影和竖直投影: 关键代码如下: import cv2#读取图片 image1 = cv2.imread('../img/123.png ...

  3. java 提取轮廓_TensorFlow 卷积操作模拟sobel算子提取图像轮廓

    注意: sobel算子不保证结果在0-255,需要做一次归一化处理,再乘以255 输出的数据shape与图像的shape不一样,需要一次转化 效果 代码 import matplotlib.pyplo ...

  4. Java + OpenCV 对图像进行水平投影和竖直投影

    核心代码如下,我也没有运行过,从 python 翻译过来的一份代码, 自己测试试一下效果吧. 介意的请勿订阅. package com.biubiu.example;import org.opencv ...

  5. 基于Sobel算子的图像边缘检测

    一.Sobel算子 Sobel边缘检测算法比较简单,实际应用中效率比canny边缘检测效率要高,但是边缘不如Canny检测的准确,然而在很多实际应用的场合,sobel边缘却是首选,Sobel算子是高斯 ...

  6. 图像水平梯度和竖直梯度代码_Opencv图像处理(三)

    晓强Deep Learning的读书分享会,先从这里开始,从大学开始.大家好,我是晓强,计算机科学与技术专业研究生在读.我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向 ...

  7. 利用Sobel算子,求梯度图像

    学习了Sobel算子,总结一下 上图中的模板为Sobel算子,之所以其中的系数是这样的,是因为和求他们偏导邻域的近似形式有关,具体请看书. 自己编写的利用Sobel算子,求梯度图像的matlab程序 ...

  8. sobel算子检测图像清晰度

    文章目录 前言 概念 图像处理.视觉等基础概念 清晰度判断概念 sobel算子是什么? Sobel原理 Sobel实现 Sobel应用 改进的八方向sobel算子基于的理论 视觉系统 sobel算子实 ...

  9. 应用sobel算子算法c语言,Canny算子与Sobel算子求图像边缘的C代码实现

    *Canny算子与Sobel算子求图像边缘笔记* 1.Canny求边缘算法原理简述 Canny检测边缘主要分为以下 四个算法步骤: A:噪声去除 canny算子是通过对每个像素点求一阶导数来找到梯度明 ...

最新文章

  1. 无线网***工具进攻方法及防范技巧
  2. abap 常用系统变量
  3. mmz-asio4delphi死链接的解决办法
  4. PHP与Java使用des加密通讯
  5. 存档丢失以后再补之R语言与logistic模型
  6. 【caffe-Windows】以mnist为例的hdf5单标签处理——matlab实现
  7. jzoj3913-艰难的选择【差分,统计】
  8. 移除collection中元素的注意事项(应用collection.remove移除元素造成的错误)
  9. 解析java文件_使用JDK的Parser来解析Java源代码
  10. 计算机专业实习实训内容和要求,大学生计算机实习目的和要求.doc
  11. python+jpype+linux出现内存溢出问题解决方案
  12. ndows 内存诊断工具,Windows10自带内存检测工具的使用方法
  13. mysql中utf8和utf8mb4区别,MySQL中utf8和utf8mb4的区别
  14. 如何调用腾讯的IP库?
  15. APP - 朋友圈广告原来是可以关掉的
  16. Unite 2018|基于照片建模的游戏制作流程
  17. 《kafka面试100例 -6》如果在/admin/delete_topics/中手动写入一个节点会不会正常删除Topic
  18. Ubuntu-18.04版本网络配置,连接网络的方法
  19. 微信小程序+腾讯地图 获取定位与地图选点插件
  20. 光脚丫思考Vue3与实战:第05章 计算属性和侦听器 第01节 计算属性

热门文章

  1. python自学网站-自学python有什么网站
  2. python所有软件-如何在Python中列出所有已安装的软件包及其版本?
  3. 学python语言有前途吗-在成都学Python有发展前景吗?
  4. 蝙蝠未能连接到服务器是什么原因,打开蝙蝠侠提示网络异常或者连接不上
  5. Vue前端路由~非常详细哦,不要错过
  6. Web API-随机性案例步骤
  7. FFmpeg的H.264解码器源代码简单分析:概述
  8. jpa内网mysql_mysql+jpa简单实现步骤
  9. 手机怎么打开f12_碰到生僻字看不懂怎么办?打开手机这个开关,一键即可秒懂...
  10. IDEA 编译时 报 “常量字符串过长” 解决办法