文章目录

  • 前言
  • 一、高斯拉普拉斯方法
  • 二、代码实现
    • 1.LoG滤波器
    • 2.和图像进行卷积

前言

拉普拉斯检测算子结合在一起进行边缘检测的方法:先对图像进行平滑,然后再用Laplacian算子检测边缘。

因为卷积具有结合律,拉氏变换其实也是对模板的卷积。


一、高斯拉普拉斯方法


h(x,y)的拉氏变换:

所以,就变成了图像跟LoG的卷积,其实可以把LoG当成滤波器。

二、代码实现

1.LoG滤波器

代码如下(示例):

def generate_LoG_filter(size, sigma):# 计算中心位置center = size // 2# 生成网格 meshgrid生成一个二维数组(x,y)x, y = np.meshgrid(np.arange(size), np.arange(size))# 计算每个像素到中心位置的距离的平方r_squared = (x - center) ** 2 + (y - center) ** 2# 生成高斯权值和模板gaussian = 1.0 / (2 * np.pi * sigma ** 2) * np.exp(-r_squared / (2 * sigma ** 2))# 生成拉普拉斯算子模板laplacian = (r_squared - 2 * sigma ** 2) / (sigma ** 4) * gaussian# 将模板归一化laplacian = laplacian/np.sum(laplacian)return laplacian

生成的模板如下:

2.和图像进行卷积

代码如下(示例):

def my_LoG(img, kernel_size, sigma):# 创建LoG滤波器kernel = generate_LoG_filter(kernel_size, sigma)# 图像卷积filtered_img = img_filter2D.my_filter2D(img,kernel)return filtered_img
#边缘判断
# Marr边缘检测
def marr_edge_detection(img, threshold):# 对图像进行LoG滤波filtered_img = my_LoG(img, 5, 1)# 查找零交叉点zero_crossing = np.zeros_like(filtered_img)rows, cols = filtered_img.shapefor i in range(1, rows - 1):for j in range(1, cols - 1):neighbors = [filtered_img[i+1, j], filtered_img[i-1, j], filtered_img[i, j+1], filtered_img[i, j-1],filtered_img[i+1, j+1], filtered_img[i-1, j-1], filtered_img[i+1, j-1], filtered_img[i-1, j+1]]if filtered_img[i, j] == 0:if (np.sign(neighbors) != np.sign(filtered_img[i, j])).any():zero_crossing[i, j] = 255elif (np.sign(neighbors) != np.sign(filtered_img[i, j])).sum() > 2:zero_crossing[i, j] = 255# 将像素值大于阈值的点作为边缘点输出threshold_img = np.zeros_like(filtered_img)threshold_img[filtered_img > threshold] = 255# 将零交叉点和大于阈值的点作为边缘点合并输出edge_img = np.zeros_like(filtered_img)edge_img[(zero_crossing == 255) | (threshold_img == 255)] = 255return edge_img
#打印
# 读取图像并进行Marr边缘检测
img = cv2.imread('lena.bmp', 0)
# 创建一个2x3的子图
fig, axs = plt.subplots(nrows=2, ncols=3, figsize=(10, 8))# 设置不同的阈值参数
thresholds = [10, 30, 50, 70, 90, 110]# 循环绘制每组Marr边缘检测结果
for i, ax in enumerate(axs.flat):if i == 0:# 绘制原图ax.imshow(img, cmap='gray')ax.set_title('Original Image')ax.axis('off')else:# 进行Marr边缘检测并绘制结果edge_img = marr_edge_detection(img, thresholds[i-1])title = f'threshold={thresholds[i-1]}'ax.imshow(edge_img, cmap='gray')ax.set_title(title)ax.axis('off')plt.show()


