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多层嵌套list的递归处理方法(推荐)
Jun 08 Python
Python3中简单的文件操作及两个简单小实例分享
Jun 18 Python
python3使用scrapy生成csv文件代码示例
Dec 28 Python
django静态文件加载的方法
May 20 Python
Python3 SSH远程连接服务器的方法示例
Dec 29 Python
python实现图片彩色转化为素描
Jan 15 Python
python添加模块搜索路径和包的导入方法
Jan 19 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
Aug 20 Python
分享PyCharm的几个使用技巧
Nov 10 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
Jun 04 Python
详解Python中Pyyaml模块的使用
Oct 08 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 文件上传源码分析(RFC1867)
2009/10/30 PHP
php 日期时间处理函数小结
2009/12/18 PHP
php 发送带附件邮件示例
2014/01/23 PHP
php三元运算符知识汇总
2015/07/02 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
jquery简单体验
2007/01/10 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
javascript实现全局匹配并替换的方法
2015/04/27 Javascript
chrome调试javascript详解
2015/10/21 Javascript
NodeJS和BootStrap分页效果的实现代码
2016/11/07 NodeJs
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
javascript实现移动端红包雨页面
2020/06/23 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
python实现手机通讯录搜索功能
2018/02/22 Python
python实现装饰器、描述符
2018/02/28 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
Django--权限Permissions的例子
2019/08/28 Python
python相对企业语言优势在哪
2020/06/12 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
2018/08/28 HTML / CSS
美国著名手表网站:Timepiece
2017/11/15 全球购物
销售部主管岗位职责
2013/12/18 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
校园运动会广播稿
2014/10/06 职场文书
五好文明家庭事迹材料
2014/12/20 职场文书
初中家长评语和期望
2014/12/26 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书