Prewitt算子也是一种一阶微分算子,用于边缘检测。与Robert使用22的模板不同,Prewitt算子使用的是33的模板,利用像素点上下、左右邻点的灰度差来检测边缘,故其边缘检测结果在水平方向和垂直方向均比Robert算子更加明显。

其数学表达式如下:

G(i) = | f(i-1, j-1) + f(i-1,j)+f(i-1,j+1) - [f(i+1,j-1)+f(i+1,j)+f(i+1,j+1)] |
G(j) = | f(i-1, j+1) + f(i,j+1)+f(i+1,j+1) - [f(i-1,j-1)+f(i,j-1)+f(i+1,j-1)] |

则 P(i,j)=max[G(i),G(j)]
或 P(i,j)=G(i)+G(j)

其算子如下:

在Python中,Prewitt算子的实现过程与Robert算子类似。首先通过numpy定义模板,也就是卷积核,再调用函数filter2D对图像进行卷积,最终通过convertScaleAbs()和addWeighted函数实现。

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']#Robert
def PreWitt(img):result = imgoi = np.array([[-1,-1,-1], [0,0,0],[1,1,1]])oj = np.array([[-1,0,1],[-1,0,1],[-1,0,1]])x = cv.filter2D(img, cv.CV_16S, oi)y = cv.filter2D(img, cv.CV_16S, oj)# 转uint8absX = cv.convertScaleAbs(x)absY = cv.convertScaleAbs(y)result = cv.addWeighted(absX, 0.5, absY, 0.5, 0)return resultimg = cv.imread('lena512color.tiff', 0)
cv.imshow('lena', img)
p = PreWitt(img)
cv.imshow('PreWitt', p)cv.waitKey(0)

结果如下:
Prewitt算子适合用来识别噪声较多、灰度渐变的图像。

此算子也可以应用在彩色图像上,运行结果如下图所示,左图为原彩色图像,右图为经过Prewitt算子检测后的边缘图像。此种显示方式只显示了边缘,除了边缘部分其他皆为0,即全黑。

Prewitt边缘检测算子相关推荐

  1. 小波变换 边缘检测 matlab,边缘检测算子和小波变换提取图像边缘【matlab】

    Roberts边缘检测算子:根据一对互相垂直方向上的差分可用来计算梯度的原理,采用对角线方向相邻两像素之差. 小波变换的方法比较适用于展现夹带在正常信号中的瞬间反常现象,具有方向敏感性.所以可以边缘检 ...

  2. 几种边缘检测算子的比较Roberts,Sobel,Prewitt,LOG,Canny

    from:https://blog.csdn.net/gdut2015go/article/details/46779251 边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中 ...

  3. Matlab图像边缘检测Roberts\Sobel\Prewitt\Canny算子

    确定图像中的物体边界的一种方法是先检测每个像素和其直接淋雨的状态已决定该像素是否确实处于一个物体的边界上.具有这种特性的像素被标记为边缘点.当图像中各个像素的灰度级用来反映各像素要求的程度时,这种图像 ...

  4. Roberts、Prewitt、Sobel、Laplacian、LoG 和 Canny 边缘检测算子(MATLAB自写函数实现)

    文章目录 Roberts.Prewitt.Sobel.Laplacian.LoG 和 Canny 边缘检测算子(MATLAB自写函数实现) 1理论 1.1 知识引入 1.1.1 图像边缘边缘[1] 1 ...

  5. python 视觉技术_python+opencv实现机器视觉基础技术(边缘提取,图像滤波,边缘检测算子,投影,车牌字符分割)...

    机器视觉是人工智能正在快速发展的一个分支.简单说来,机器视觉就是用机器代替人眼来做测量和判断.它是一项综合技术,包括图像处理.机械工程技术.控制.电光源照明.光学成像.传感器.模拟与数字视频技术.计算 ...

  6. 图像处理常用边缘检测算子总结

    不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像.需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在于物体之间的边界 ...

  7. 图像处理常用边缘检测算子

    图像处理常用边缘检测算子 不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像.需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场 ...

  8. opencv 不同边缘检测算子效果比较

    # -*- coding: utf-8 -*- import cv2 as cv import numpy as np import matplotlib.pyplot as plt#读取图像 img ...

  9. 2020-10-22图像处理常用边缘检测算子总结

    不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像.需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在于物体之间的边界 ...

最新文章

  1. 16进制输出C语言字符常量,基础C语言:进制、常量
  2. 【若依(ruoyi)】部门查询SQL
  3. mysql逗号分隔函数_mysql split 函数(用逗号分隔)的实现
  4. ES6-weakset集合
  5. JS 的引用赋值与传值赋值
  6. beast php,windows php-beast 安装
  7. 小蚂蚁学习mysql性能优化(8)--数据库结构优化--范式化和反范式化,水平分表,垂直分表...
  8. 软件设计开发笔记2:基于QT设计串口调试工具
  9. 【OR】YALMIP 二次规划问题
  10. QCon上海2015精彩回顾和总结
  11. Windows环境下Python中multiprocessing关于RuntimeError异常的处理方式
  12. 苹果开发者公司账号的申请步骤
  13. duilib 关于wke 控件焦点问题
  14. 基于OpenStack的云计算平台搭建
  15. 爱剪辑为啥显示服务器繁忙,爱剪辑蓝屏怎么办?爱剪辑蓝屏的六大原因及解决方法...
  16. 何为 Linux 内核开发,怎么学好 Linux 内核?
  17. 人工神经网络的优缺点
  18. Linux发展史之简要概述
  19. 超图举例单值专题图色带样式控制
  20. 突发!中国顶级程序员左耳朵耗子(陈皓)去世

热门文章

  1. str是什么数据类型c语言,C语言的三种基本数据类型是什么?
  2. 隐私安全计算-不经意传输的原理与应用
  3. css 字数过多隐藏,CSS 超出隐藏实现限制字数的功能代码(多浏览器)
  4. EM算法推导以及在高斯混合模型中的应用(详细)
  5. 使用递归打印该目录下的所有子目录和文件
  6. Python 智能语音机器人(改进版)
  7. 数据存储机制之文件存储
  8. 计算机网络知识全面讲解:抓包分析SMTP和POP3
  9. RESTful接口规范之GET/POST/PUT/DELETE
  10. python线性回归预测pm2.5_李洪义——机器学习作业——1-线性回归:预测PM2.5,李宏毅,1LinearRegression,PM25...