09 Marr算子(LoG算法)相关推荐

  1. 【OpenCv】Marr算子边缘检测

    Marr算子: Laplacian of a Gaussian(LOG) Marr算子是在Laplacian算子的基础上实现的,它得益于对人的视觉机理的研究,有一定的生物学和生理学意义. 由于Lapl ...

  2. 如何用matlab求出覆冰图像像素点,输电线路覆冰图像的Canny算子改进算法研究

    输电线路覆冰图像的Canny算子改进算法研究 摘 要: 每到冬季 关键词: 形态学滤波; Canny算子; 边缘检测; 覆冰检测; 微分算子 中图分类号:TM755 文献标志码:A文章编号:1006- ...

  3. 改进边缘检测算子----Marr-Hildreth算法

    边缘检测的改进: 一.边缘检测方法是以使用较小的算则为基础的, Marr和Hildreth证明了:(1)灰度变化与图像尺寸无关,因此他们的检测要求使用不同尺寸的算子: (2)灰度的突然变化会在一阶导数 ...

  4. Opencv2.4学习::边缘检测(6)Marr-Hildreth算法(LOG算法)

    边缘检测 1.Sobel 2.Laplace 3.Roberts 4.Canny Marr-Hildreth 简单来说,就是先对图像进行(1)高斯滤波,再进行拉普拉斯变换,(2)由于拉普拉斯变换是二阶 ...

  5. opencv 基本算子,LOG算子-墨西哥草帽算子,canny算子

    本章内容: 1. LOG算子-墨西哥草帽算子 2. canny算子 1. LOG算子-墨西哥草帽算子 输出结果 2. canny算子 输出结果 源代码 #include <ostream> ...

  6. 【水文模型】09 新安江模型SCE-UA算法自动率定

    2022/2/28 实现SCE-UA算法率定新安江模型 下载地址 您可以从Github下载

  7. 高斯拉普拉斯算子LOG

    Laplacian(拉普拉斯)是对于一张图像的二阶空间导数上各向同性的测量.一张图像的Laplacian会显示出intensity(亮度) 剧烈变化的区域,所以经常用作边缘检测. 一幅图像的拉普拉斯变 ...

  8. LIS 的 n*log 算法 ———二分维护

    upper_bound只会替换让留在数组里的最长递增子序列尽可能小 由于upper查出来的结果下标是那个可以插入这个值得最后一个元素 所以他会把大的数变成小的数 upper将可以替换成新元素的元素替换 ...

  9. 图像边缘检测技术与理论发展脉络梳理大放送

    FROM:http://blog.csdn.net/baimafujinji/article/details/23352867 基于梯度的方法 Roberts, Sobel, Prewitt 带方向的 ...

最新文章

  1. 实探全球第九大超算中心:温水冷却节能30% 正寻求新突破
  2. oracle record 类型,Oracle记录类型(record)和%rowtype
  3. permute、transpose、view、reshape、unsequeeze与flatten
  4. linux 常用命令04 查找和检索
  5. 读取txt文件赋值到DataGridView中
  6. exp imp 及参数
  7. 解决路由环路问题的探讨
  8. thoughtworks面试题分析与解答
  9. 树莓派GPIO点亮第一个led
  10. 【渝粤教育】21秋期末考试土木工程施工10516k1
  11. 翟菜花:5G时代的顺风车,智能音箱该怎么坐?
  12. java字符串在字符中的位置_Java如何获取字符在字符串中的位置
  13. 字符串、bute[]数组和十六进制字符串的相互转换
  14. 软件系统开发费用的估算——功能点方法 应用实例
  15. 移动硬盘不能识别的常见7种解决方案 ~ By 逆天经验
  16. 《大学“电路分析基础”课程实验合集.实验五》丨线性有源二端网络等效电路的研究
  17. C++ va_list
  18. 易中天品汉代风云人物09:刘邦崛起之谜
  19. vue admin template 侧边栏及顶部栏演示字体样式修改
  20. 三人抢答器-20151105

热门文章

  1. 什么牌子的蓝牙耳机音质好?十大公认音质好的无线蓝牙耳机
  2. 迟到 的2018年终总结
  3. 关于enum应用的总结
  4. 迈向云原生:名企FreeWheel应用架构演进
  5. 模型驱动软件开发:技术、工程与管理
  6. python实现 小程序用户管理实现
  7. 基于PLC的大小球分拣系统控制设计物料分拣组态设计程序
  8. python语言和sql语言的区别_SQL和Python的集合操作对比:适合的就好!
  9. ipone12为什么没虹膜识别
  10. JSON.stringify() 玩出新花样,太腻害了