图像梯度:
原理:
一阶导数与Soble算子
二阶导数与拉普拉斯算子
opencvAPI的应用:
图像的深度:图像中每个像素对应的位数
**图像的梯度:**图像的梯度世界上也就是一个图像,它是通过卷积和求取梯度之后联系原图进行一些列运算后得到的一副新的图像,而这幅图像可以使图像中物体的轮廓和边缘得到加强。
1. Sobel()算子:
def sobel_demo(image):
grad_x = cv.Sobel(image, cv.CV_32F, 1, 0);
#Scharr算子,为Sobel算子的增强版
grad_y = cv.Sobel(image, cv.CV_32F, 0, 1);
grad_x = cv.convertScaleAbs(grad_x);
grad_y = cv.convertScaleAbs(grad_y);
cv.imshow("gradient_x", grad_x);
cv.imshow("gradient_y", grad_y);
gradient = cv.addWeighted(gradx, 0.5, grady, 0.5, 0);
cv.imshow("gradient", gradient);
2. lapalian()算子:
def lapalian_demo(image):
dst = cv.Laplacian(image, cv.CV_32F);
dst = cv.convertScaleAbs(dst);
cv.imshow("laplalian_demo", dst);
3. 自定义算子:
def lapalian_demo(image):
dst = cv.Laplacian(image, cv.CV_32F);
dst = cv.convertScaleAbs(dst);
cv.imshow("laplalian_demo", dst);
函数说明:
1. Sobel(image, cv.CV_32F, 0, 1):
设置ddepth为 cv.CV_32F是为了防止overfloading,dx为在x方向上的求导阶数,dy为在y方向上的求导阶数。
2. convertScaleAbs(grad_x):
缩放,计算绝对值,并将结果转化为8位
3. .addWeighted(gradx, 0.5, grady, 0.5, 0):
计算两个数组的加权和 :dst(I)=saturate(src1(I)∗alpha+src2(I)∗beta+gamma)
4. Laplacian(image, cv.CV_32F):