opencv 三种不同的梯度滤波器:Sobel算子、Scharr算子、Laplacian算子

图像滤波增强处理实质上就是运用滤波技术来增强图像的某些空间频率特征,以改善地物目标与领域或背景之间的灰度反差。
  遥感系统成像过程中可能产生的”模糊”作用,常使遥感图像上某些用户感兴趣的线性形迹、纹理与地物边界等信息显示得不够清晰,
  不易识别。需要通过采用领域处理方法来分析、比较和调整像元与其周围相邻像元间的对比度关系,图像才能得到增加,也就是说
  需要采用滤波增加技术处理。

import cv2
import numpy as np


def cv_show(neme, img):
    cv2.imshow(neme, img)  # 必要参数:名字和变量名
    cv2.waitKey(0)  # 括号中0=任意键终止,单位为毫秒级别
    cv2.destroyAllWindows()  # 关闭所有窗口--图片


# 默认读取格式是 BGR
img = cv2.imread('0.jpg')

# 三种不同的梯度滤波器
# cv2.Sobel
# cv2.Scharr
# cv2.Laplacian


# 图像梯度--Sobel算子
# 图像轮廓(黑白)  左右,上下   #ksize=3 卷积核为3*3的方阵
# cv2.CV_64F 白到黑是整数,黑到白是负数,所有的负数会被截断成0,所以要取绝对值
# 1,1,不建议直接计算。  1,0、0,1 要依次计算效果才好
img1 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 灰度图

#  ksize - Sobel算子的大小,必须为1、3、5、7
sobelx = cv2.Sobel(img1, cv2.CV_64F, 1, 0, ksize=3)
sobely = cv2.Sobel(img1, cv2.CV_64F, 0, 1, ksize=3)
cv_show('sa', sobelx)

sobelx = cv2.convertScaleAbs(sobelx)
cv_show('sa', sobelx)
sobely = cv2.convertScaleAbs(sobely)
cv_show('sa', sobely)
# # 权重分配和偏置值 sobelx,0.5,sobely,0.5,0
sobelxy = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0)
cv_show('sa',sobelxy)

img1=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
sobelrx = cv2.Scharr(img1, cv2.CV_64F, 1, 0)
sobelry = cv2.Scharr(img1, cv2.CV_64F, 0, 1)
sobelrx = cv2.convertScaleAbs(sobelrx)
sobelry = cv2.convertScaleAbs(sobelry)
sobelrxy = cv2.addWeighted(sobelrx, 0.5, sobelry, 0.5, 0)
cv_show('sa',sobelrxy)

lap = cv2.Laplacian(img1, cv2.CV_64F)
laol = cv2.convertScaleAbs(lap)

res = np.hstack((sobelxy, sobelrxy, laol))
cv_show('res', res)

print(cv2.CV_64F)
print(cv2.CV_8U)

你可能感兴趣的:(opencv-python,学习笔记,opencv,计算机视觉,人工智能)