python+opencv图像处理(二十八)

Prewitt边缘检测算子

Prewitt算子也是一种一阶微分算子,用于边缘检测。与Robert使用2*2的模板不同,Prewitt算子使用的是3*3的模板,利用像素点上下、左右邻点的灰度差来检测边缘,故其边缘检测结果在水平方向和垂直方向均比Robert算子更加明显。
其数学表达式如下:
则 P(i,j)=max[G(i),G(j)]
或 P(i,j)=G(i)+G(j)
其算子如下:
在Python中,Prewitt算子的实现过程与Robert算子类似。首先通过numpy定义模板,也就是卷积核,再调用函数filter2D对图像进行卷积,最终通过convertScaleAbs()和addWeighted函数实现。
其代码如下:
运行结果如下:
Prewitt算子适合用来识别噪声较多、灰度渐变的图像。
此算子也可以应用在彩色图像上,运行结果如下图所示,左图为原彩色图像,右图为经过Prewitt算子检测后的边缘图像。此种显示方式只显示了边缘,除了边缘部分其他皆为0,即全黑。

当然也可以逐像素点地进行计算,只是这种方法的话运行效率较低,图片太大的话耗费的时间会较长。

(0)

相关推荐

  • Matlab图像处理(五)——图像边缘提取

    上一讲小白为小伙伴们带来了如何使用自编函数和自带函数对图像进行滤波,去除图像的噪声.这次小白为大家带来滤波的新用处--边缘提取. 什么是图像边缘 所谓图像边缘(Edlge)是指图像局部特性的不连续性, ...

  • python数字图像处理(三)边缘检测常用算子

    在该文将介绍基本的几种应用于边缘检测的滤波器,首先我们读入saber用来做为示例的图像 #读入图像代码,在此之前应当引入必要的opencv matplotlib numpysaber = cv2.im ...

  • python+opencv图像处理(十八)

    自适应直方图均衡 之前介绍的直方图均衡的方法是针对整幅图像来说的,也即是全局的直方图均衡化.全局的直方图均衡化会存在一些问题,比如因过度爆光而使得局部细节模糊等,如下图所示,左图是源图,右图是直方图均 ...

  • python+opencv图像处理(十二)

    图像仿射变换和透视变换 天晴了...... 1.仿射变换 图像的仿射变换就是图像的旋转加上拉升,说直白点,就是把矩形变成平行四边形. 要把矩形变成平行四边行,只需要拉伸其四个角点就行了,事实上,只需要 ...

  • python+opencv图像处理(十九)

    视频的读入和显示 在图像处理中,视频处理是其中的重要一环,本篇介绍视频的读入和显示. 1.视频读入 Opencv中有自带的函数可以实现视频的读入和显示,代码如下: 视频其实也就是一帧一帧的图像,所以在 ...

  • python+opencv图像处理(十五)

    直方图均衡 直方图均衡化是通过对图像的直方图进行修正来获得图像增强效果的方法,主要是进行对比度增强,就是让亮的更亮,暗的更亮. 1.灰度图像的直方图均衡 先上图看效果. 如图上标题所示,第一张是原图, ...

  • python+opencv图像处理(十四)

    图像直方图 1.灰度图像的直方图 灰度图像的直方图是灰度级和这种灰度级的概率之间关系的图形. 直接看图,下图中左侧是原图,右图为其直方图. 完整代码如下: import cv2 as cv impor ...

  • python+opencv图像处理(十)

    图像旋转 本篇主要利用opencv的转换函数warpAffine实现图像的平移和旋转. 1.图像旋转 图像旋转即是根据某个中心点进行旋转. 要进行旋转,要找到中心点,要知道旋转角度,opencv提供了 ...

  • python+opencv图像处理(四十二)

    Kirsch算子 1.Kirsch算子 Kirsch算子是R.Kirsch提出来一种边缘检测新算法,它采用8个模板对图像上的每一个像素点进行卷积求导数,这8个模板代表8个方向,对图像上的8个特定边缘方 ...

  • python+opencv图像处理(三十八)

    Retinex理论 最近研究了下Retinex,这个算法用的地方还挺多的,较多是用在水下图像或者去雾等,还没有研究得太清楚,先做个笔记 . Retinex是Edwin.H.Land于1963年提出的建 ...

  • python+opencv图像处理(三十二)

    理想低通滤波 淅淅沥沥的雨天...... 天晴想下雨,下雨想天晴... 理想低通滤波是滤掉高频部分,仅允许低频通过,以去掉噪声,使图像得到平滑. 其实现步骤: 1. 将图像进行傅里叶变换,将低频移至中 ...