• 技术文章 >Python技术 >Python基础教程

    python中Prewitt算子如何理解

    小妮浅浅小妮浅浅2021-08-30 09:28:50原创4300

    说明

    1、Prewitt算子是一阶微分算子的边缘检测,利用像素点上下、左右邻点的灰度差,在边缘达到极值检测边缘。

    去除部分伪边缘,对噪声有平滑作用。

    2、Prewitt算子使用33个模板来计算该区域的像素值。

    而Robert算子的模板是22个,所以Prewitt算子的边缘检测结果在水平和垂直方向上比Robert算子更明显。Prewitt算子适用于识别噪音大、灰度渐变的图像。

    实例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    import cv2 as cv

        import numpy as np

        import matplotlib.pyplot as plt

         

        # 读取图像

        img = cv.imread('data.jpg', cv.COLOR_BGR2GRAY)

        rgb_img = cv.cvtColor(img, cv.COLOR_BGR2RGB)

         

        # 灰度化处理图像

        grayImage = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

         

        # Prewitt 算子

        kernelx = np.array([[1,1,1],[0,0,0],[-1,-1,-1]],dtype=int)

        kernely = np.array([[-1,0,1],[-1,0,1],[-1,0,1]],dtype=int)

         

        x = cv.filter2D(grayImage, cv.CV_16S, kernelx)

        y = cv.filter2D(grayImage, cv.CV_16S, kernely)

         

        # 转 uint8 ,图像融合

        absX = cv.convertScaleAbs(x)

        absY = cv.convertScaleAbs(y)

        Prewitt = cv.addWeighted(absX, 0.5, absY, 0.5, 0)

         

        # 用来正常显示中文标签

        plt.rcParams['font.sans-serif'] = ['SimHei']

         

        # 显示图形

        titles = ['原始图像', 'Prewitt 算子']

        images = [rgb_img, Prewitt]

         

        for i in range(2):

            plt.subplot(1, 2, i + 1), plt.imshow(images[i], 'gray')

            plt.title(titles[i])

            plt.xticks([]), plt.yticks([])

        plt.show()

    以上就是python中Prewitt算子的理解,希望对大家有所帮助。更多Python学习指路:python基础教程

    本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

    专题推荐:python prewitt
    上一篇:python中Roberts算子是什么 下一篇:python中Sobel算子是什么

    相关文章推荐

    • python中htmlparser解析html• python中值传递和引用传递的区别• python位置参数如何使用• python位置参数的使用注意• python默认参数如何使用• python定义可变参数的两种形式• python逆向参数收集是什么• python函数如何返回多个值• reload在python中的使用• python中socket如何建立服务器• python中socket建立客户连接• python中Roberts算子是什么

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网