Opencv3.0-python的那些事儿:(六)、Opencv的图像梯度
2016-06-06 11:55
537 查看
# coding: utf-8 import cv2 from matplotlib import pyplot as plt import numpy as np ''' 18 图像梯度 梯度是求导,三种梯度滤波器,(高通滤波器):Sobel,Scharr和Laplacian SobelScharr:求一阶或二阶导数,Scharr是对Sobel(使用小的卷积核求解梯度角度时)的优化。 Laplacian:是求二阶导数 Sobel 算子是高斯平滑u微分操作的结合体,抗噪声能力很好,可以设定求导的方向(xorder或yorder) 还可以设定使用的卷积核的大小(ksize)。如果ksize=-1,会使用3*3的Scharr滤波器,它的效果要 比3*3的Sobel滤波器好,3*3的Scharr滤波器卷积核如下: -3 0 3 x方向 -10 0 10 -3 0 3 -3 -10 -3 y方向 0 0 0 3 10 3 Laplacian算子可以使用二阶导数的形式定义,假设其 离散实现类似于二阶Sobel导数,Opencv在计算拉普拉斯算子时 直接调用Sobel算子,计算公式为 △src =∂ 2 src ∂x 2 + ∂ 2 src ∂y 2 △src = ∂2 src / ∂ x2 + ∂2 src / ∂ y2 拉普拉斯滤波器使用的卷积核 0 1 0 kernel=1 -4 1 0 1 0 这些算子应该是用于做边缘检测的(高频成分) 注意:使用cv2.CV_64F的原因是从白到黑的边界点导数为负数后,如果 使用的是np.int8则会变成0,把边界地市 ''' def imageGradient_test(): img = cv2.imread("dave2.jpg" , 0) ''' cv2.Laplacian(src,ddepth) ddepth:目标图像要求的深度 ''' laplacian = cv2.Laplacian(img , cv2.CV_64F) ''' cv2.Sobel(src,ddepth,dx,dy[,ksize]) 作用:计算Sobel算子 ddpeth:输出图像的深度,比如CV_8U,CV_64F等 dx:x的导数,dy:y方向的导数 ksize:核的代销,必须是1,3,5或7 ''' sobelx = cv2.Sobel(img , cv2.CV_64F , 1 , 0 , ksize=5) sobely = cv2.Sobel(img , cv2.CV_64F , 0 , 1 , ksize=5) plt.subplot(2,2,1) , plt.imshow(img , cmap="gray") plt.title("Original") , plt.xticks([]) , plt.yticks([]) plt.subplot(2,2,2), plt.imshow(laplacian , cmap="gray") plt.title("Laplacian") , plt.xticks([]) ,plt.yticks([]) plt.subplot(2,2,3), plt.imshow(sobelx , cmap="gray") plt.title("Sobelx") , plt.xticks([]) ,plt.yticks([]) plt.subplot(2,2,4), plt.imshow(sobely , cmap="gray") plt.title("Sobely") , plt.xticks([]) ,plt.yticks([]) plt.show() if __name__ == "__main__": imageGradient_test()
相关文章推荐
- Android下用OpenCV3.0库静态链接错误解决方法
- opencv3.0.0环境搭建
- 关于图像中的高低频成分与梯度及梯度方向的说明
- cv_bridge+opencv3.0+ROS Indigo+Clion1.2.2小记
- Ubuntu14.04 64位+Python3.4环境下安装opencv3.0的方法
- Windows7 64位+python3.4环境下安装opencv3.0的方法
- Opencv3.0-python的那些事儿:(一)、Opencv的图像和视频处理基本用法
- Opencv3.0-python的那些事儿:(二)、Opencv的颜色空间转换
- Opencv3.0-python的那些事儿:(三)、Opencv的图像处理中的几何变换
- Opencv3.0-python的那些事儿:(四)、Opencv的图像阈值处理
- Opencv3.0-python的那些事儿:(五)、Opencv的图像模糊
- Opencv3.0-python: 视频处理时报错color.cpp:7456: error: (-215) scn == 3 || scn == 4 的解决办法
- Opencv3.0-python的那些事儿:(八)、Opencv的直方图均衡化
- OpenCV3.0下 cvCvtColor函数灰度化图像遇到问题及解决办法
- 数字图像的梯度概念以及计算(the gradient of the image)
- 解决编译opencv3.0时出现的问题undefined reference to `parallel_pthreads_set_threads_num(int)'
- Ubuntu14.0下OpenCV3.0开发环境搭建
- Windows环境下编译OpenCV3.0和OpenCV_contrib
- OpenCV3.0以上版本的Mat和IplImage相互转换
- android opencv3.0 jni 编译错误 undefined reference to `cvCvtColor'