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 相关文章推荐
PyChar学习教程之自定义文件与代码模板详解
Jul 17 Python
Python使用struct处理二进制的实例详解
Sep 11 Python
机器学习python实战之决策树
Nov 01 Python
Python基于回溯法解决01背包问题实例
Dec 06 Python
Python实现简单遗传算法(SGA)
Jan 29 Python
python 数字类型和字符串类型的相互转换实例
Jul 17 Python
Python的形参和实参使用方式
Dec 24 Python
PyQt5+python3+pycharm开发环境配置教程
Mar 24 Python
python tkinter实现下载进度条及抖音视频去水印原理
Feb 07 Python
python获取淘宝服务器时间的代码示例
Apr 22 Python
Django cookie和session的应用场景及如何使用
Apr 29 Python
python前后端自定义分页器
Apr 13 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网站提速三大“软”招
2006/10/09 PHP
php接口数据加密、解密、验证签名
2015/03/12 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
FCK调用方法..
2006/12/21 Javascript
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
2014/07/29 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
使用vuex解决刷新页面state数据消失的问题记录
2019/05/08 Javascript
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
Fiddler如何抓取手机APP数据包
2016/01/22 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
Python hmac模块使用实例解析
2019/12/24 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
美容院经理岗位职责
2014/04/03 职场文书
小学学习雷锋活动总结
2014/07/03 职场文书
会计专业求职信
2014/08/10 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
党员承诺书格式范文
2015/04/28 职场文书
祝酒词范文
2015/08/12 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL
CSS中实现动画效果-附案例
2022/02/28 HTML / CSS