python 拉普拉斯算子 边缘提取 模糊判断

两年的研究僧图像处理经验告诉我,微分锐化,积分平滑,至于为什么,仔细想想微分和积分的曲线图就知道了。

拉普拉斯算子是二阶微分,由于图像是坐标系中离散的点,微分方程如下:

二阶微分推导过程如下:

对应的算子矩阵如下:

那就尝试一下,cv库有自带的拉普拉斯函数 cv2.Laplacian,此处自写,加强理解。

import numpy
import cv2

def laplace2(img):
    g = numpy.array(((0, 1, 0), (1, -4, 1), (0, 1, 0)))
   # g = numpy.array(((1, 1, 1), (1, -8, 1), (1, 1, 1)))
    re = numpy.zeros_like(img)    #生成与img相同shape的全0数组
    for i in range(1, img.shape[0] - 1):
        for j in range(1, img.shape[1] - 1):
            re[i, j] = (img[i-1 : i+2, j-1 : j+2] * g).sum()#+img[i,j]
    cv2.imwrite('./'+'1.jpg',re)
    return re

img=cv2.imread('demo.jpg')
img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
laplace2(img)

背景噪声还是很多的,所以通常先用高斯滤波消除噪声,本博客只是一个简单粗暴的实验,图片禁止盗取~ 

由此延伸,拉普拉斯算子是图像的二阶导,可以检测图像灰度值的快速变化,拉普拉斯算子经常用于图像的边缘检测。正常图像中边界清晰,经拉普拉斯计算后方差较大;模糊图像边界信息少,方差小。所以,可以利用拉普拉斯算子做图像的模糊检测。

一句代码搞定,cv2.Laplacian(image, cv2.CV_64F).var()。然后根据样本设置合适的阈值。

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值