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 七种邮件内容发送方法实例
Apr 22 Python
python创建列表并给列表赋初始值的方法
Jul 28 Python
浅析Python中signal包的使用
Nov 13 Python
python 添加用户设置密码并发邮件给root用户
Jul 25 Python
python更改已存在excel文件的方法
May 03 Python
python生成n个元素的全组合方法
Nov 13 Python
Python 多个图同时在不同窗口显示的实现方法
Jul 07 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
Aug 27 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
Mar 08 Python
Python AutoCAD 系统设置的实现方法
Apr 01 Python
Python 字符串池化的前提
Jul 03 Python
如何在python中判断变量的类型
Jul 29 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
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
JavaScript获得选中文本内容的方法
2008/12/02 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
AngularJS 视图详解及示例代码
2016/08/17 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
2017/04/28 jQuery
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
微信小程序自定义多列选择器使用详解
2019/06/21 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
pygame学习笔记(5):游戏精灵
2015/04/15 Python
Python Property属性的2种用法
2015/06/21 Python
Python获取文件所在目录和文件名的方法
2017/01/12 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
Python 一句话生成字母表的方法
2019/01/02 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
什么是索引指示器
2012/08/20 面试题
nohup的用法
2014/08/10 面试题
中学教师培训制度
2014/01/31 职场文书
音乐器材管理制度
2014/01/31 职场文书
护士医德考评自我评价
2015/03/03 职场文书
护理专业自我评价
2015/03/11 职场文书
经理岗位职责范本
2015/04/15 职场文书
销售开票员岗位职责
2015/04/15 职场文书
python实现自动化群控的步骤
2021/04/11 Python
create-react-app开发常用配置教程
2022/06/25 Javascript