Roberts算子详细代码(Python2.7)

在边缘检测中,传统的Roberts算子是一种简单而高效的算子,它采用2*2模板,利用图像中对角线方向相邻像素差值近似梯度幅度来检测目标边缘。

Gx模板:

1 0
0 -1

Gy模板 :

0 1
-1 0

x,y像素坐标

x,y x,y+1
x+1,y x+1,y+1

Gx=1*f(x,y)+0*f(x,y+1)+0*f(x+1,y)+(-1)*f(x+1,y+1)=f(x,y)-f(x+1,y+1)

Gy=0*f(x,y)+1*f(x,y+1)+(-1)*f(x+1,y)+0*f(x+1,y+1)=f(x,y+1)-f(x+1,y)

G(x,y)=|Gx|+|Gy|=|f(x,y)-f(x+1,y+1)|+|f(x, y+1)-f(x+1,y)|

代码块

Roberts算子详细代码,与数学公式完全对照例如:

import Image
import numpy as np
import matplotlib.pyplot as pyplot
import pylab
im =Image.open('Bikesgray.jpg')#记得要用灰度图,如果是彩色图需要转换成灰度图
w,h = im.size
res = np.zeros((w, h))#取一个和原图一样大小的图片,并在里面填充0
roberts_x =[[1, 0],[0, -1]]#Roberts模板
roberts_y =[[0, 1],[-1, 0]]
for x in range(w-1):for y in range(h-1):sub =[[im.getpixel((x, y)), im.getpixel((x, y+1))],[im.getpixel((x+1, y)), im.getpixel((x+1, y+1))]]#x,y代表像素的位置,而不是像素值,要从图片上得到像素值sub = np.array(sub)#在python标准中list是不能做乘法,所以np.array()把list转就可以相乘roberts_x = np.array(roberts_x)roberts_y = np.array(roberts_y)var_x =sum(sum(sub * roberts_x))#矩阵相乘,查看公式,我们要得到是一个值,所以对它进行两次相加var_y = sum(sum(sub * roberts_y))var = abs(var_x) + abs(var_y)res[x][y] = var#把var值放在x行y列位置上pyplot.imshow(res, cmap=pyplot.cm.gray)#输出图片可能颜色有问题,用cmap=pyplot.cm.gray进行改颜色还有方向问题,也可以通过调整
pylab.show()


Roberts算子详细代码(Python2.7)相关推荐

  1. opencv roberts算子_边缘检测 Roberts算子

    Roberts算子是一种最简单的算子,利用局部差分算子寻找边缘的算子.采用对角线相邻两像素之差近似梯度幅值检测边缘..检测垂直边缘的效果比斜向边缘要好,定位精度高,对噪声比较敏感,无法抑制噪声的影响. ...

  2. spark算子详细介绍(v、k-v、vv类型)

    spark算子详细介绍 算子分区数.分区器如何确定? Value 类型 1. map() 改变结构就用map 2. mapPartitions() 以分区为单位执行Map 思考一个问题:map和map ...

  3. Opencv2.4学习::边缘检测(4)Roberts算子

    边缘检测 1.Sobel 2.Laplace 3.Roberts 4.Canny Roberts 就是以对角线作为差分的方向来检测 实现代码: #include<opencv2/core/cor ...

  4. 【8】python-opencv3教程:边缘检测(Roberts算子边缘检测,Prewitt算子边缘检测,Sobel算子边缘检测)

    第八节:边缘检测 边缘检测:边缘检测指的是灰度值发生急剧变化的位置,边缘检测的目的是制作一个线图,在不会损害理解图像内容的情况下, 有大大减少了图像的数据量,提供了对图像数据的合适概述. 一:Robe ...

  5. 图像边缘提取——梯度算子、Roberts算子、prewitt算子、Sobel算子、Kirsch算子、LOG算子的matlab实现

    #图像边缘提取-- ##梯度算子.Roberts算子.prewitt算子.Sobel算子.Kirsch算子.LOG算子的matlab实现 matlab代码 clear; f=rgb2gray(imre ...

  6. 教你C语言实现通讯录的详细代码

    本文详细讲解了C语言实现通讯录的方法,文中通过示例代码介绍的非常详细.对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 (一)实现思路 1.通讯录功能 添加好友,删除好友,查找好友,修改 ...

  7. 折叠式菜单 html,JQuery实现折叠式菜单的详细代码

    两种风格: 1:点菜单项,每个子菜单项都可显示 30秦甜甜_实训13-2_2_180701802230_18计算机2班 * { padding: 0; margin: 0; list-style: n ...

  8. ajax发送异步请求四个步骤,深入理解ajax异步请求的五个步骤(详细代码)

    在前端工作中,经常会用到ajax,其实很多人只知道ajax是异步请求,不知道应该如何用它,它的基本步骤有哪些,ajax请求过程是怎样的?接下来这篇文章就给大家介绍Ajax的请求步骤,以及ajax请求步 ...

  9. 开放下载!《15分钟打造你自己的小程序》(内附详细代码)

    简介: 零基础开发你自己的支付宝小程序,教程在手不迷路,从入门到精通,还有详细代码在里面哦~ <15分钟打造你自己的小程序>独家电子书上线啦!零基础开发你自己的支付宝小程序,手把手教你从入 ...

  10. java中nio怎么实现聊天,JAVA-NIO实现聊天室详细代码说明

    JAVA-NIO实现聊天室详细代码说明 JAVA-NIO实现聊天室详细代码说明 github源码:https://github.com/JolyouLu/JAVAIO.git src\main\jav ...

最新文章

  1. 我的Android进阶之旅------Android嵌入图像InsetDrawable的用法
  2. iOS 跑马灯封装(带点击事件)
  3. jquery 获取和设置 select下拉框的值(转手册)
  4. 零售业如何用Hadoop开启大数据之门?
  5. Spring MVC 实现原理
  6. 【python之路24】装饰器
  7. BeyondCompare
  8. 4.11-固件映像包 ( FIP:Firmware Image Package )简介
  9. 反击CobaltStrike
  10. 主程序与子程序不在同一程序模块中_分享:宏程序和子程序的应用
  11. c# 深拷贝各种实现方式
  12. 可以代表学计算机的标志,桌面上的图标可以用来表示
  13. linux centos7 r安装,如何在CentOS 7上安装R
  14. 来谈谈MySQL事务及事务引发的问题
  15. WARNING: Too many active WebGL contexts. Oldest context will be lost.
  16. Java基础——类和对象
  17. 【BZOJ4589】【SRM 518 Div1】Hard Nim(FWT)
  18. 淘宝开放平台接口接口,订单R2权限接口淘宝开放平台R2权限,淘宝开放平台进存销应用,top平台接口,淘宝应用市场接口,ERP软件订单接口,淘上淘接口,
  19. 百练2706 麦森数
  20. 云端极简部署Svelte3聊天室

热门文章

  1. ext2文件系统详解
  2. Windows下安装神通数据库
  3. 计算机考研复试难,艰难与快乐:2008年重庆邮电大学计算机考研复试经历
  4. python3制作歌词解析器
  5. 校招大学生简历制作模板(ps:程序员简历)
  6. 如何封装WIN10系统?
  7. C++ 输出日志到 DbgView
  8. STM32串口通信实例
  9. DCMTK findscu 查询信息
  10. c语言粗大误差程序框图,《粗大误差C语言程序.doc