python通过robert、sobel、Laplace算子实现图像边缘提取详解


Posted in Python onAugust 21, 2019

实现思路:

1,将传进来的图片矩阵用算子进行卷积求和(卷积和取绝对值)

2,用新的矩阵(与原图一样大小)去接收每次的卷积和的值

3,卷积图片所有的像素点后,把新的矩阵数据类型转化为uint8

注意:

必须对求得的卷积和的值求绝对值;矩阵数据类型进行转化。

完整代码:

import cv2
import numpy as np
 
# robert 算子[[-1,-1],[1,1]]
def robert_suanzi(img):
  r, c = img.shape
  r_sunnzi = [[-1,-1],[1,1]]
  for x in range(r):
    for y in range(c):
      if (y + 2 <= c) and (x + 2 <= r):
        imgChild = img[x:x+2, y:y+2]
        list_robert = r_sunnzi*imgChild
        img[x, y] = abs(list_robert.sum())   # 求和加绝对值
  return img
         
# # sobel算子的实现
def sobel_suanzi(img):
  r, c = img.shape
  new_image = np.zeros((r, c))
  new_imageX = np.zeros(img.shape)
  new_imageY = np.zeros(img.shape)
  s_suanziX = np.array([[-1,0,1],[-2,0,2],[-1,0,1]])   # X方向
  s_suanziY = np.array([[-1,-2,-1],[0,0,0],[1,2,1]])   
  for i in range(r-2):
    for j in range(c-2):
      new_imageX[i+1, j+1] = abs(np.sum(img[i:i+3, j:j+3] * s_suanziX))
      new_imageY[i+1, j+1] = abs(np.sum(img[i:i+3, j:j+3] * s_suanziY))
      new_image[i+1, j+1] = (new_imageX[i+1, j+1]*new_imageX[i+1,j+1] + new_imageY[i+1, j+1]*new_imageY[i+1,j+1])**0.5
  # return np.uint8(new_imageX)
  # return np.uint8(new_imageY)
  return np.uint8(new_image) # 无方向算子处理的图像
 
# Laplace算子
# 常用的Laplace算子模板 [[0,1,0],[1,-4,1],[0,1,0]]  [[1,1,1],[1,-8,1],[1,1,1]]
def Laplace_suanzi(img):
  r, c = img.shape
  new_image = np.zeros((r, c))
  L_sunnzi = np.array([[0,-1,0],[-1,4,-1],[0,-1,0]])   
  # L_sunnzi = np.array([[1,1,1],[1,-8,1],[1,1,1]])   
  for i in range(r-2):
    for j in range(c-2):
      new_image[i+1, j+1] = abs(np.sum(img[i:i+3, j:j+3] * L_sunnzi))
  return np.uint8(new_image)
 
 
img = cv2.imread('1.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('image', img)
 
# # robers算子
out_robert = robert_suanzi(img)
cv2.imshow('out_robert_image', out_robert)
 
# sobel 算子
out_sobel = sobel_suanzi(img)
cv2.imshow('out_sobel_image', out_sobel)
 
# Laplace算子
out_laplace = Laplace_suanzi(img)
cv2.imshow('out_laplace_image', out_laplace)
 
cv2.waitKey(0)
cv2.destroyAllWindows()

结果:

python通过robert、sobel、Laplace算子实现图像边缘提取详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python安装Scrapy图文教程
Aug 14 Python
python实现微信远程控制电脑
Feb 22 Python
python 日志增量抓取实现方法
Apr 28 Python
python+selenium打印当前页面的titl和url方法
Jun 22 Python
python重试装饰器的简单实现方法
Jan 31 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
Apr 10 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
Jul 23 Python
pandas 如何分割字符的实现方法
Jul 29 Python
jenkins+python自动化测试持续集成教程
May 12 Python
Python日志打印里logging.getLogger源码分析详解
Jan 17 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
Jun 23 Python
Python爬虫:url中带字典列表参数的编码转换方法
Aug 21 #Python
Python GUI学习之登录系统界面篇
Aug 21 #Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 #Python
利用python在大量数据文件下删除某一行的例子
Aug 21 #Python
Python 仅获取响应头, 不获取实体的实例
Aug 21 #Python
详解用Python为直方图绘制拟合曲线的两种方法
Aug 21 #Python
Python 使用指定的网卡发送HTTP请求的实例
Aug 21 #Python
You might like
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
PHP使用Redis实现防止大并发下二次写入的方法
2017/10/09 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
js电信网通双线自动选择技巧
2008/11/18 Javascript
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
2014/06/23 Javascript
后台获取ZTREE选中节点的方法
2015/02/12 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
2015/03/16 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
BootstrapTable refresh 方法使用实例简单介绍
2017/02/20 Javascript
jQuery图片切换动画效果
2017/02/28 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
python实现随机森林random forest的原理及方法
2017/12/21 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
Python实现多属性排序的方法
2018/12/05 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
Python阶乘求和的代码详解
2020/02/14 Python
css3遮罩层镂空效果的多种实现方法
2020/05/11 HTML / CSS
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
Lancer Skincare官方网站:抗衰老皮肤护理
2020/11/20 全球购物
2014年应届大学生自我评价
2014/01/09 职场文书
win11自动弹出虚拟键盘怎么关闭? Win11关闭虚拟键盘的技巧
2023/01/09 数码科技