EmguCV学习笔记 VB.Net 8.4 pyrMeanShiftFiltering

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。

教程VB.net版本请访问: EmguCV学习笔记 VB.Net 目录-CSDN博客

教程C#版本请访问: EmguCV学习笔记 C# 目录-CSDN博客

笔者的博客网址:https://blog.csdn.net/uruseibest

教程配套文件及相关说明以及如何获得pdf教程和代码,请移步: EmguCV学习笔记

学习VB.Net知识,请移步: vb.net 教程 目录_vb中如何用datagridview-CSDN博客

学习C#知识,请移步: C# 教程 目录_c#教程目录-CSDN博客

8.4 pyrMeanShiftFiltering

Mean-shift算法是一种图像分割和聚类算法,可以用于对图像中的颜色或纹理进行分割和聚类。在实现中,Mean-shift算法通常需要选择合适的核函数和带宽参数,以便更好的计算密度函数。同时,还需要考虑如何处理边界处的像素,以避免边界处的像素被错误地分类。Mean-shift算法在计算量和时间复杂度上较高,但是具有较好的稳定性和可靠性,可以用于图像分割、目标跟踪等应用场景。

CvInvoke.PyrMeanShiftFiltering方法通过图像金字塔处理,用于对图像进行图像分割和去噪。它在应用均值漂移滤波器(Mean Shift Filter)之前先对图像进行了降采样,以减少噪声和细节对分割结果的影响。PyrMeanShiftFiltering方法可以根据像素值的相似性将图像分割成不同的区域,并且能够保留边缘信息,适用于对噪声较多、细节较多的图像进行分割。该方法声明如下:

Public Shared Sub PyrMeanShiftFiltering (

src As IInputArray,

dst As IOutputArray,

sp As Double,

sr As Double,

maxLevel As Integer,

termcrit As MCvTermCriteria

)

参数说明:

  1. src:输入图像,可以是单通道或多通道图像。
  2. dst:输出图像,与输入图像具有相同的尺寸和深度。
  3. sp:空间窗口的半径,用于控制空间范围内的像素相似性。
  4. sr:颜色窗口的半径,用于控制颜色相似性。
  5. maxLevel:金字塔的最大层数,用于多尺度处理。
  6. termcrit:终止条件,用于控制算法的收敛性。这是一个McvTermCriteria类型。请参看7.1.4节【CornerSubPix】。

注意:事实上从该方法名称来看,它带有Filter(滤波),更和4.2 节【卷积操作】的各方法作用接近。

【代码位置:frmChapter8】Button8_Click

Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click

Dim msrc As New Mat("C:\learnEmgucv\tower.jpg", ImreadModes.Color)

ImageBox1.Image = msrc

Dim criteria As New MCvTermCriteria(10, 0.1)

Dim mout As New Mat

CvInvoke.PyrMeanShiftFiltering(msrc, mout, 80, 80, 4, criteria)

' 显示结果

CvInvoke.Imshow("mout", mout)

Dim mcannyout As New Mat

CvInvoke.Canny(mout, mcannyout, 150, 300)

CvInvoke.Imshow("mcannyout", mcannyout)

' 等待按键退出

CvInvoke.WaitKey(0)

End Sub

输出结果如下图所示:

图8-8 PyrMeanShiftFiltering分离前景

代码最后使用Canny提取边缘,可以看到图像边缘明显变少,分隔区域也明显整齐平滑。

相关推荐
R-G-B1 分钟前
【P14 3-6 】OpenCV Python——视频加载、摄像头调用、视频基本信息获取(宽、高、帧率、总帧数)
python·opencv·视频加载·摄像头调用·获取视频基本信息·获取视频帧率·获取视频帧数
cimeo1 分钟前
【C 学习】06-算法&程序设计举例
c#
荼蘼5 分钟前
OpenCv(三)——图像平滑处理
人工智能·opencv·计算机视觉
Monkey PilotX17 分钟前
机器人“ChatGPT 时刻”倒计时
人工智能·机器学习·计算机视觉·自动驾驶
百锦再44 分钟前
.NET 的 WebApi 项目必要可配置项都有哪些?
java·开发语言·c#·.net·core·net
程序猿小D10 小时前
【完整源码+数据集+部署教程】孔洞检测系统源码和数据集:改进yolo11-RetBlock
yolo·计算机视觉·毕业设计·数据集·yolo11·孔洞检测
WYH28711 小时前
C#控制台输入(Read()、ReadKey()和ReadLine())
开发语言·c#
hqwest12 小时前
C#WPF实战出真汁06--【系统设置】--餐桌类型设置
c#·.net·wpf·布局·分页·命令·viewmodel
图灵学术计算机论文辅导13 小时前
傅里叶变换+attention机制,深耕深度学习领域
人工智能·python·深度学习·计算机网络·考研·机器学习·计算机视觉
做一位快乐的码农15 小时前
基于.net、C#、asp.net、vs的保护大自然网站的设计与实现
c#·asp.net·.net