openCV显著性检测的使用

作者:山居秋暝LS 时间:2022-10-20 12:25:02 

1. 概念

显著性检测,就是使用图像处理技术和计算机视觉算法来定位图片中最“显著”的区域。显著区域就是指图片中引人注目的区域或比较重要的区域,例如人眼在观看一幅图片时会首先关注的区域。例如下图,我们人眼一眼看过去首先注意到的不是草坪,而是躺在草坪上的内马尔,内马尔所在的区域就是显著性区域。这种自动定位图像或场景重要区域的过程称为显着性检测。显著性检测在目标检测、机器人领域有很多应用。

在OpenCV的saliency模块中有三种显著性检测算法:

  • Static saliency:此类显着性检测算法依赖于图像特征和统计信息来定位图像中显著性区域。

  • Motion saliency: 此类显着性检测算法输入为视频或一系列连续帧。运动显着性算法处理这些连续的帧,并跟踪帧中“移动”的对象。这些移动的对象被认为是显着性区域。

  • Objectness:这类显著性检测算法计算出一个个的建议区域(proposals),这些建议区域被认为是目标可能存在的区域。

OpenCV提供类4种显著性检测算法的实现:

  • cv2.saliency.ObjectnessBING_create()

  • cv2.saliency.StaticSaliencySpectralResidual_create()

  • cv2.saliency.StaticSaliencyFineGrained_create()

  • cv2.saliency.MotionSaliencyBinWangApr2014_create()

2 静态显著性检测

static_saliency.py使用两种Static saliency算法:cv2.saliency.StaticSaliencySpectralResidual_create()和cv2.saliency.StaticSaliencyFineGrained_create()。使用computeSaliency()计算图片的显著性区域,返回结果是和输入图片一样大小的矩阵,每个像素位置的取值[0,1],值越大表示该像素位置越显著。最后我将返回显著性矩阵可视化出来。

3 代码

'''
2 图像凸显
'''
import cv2
import matplotlib.pyplot as plt

# 1 read
img = cv2.imread('luna.png',1)
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)

# 2 StaticSaliencySpectralResidual_create()
Residual = cv2.saliency.StaticSaliencySpectralResidual_create()
_,img_Residual = Residual.computeSaliency(img)
img_Residual = (img_Residual * 255).astype("uint8")

# 3 saliency.StaticSaliencyFineGrained_create()
Grained = cv2.saliency.StaticSaliencyFineGrained_create()
_,img_Grained = Grained.computeSaliency(img)
img_Grained = (img_Grained*255).astype('uint8')
thre = cv2.threshold(img_Grained, 0, 255,
                     cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]

# 4 show
plt.subplot(221)
plt.imshow(img)
plt.title('img')

plt.subplot(222)
plt.imshow(img_Residual)
plt.title('img_Residual')
#
plt.subplot(223)
plt.imshow(img_Grained)
plt.title('img_Grained')

plt.subplot(224)
plt.imshow(thre)
plt.title('thre')

plt.show()

来源:https://blog.csdn.net/qq_35732321/article/details/123532399

标签:openCV,显著性检测
0
投稿

猜你喜欢

  • 浅谈Python中的异常和JSON读写数据的实现

    2021-02-07 10:41:16
  • Oracle重建控制文件的实例教程

    2024-01-25 11:02:16
  • QQ登录Banner之清明概念

    2009-04-15 11:41:00
  • 设置python3为默认python的方法

    2023-07-11 19:24:49
  • 浅谈vue中使用编辑器vue-quill-editor踩过的坑

    2024-04-10 13:46:00
  • 如何完美的建立一个python项目

    2021-02-20 21:07:26
  • Go gRPC服务客户端流式RPC教程

    2023-07-16 06:08:55
  • Python 里最强的地图绘制神器

    2023-07-17 12:36:43
  • mysql alter语句用法实例

    2024-01-25 12:32:53
  • python中常用的各种数据库操作模块和连接实例

    2024-01-18 16:29:20
  • Python Pandas多种添加行列数据方法总结

    2023-10-19 17:17:58
  • mysql #1062 –Duplicate entry '1' for key 'PRIMARY'

    2024-01-18 22:15:16
  • SQL语句中LEFT JOIN的ON和WHERE有什么区别

    2024-01-21 04:33:00
  • 浅谈Python 命令行参数argparse写入图片路径操作

    2023-03-18 21:08:11
  • 网站登录持久化Cookie方案

    2023-07-01 01:44:17
  • PHP PDOStatement::fetchAll讲解

    2023-06-14 15:54:26
  • ubuntu下磁盘空间不足导致mysql无法启动的解决方法

    2024-01-26 00:56:44
  • pytorch 中forward 的用法与解释说明

    2021-08-10 04:14:44
  • python上下文管理器协议的实现

    2023-08-28 18:32:18
  • 详解pytest分布式执行插件 pytest-xdist 的高级用法

    2022-11-04 21:41:51
  • asp之家 网络编程 m.aspxhome.com