Python3与OpenCV3.3 图像处理(十七)--图像梯度
来源:互联网 发布:linux网络服务器项目 编辑:程序博客网 时间:2024/06/05 01:16
一、什么是图像梯度
可以把图像看成二维离散函数,图像梯度其实就是这个二维离散函数的求导:
图像梯度: G(x,y) = dx i + dy j;
dx(i,j) = I(i+1,j) - I(i,j);
dy(i,j) = I(i,j+1) - I(i,j);
其中,I是图像像素的值(如:RGB值),(i,j)为像素的坐标。
图像梯度一般也可以用中值差分:
dx(i,j) = [I(i+1,j) - I(i-1,j)]/2;
dy(i,j) = [I(i,j+1) - I(i,j-1)]/2;
图像边缘一般都是通过对图像进行梯度运算来实现的。图像梯度的最重要性质是,梯度的方向在图像灰度最大变化率上,它恰好可以反映出图像边缘上的灰度变化
上面说的是简单的梯度定义,其实还有更多更复杂的梯度公式。(来源百度)
二、示例代码
import cv2 as cvimport numpy as npdef sobel(img): """索贝尔算子""" grad_x=cv.Sobel(img,cv.CV_32F,1,0) grad_y=cv.Sobel(img,cv.CV_32F,0,1) gradx=cv.convertScaleAbs(grad_x) grady = cv.convertScaleAbs(grad_y) cv.imshow("x",gradx) cv.imshow("y",grady) gradxy=cv.addWeighted(gradx,0.5,grady,0.5,0) cv.imshow("grad",gradxy)def scharr(img): """某些边缘差异很小的情况下使用""" grad_x = cv.Scharr(img, cv.CV_32F, 1, 0) grad_y = cv.Scharr(img, cv.CV_32F, 0, 1) gradx = cv.convertScaleAbs(grad_x) grady = cv.convertScaleAbs(grad_y) cv.imshow("x", gradx) cv.imshow("y", grady) gradxy = cv.addWeighted(gradx, 0.5, grady, 0.5, 0) cv.imshow("grad", gradxy)def lapalian(img): """拉普拉斯算子""" dst=cv.Laplacian(img,cv.CV_32F) lpls=cv.convertScaleAbs(dst) cv.imshow("lpls",lpls)src=cv.imread('15.jpg')lapalian(src)cv.waitKey(0)cv.destroyAllWindows()
阅读全文
0 0
- Python3与OpenCV3.3 图像处理(十七)--图像梯度
- Python3与OpenCV3.3 图像处理(五)--图像运算
- Python3与OpenCV3.3 图像处理(十六)--图像金字塔
- Python3与OpenCV3.3 图像处理(四)--色彩空间
- Python3与OpenCV3.3 图像处理(六)--ROI
- Python3与OpenCV3.3 图像处理(七)--洪填充
- Python3与OpenCV3.3 图像处理(八)--模糊
- Python3与OpenCV3.3 图像处理(十九)--直线检测
- Python3与OpenCV3.3 图像处理(十一)--图像直方图
- Python3与OpenCV3.3 图像处理(十二)--图像直方图应用
- Python3与OpenCV3.3 图像处理(十五)--图像二值化
- Python3与OpenCV3.3 图像处理(二)--图像基本操作
- Python3与OpenCV3.3 图像处理(十)--EPF
- Python3与OpenCV3.3 图像处理(十三)--反射投影
- Python3与OpenCV3.3 图像处理(十四)--模板匹配
- Python3与OpenCV3.3 图像处理(补)--第十五节补充
- Python3与OpenCV3.3 图像处理(一)--环境搭建与简单DEMO
- Python3与OpenCV3.3 图像处理(二十二)--对象测量(纯代码)
- mybatis之动态sql语句
- java工厂模式
- MongoDB必知必会
- caffe-MathFunction
- [Linux] CentOS关闭防火墙
- Python3与OpenCV3.3 图像处理(十七)--图像梯度
- vector第三步修炼之道
- 15分钟实战机器学习:验证码(CAPTCHA)识别
- 如何使用阿里云群发短信
- 工业相机标定的相关知识
- Spring cache
- 【Django】简析Django的模板系统发展史
- eclipse配置tomcat运行时访问路径不需要项目名称
- hashcode和equals为什么都要重写?