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进行简单图像识别(验证码)
Jan 19 Python
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
python实现Dijkstra算法的最短路径问题
Jun 21 Python
python字符串查找函数的用法详解
Jul 08 Python
Python利用Scrapy框架爬取豆瓣电影示例
Jan 17 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
Feb 15 Python
django实现将修改好的新模型写入数据库
Mar 31 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
Jul 28 Python
详解Python的爬虫框架 Scrapy
Aug 03 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
Django框架中模型的用法
Jun 10 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
ajax实现无刷新分页(php)
2010/07/18 PHP
探讨:如何通过stats命令分析Memcached的内部状态
2013/06/14 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
小议Javascript中的this指针
2010/03/18 Javascript
C#中TrimStart,TrimEnd,Trim在javascript上的实现
2011/01/17 Javascript
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
2011/10/01 Javascript
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
非常好用的JsonToString 方法 简单实例
2013/07/18 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
SWFObject基本用法实例分析
2015/07/20 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
2019/07/30 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
美国伴娘礼服商店:Evening Collective
2019/10/07 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
工程造价专业大学生职业规划范文
2014/03/09 职场文书
投资意向书范本
2014/04/01 职场文书
施工安全责任书范本
2014/07/24 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
【超详细】八大排序算法的各项比较以及各自特点
2021/03/31 Python
golang 实现并发求和
2021/05/08 Golang
MySQL读取JSON转换的方式
2022/03/18 MySQL
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS