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和MD5实现网站挂马检测程序
Mar 13 Python
python调用新浪微博API项目实践
Jul 28 Python
Python利用operator模块实现对象的多级排序详解
May 09 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
Dec 14 Python
python3如何将docx转换成pdf文件
Mar 23 Python
PyCharm更改字体和界面样式的方法步骤
Sep 27 Python
Python OpenCV图像指定区域裁剪的实现
Oct 30 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
Jan 14 Python
python3.4中清屏的处理方法
Jul 06 Python
python实现扫雷游戏的示例
Oct 20 Python
django中ImageField的使用详解
Dec 21 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 分页类(模仿google)-面试题目解答
2009/09/13 PHP
PHP 文件缓存的性能测试
2010/04/25 PHP
php通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
php实现的顺序线性表示例
2019/05/04 PHP
Dom在ajax技术中的作用说明
2010/10/25 Javascript
jQuery+CSS3实现树叶飘落特效
2015/02/01 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
2016/01/08 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
详解在vue-cli中使用路由
2017/09/25 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
python概率计算器实例分析
2015/03/25 Python
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
Django配置celery(非djcelery)执行异步任务和定时任务
2018/07/16 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
django 外键model的互相读取方法
2018/12/15 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
Hunter Boots美国官方网站:赫特威灵顿雨靴
2018/06/16 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
编码实现字符串转整型的函数
2012/06/02 面试题
三年级语文教学反思
2014/02/01 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
导游词400字
2015/02/13 职场文书
2015年林业工作总结
2015/05/14 职场文书
提升Nginx性能的一些建议
2021/03/31 Servers
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL
Flink 侧流输出源码示例解析
2022/09/23 Servers