美文网首页
python 3+opencv 3.4(四)--处理图像

python 3+opencv 3.4(四)--处理图像

作者: 五秋木 | 来源:发表于2018-03-31 15:11 被阅读0次

    一. 高通滤波器:

    检测图像的某个区域,然后根据像素和周围像素亮度差值来提升该像素亮度的滤波器--适用于边缘检测。
    1. 创建核矩阵,又称为滤波器。核:一组权重的集合。大小为7的核时7*7矩阵。一般滤波器所有值和为0。例如kernal_3x3=np.array([[-1,-1,-1], [-1,8,-1], [-1,-1,-1]])
    2.读入图像,灰度图。img=cv2.imread('../data/0.jpg',0)
    3. 使用核与图像进行卷积,使用scipy中ndimage.convolve函数。得到的结果就是和源图像相同大小的矩阵。其中进行卷积的运算,运算规则参考文章:卷积神经网络简介
    4. 显示出卷积后的图像,先创建窗口,重设窗口大小,显示图片,关闭窗口。结果如下:

    卷积
    5. 代码如下:
     import cv2
     import numpy as np
     from scipy import ndimage
     #这个是滤波器使用的模板矩阵
     kernal_3x3=np.array([[-1,-1,-1],
                      [-1,8,-1],
                      [-1,-1,-1]
                      ])
    
    
     kernal_5x5=np.array([[-1,-1,-1,-1,-1],
                      [-1,1,2,1,-1],
                      [-1,2,4,2,-1],
                      [-1,1,2,1,-1],
                      [-1,-1,-1,-1,-1]
                      ])
    
     img=cv2.imread('../data/0.jpg',0) #以灰度的方式加载图片
    
     #通过使用模板矩阵进行高通滤波
     k3=ndimage.convolve(img, kernal_3x3) 
    
     k5=ndimage.convolve(img,kernal_5x5)
    
     #使用OpenCV的高通滤波
     blurred = cv2.GaussianBlur(img,(11,11),0)
     g_hpf=img-blurred
     cv2.namedWindow("origin picture", cv2.WINDOW_NORMAL) # 初始化一个名为Image的窗口
     cv2.resizeWindow("origin picture", 400, 600);
     cv2.namedWindow("k3", cv2.WINDOW_NORMAL) # 初始化一个名为Image的窗口
     cv2.resizeWindow("k3", 400, 600);
     cv2.namedWindow("k5", cv2.WINDOW_NORMAL) # 初始化一个名为Image的窗口
     cv2.resizeWindow("k5", 400, 600);
     cv2.namedWindow("blurred", cv2.WINDOW_NORMAL) # 初始化一个名为Image的窗口
     cv2.resizeWindow("blurred", 400, 600);
     cv2.namedWindow("g_hpf", cv2.WINDOW_NORMAL) # 初始化一个名为Image的窗口
     cv2.resizeWindow("g_hpf", 400, 600);
     cv2.imshow('origin picture',img)
     cv2.imshow('k3',k3)
     cv2.imshow('k5',k5)
     cv2.imshow('blurred',blurred)
     cv2.imshow('g_hpf',g_hpf)
     cv2.waitKey(0)
     cv2.destroyAllWindows()
    

    二、低通滤波器

    像素和周围像素的亮度差值小于一个特定值时,平滑该像素的亮度,用于降噪和模糊化。

    三、边缘检测

    边缘检测滤波函数:Laplacian() Sobe() Scharr(),将非边缘部分转化为黑色,边缘区域转化为白色或者其他饱和的颜色。但容易将噪声错误识别为边缘,故要进行模糊处理。函数有:blur()(简单算数平均)medianBlur() 以及GaussionBlur() 。
    具体代码和实现效果待学习~~

    相关文章

      网友评论

          本文标题:python 3+opencv 3.4(四)--处理图像

          本文链接:https://www.haomeiwen.com/subject/omdwcftx.html