一阶微分算子边缘检测算法
1、Roberts算子
适合处理声噪较低的图片,缺点:对图片的定位不太准,提取的边缘线条比较粗;通过cv2.filte(src,ddepth,kernel,[dst[,anchor,[delta[,borderType]]])实现卷积运算;
垂直方向w1与水平方向w2
ddepth:图像深度:图像深度是指图像中每个像素的颜色表示所需的位数。它决定了每个像素可能有的颜色数和灰度级别,也影响了图像的质量和细节表现能力。
delta:表示的是一个偏移量,通常在像素值的更改或者是数据的平移上使用。
通过cv2.convertScaleAbs()函数实现将数值转化为8位无符号整型;
import cv2
import numpy as np
img=cv2.imread('img.png')
gray =cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
kernelx =np.array([[1,0],[0,-1]],dtype=int)
kernely =np.array([[0,1],[-1,0]],dtype=int)
x1 =cv2.filter2D(gray,cv2.CV_16S,kernelx)#卷积运算
Y1 =cv2.filter2D(gray,cv2.CV_16S,kernely)
absX1=cv2.convertScaleAbs(x1)#数值转化
absY1=cv2.convertScaleAbs(Y1)
Roberts = cv2.addWeighted(absX1,0.5,absY1,0.5,gamma=0) # 实现两个图像融合,
cv2.imshow('Roberts', Roberts)
cv2.waitKey(0)
gamma:修正系数大于1,会增加饱和度,使图像的色彩更鲜明; 修正系数小于1,会减小饱和度,使图像看起来比较平淡。
2、Prewitt算子
原理是通过利用特定区域的像素灰度值产生的差分实现边缘检测。适合用来识别噪声较多、灰度渐变的图像边缘。
垂直方向w1与水平方向w2
img=cv2.imread('img.png')
gray =cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
kernelx =np.array([[-1,-1,-1],[0,0,0],[1,1,1]],dtype=int)
kernely =np.array([[-1,0,1],[-1,0,1],[-1,0,1]],dtype=int)
x1 =cv2.filter2D(gray,cv2.CV_16S,kernelx)
Y1 =cv2.filter2D(gray,cv2.CV_16S,kernely)
absX1=cv2.convertScaleAbs(x1)
absY1=cv2.convertScaleAbs(Y1)
image= cv2.addWeighted(absX1,0.5,absY1,0.5,0)
cv2.imshow('image', image)
cv2.waitKey(0)
3、Sobel算子
较为常用,多用于噪声较多,灰度渐变
cv2.Soble();
img=cv2.imread('img.png')
gray =cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
x1 =cv2.Sobel(gray,cv2.CV_16S,1,0)
Y1 =cv2.Sobel(gray,cv2.CV_16S,0,1)
absX1=cv2.convertScaleAbs(x1)
absY1=cv2.convertScaleAbs(Y1)
image= cv2.addWeighted(absX1,0.5,absY1,0.5,0)
cv2.imshow('image', image)
cv2.waitKey(0)
4、Canny算子
具有很好的边缘检测性能,选择灰度强度变化最强的位置。
需要先对图片进行降噪,否则可能会在边缘检测中被识别为边缘文章来源:https://www.toymoban.com/news/detail-844881.html
cv2.Canny();文章来源地址https://www.toymoban.com/news/detail-844881.html
img=cv2.imread('img.png')
gray =cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
gaus =cv2.GaussianBlur(gray,(5,5),0)
image = cv2.Canny(gaus,100,200)
cv2.imshow('image', image)
cv2.waitKey(0)
到了这里,关于python+opencv_my图像边缘检测笔记1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!