EmguCV学习笔记 VB.Net 8.4 pyrMeanShiftFiltering

ops/2024/10/21 9:37:50/

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

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知识,请移步: .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提取边缘,可以看到图像边缘明显变少,分隔区域也明显整齐平滑。


http://www.ppmy.cn/ops/103918.html

相关文章

css加载一张图片 设置整个页面背景

前言 在css中,可以使用background-image或background属性来加载图片。这两个属性都可以配合url()函数来为元素设置背景图像。background-image属性为元素设置背景图像,而background是一个简化属性,可以在一个声明中设置所有背景样式&#xf…

使用终端工具Tabby(跳板机)连接ssh

目录 1.tabby下载2.下载安装3.安装成功3.1在应用中配置语言为中文3.2外观可以更改字体大小颜色等3.3配色方案改变外观颜色3.4快捷键,可以根据自己的习惯自定义修改3.5配置和连接(最重要的,安装完成要连接ssh可以直接到这一步) 1.t…

动态IP池在数据抓取中的应用与优势

随着互联网技术的快速发展,数据抓取(Web Scraping)已经成为获取互联网信息的重要手段。然而,在进行大规模数据抓取时,往往会遇到反爬虫机制、IP封禁等问题。动态IP池作为一种解决方案,可以有效地绕过这些障…

读取xml的内容并显示在textEdit中,导出xml文件

使用QXmlStreamReader方法读取xml文件 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QStandardItemModel> #include <QtXml> std::vector<std::map<QString, QString>> dataVector;MainWindow::MainWindow(QWi…

【fastapi】fastapi的hello world

新建这样的目录结构 main.py的代码如下 from fastapi import FastAPI from fastapi.templating import Jinja2Templatesapp FastAPI()# 初始化 Jinja2 模板引擎 templates Jinja2Templates(directory"templates")app.get("/") async def home():contex…

数据结构(邓俊辉)学习笔记】串 06——KMP算法:构造next[]表

文章目录 1. 递推2. 算法3. 实现 1. 递推 接下来的这节&#xff0c;我们就来讨论 next 查询表的构造算法。我们将会看到非常有意思是&#xff0c; next 表的构造过程与 KMP 主算法的流程在本质上是完全一样的。 在这里&#xff0c;我们不妨采用递推策略。我们只需回答这样一个…

ue Rotate to face BB entry转向不对

可能原因&#xff1a; 角色模型没有到正向。 错误&#xff1a; 正确&#xff1a;

书生大模型实战营闯关记录----第十一关:LMDeploy 量化部署进阶实践 KV cache量化部署,W4A16 模型量化和部署

文章目录 1 配置LMDeploy环境1.1 环境搭建1.2 InternStudio环境获取模型1.3 LMDeploy验证启动模型文件 2 LMDeploy与InternLM2.5 2.1 LMDeploy API部署InternLM2.52.1.1 启动API服务器 2.1.2 以命令行形式连接API服务器 2.1.3 以Gradio**网页形式连接API服务器** 2.2 LMDeploy…