【opencv学习之二十四】OpenCV滤波处理对比

2023-11-02

OpenCV的邻域滤波处理函数主要都通图像的卷积操作,有

1方框滤波boxFilter(),属于线性滤波,其原理是用一个矩阵和一个核矩阵卷积操作;

2均值滤波blur(),也属于线性滤波,是方框滤波一种归一化后的方框滤波;

3高斯滤波GaussianBlur(),属于线性滤波,其原理类似均值滤波,但是滤波经过加权处理,加权值符合正态分布,处理效果比均值更好一些;

4中值滤波medianBlur(),属于非线性滤波,会考虑区域范围内极端值的情况,然后再通过算法滤波;以下为摘自别的博客:中值滤波选择每个邻域像素的中值输出;指去掉百分率为a的最小值和最大值;定义域滤波中沿着边界的数字是像素的距离;值域就是去掉值域外的像素值。

5双边滤波bilateraFilter(),双边滤波的思想是抑制与中心像素值差别太大的像素,输出像素值依赖于邻域像素值的加权合;

滤波通俗来讲主要目的是为了消除图像上的干扰杂质,或者说去除小点;上面几种滤波的原理和算法可以参考小魏的博客:http://blog.csdn.net/xiaowei_cqu/article/details/7785365;深入了解;

滤波代码示例:

void imgSmoothing()//滤波操作
{
    Mat srcImg = imread("D:/ImageTest/0tu5px.JPG");
    Mat dstImg1,dstImg2,dstImg3,dstImg4,dstImg5 ;
    cv::cvtColor(srcImg,srcImg,COLOR_RGB2GRAY);//进行,灰度处理
    Size size0 = Size(5, 5);
    boxFilter(srcImg, dstImg1, -1, Size(3, 3), Point(-1, -1), true);  //方框滤波器 bool normalize参数设置为true时等同于均值滤波
    blur(srcImg, dstImg2, size0);  //均值滤波
    GaussianBlur(srcImg, dstImg3, Size(3, 3), 1);//高斯滤波
    medianBlur(srcImg, dstImg4, 5);//中值滤波
    bilateralFilter(srcImg, dstImg5, 5, 10.0, 2.0);//双边滤波
    threshold(dstImg1,dstImg1, 127, 255, THRESH_BINARY);
    threshold(dstImg2,dstImg2, 127, 255, THRESH_BINARY);
    threshold(dstImg3,dstImg3, 127, 255, THRESH_BINARY);
    threshold(dstImg4,dstImg4, 127, 255, THRESH_BINARY);
    threshold(dstImg5,dstImg5, 127, 255, THRESH_BINARY);
    imshow("src", srcImg);
    imshow("boxFilter dst", dstImg1);
    //    imwrite("D:/boxFilter.jpg", dstImg1); //保存结果图片
    imshow("blur dst", dstImg2);
    //     imwrite("D:/blur.jpg", dstImg2); //保存结果图片
    imshow("GaussianBlur dst", dstImg3);
    imshow("medianBlur dst", dstImg4);
    imshow(" bilateralFilter dst", dstImg5);
    waitKey(0);
}
实验结果:



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【opencv学习之二十四】OpenCV滤波处理对比 的相关文章

  • 如何在 CMake Makefile 中包含 OpenCV 库

    我希望你可以帮助我 我有一个简单的 CMakeLists txt 以便在 Leopard 10 5 8 上构建我的项目 我正在使用 CMake 2 8 1 目前这是代码 cmake minimum required VERSION 2 8
  • 如何使用 OpenCV 从图像中获取调色板 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想提取图像的调色板 类似于此 来自 我需要它来提取特定的颜色 如黄色 绿色和棕色 并显示该颜色覆盖的区域的百分比 另外 我可以添加更
  • 如何使用 SimpleBlobDetector 获取 blob 的额外信息?

    robot sherrick 回答了我这个问题 https stackoverflow com a 13534094 1705967 这是他回答的后续问题 cv SimpleBlobDetectorOpencv 2 4 中的 看起来非常令人
  • 如何获得垂直线穿过的完整内轴线?

    我有一个图像 我想获取穿过其中轴的像素 我尝试使用骨架化 and 中轴方法来获取它们 但这两种方法都返回比相应对象短的一维线 这是带有示例图像的代码 gt gt gt import skimage filter gt gt gt impor
  • 如何将 opencv mat 图像转换为 gdi 位图

    我想将 openCV Mat 文件转换为 GDI 位图图像 我找不到任何有关如何执行此操作的信息 我认为没有直接的方法可以做到这一点 但我希望它不涉及将其写入文件并读回 http opencv users 1802565 n2 nabble
  • 如何在 opencv 3.0 Beta 中从文件读取 UMat?

    我想用UMat所以我的代码可以使用 OpenCL OpenCV 3 0 0 Beta 在 GPU 和 CPU 上运行 但我找不到将图像文件读入的方法UMat或转换一个Mat to UMat 如何将图像读入UMat 样品用于Mat to UM
  • 使用 SURF 在检测到的对象周围绘制矩形

    我正在尝试从涉及冲浪检测器的以下代码中检测对象 我不想绘制匹配项 我想在检测到的对象周围绘制一个矩形 但不知何故我无法获得正确的单应性 请任何人指出在哪里我走错了 include
  • Android API人脸检测与OpenCV/JavaCV人脸检测

    我在 Android 设备上使用了本地 Android 人脸检测 但它似乎很慢 而且我不太确定其可靠性 我还使用了 OpenCV 的人脸检测 但仅限于 PC 而不是 Android 设备 对于 Android 我猜我必须使用 JavaCV
  • 在 Python 中使用音频流 RTMP 通过管道和 OpenCV 到 FFmpeg

    我正在尝试使用音频流式传输 FFmpeg 我将在下面展示我的代码 导入模块 import subprocess as sp 创建变量 rtmpUrl rtmp a rtmp youtube com live2 key camera path
  • 类型错误:只有长度为 1 的数组可以转换为 Python 标量

    我是 openCV 的初学者 正在尝试分析数独求解器的现有代码 有这一段代码会引发错误 samples np float32 np loadtxt feature vector pixels data responses np float3
  • 如何识别与我的对象相关的轮廓并找到它们的几何质心

    问题陈述和背景信息 EDIT 约束 法兰上的红色会随着时间的推移而变化 所以我此时不会尝试使用颜色识别来识别我的对象 除非它足够强大 此外 外部照明也可能是一个因素 因为将来这将是在室外区域 我有 RGB 深度相机 有了它 我就能捕捉到这个
  • OpenCV:将垫子除以标量的最简单方法是什么

    我认为标题中已经包含了很多内容 显然我可以迭代和划分 但我认为有一种内置的方法 我看见cvConvertScale但这不适用于类型cv Mat 我知道标量乘法的缩放运算 cv Mat M float alpha cv Mat Result
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 如何绘制每个分割对象的轮廓

    我应用分水岭分割来检测触摸对象 这样做效果很好 现在 我想绘制每个对象的轮廓 这样我就可以获得它们的长度 面积 矩等 但是分割结果中的对象仍然是触摸的 所以 我没能画出每一个的轮廓 如何绘制每个对象的轮廓 include
  • OpenCv 与 Android studio 1.3+ 使用新的 gradle - 未定义的参考

    我在使用原生 OpenCv 2 4 11 3 0 0 也可以 和 Android Studio 1 3 以及新的 ndk 支持时遇到问题 所有关于 mk 文件的教程 但我想将它与新的实验性 gradle 一起使用 使用 Kiran 答案An
  • 寻找两个框架之间的变换

    我有来自视频源的两个连续帧 并且我使用 FAST 算法检测这两个帧的关键点 我使用平方差之和法 SSD 来匹配关键点 所以基本上我已经匹配了两个框架之间的关键点 现在我想根据匹配的关键点集计算两个帧之间的仿射变换 缩放 旋转 平移 我知道如
  • 在 HSV 颜色空间内定义组织学图像掩模的颜色范围(Python、OpenCV、图像分析):

    为了根据颜色将组织学切片分成多个层 我修改了 OpenCV 社区提供的一些广泛分布的代码 1 我们的染色程序用不同的颜色标记组织横截面的不同细胞类型 B 细胞为红色 巨噬细胞为棕色 背景细胞核为蓝色 I m interested in se
  • 线程“main”java.lang.UnsatisfiedLinkError中出现异常:java.library.path中没有opencv_java249

    我目前正在尝试在我的 32 位笔记本电脑上设置 OpenCV 但我不断收到一条令我困惑的错误消息 Exception in thread main java lang UnsatisfiedLinkError no opencv java2
  • OpenCV OpenNI 校准kinect

    我使用 home 通过 kinect 进行捕捉 capture retrieve depthMap CV CAP OPENNI DEPTH MAP capture retrieve bgrImage CV CAP OPENNI BGR IM

随机推荐

  • SpringSecurity学习笔记

    SpringSecutity学习笔记 一 环境搭建 1 搭建一个Springboot工程 1 引入相关依赖
  • Windows mysql默认字符集修改

    一 通过MySQL命令行修改 set character set client utf8 set character set connection utf8 set character set database utf8 set chara
  • Python3,数据处理与计算,不得不掌握的高效计算函数之prod()函数,

    TOC 1 引言 小屌丝 鱼哥 你知道 prod 函数吗 小鱼 你这问的 是要打我脸吗 小屌丝 那我该怎么问呢 小鱼 你应该这要问 鱼哥 你能给我讲一讲 prod 函数吗 小屌丝 鱼哥 这话 我说不出口 小鱼 为啥 为啥 为啥子 小屌丝 因
  • java中Choice下拉列表怎么输入啊?

    小弟初学java 用Choice做了个下拉列表 当点击图中向下的箭头时 能选择出现的备选number 但是不能自己输入number 请问各位牛人 这个Choice new出来的下拉列表能不能输入啊 若能怎么输呢 谢谢各位了
  • OpenAI 何以掀翻 Google 布局多年的AI大棋?

    来源 飞哥说AI 作者 高佳 创意 李志飞 任何大卫击败歌利亚的故事 都值得我们重新思考 2023年从一场巨头之间的巨额合作开始 一场汹涌已久的AI暗战摆上了台面 随着微软和 OpenAI 融资的推进 双方在关系变得更加深厚复杂的同时 也在
  • 动画-Animation/@keyframes

    动画的使用流程有两步 分为定义动画和使用动画 定义动画相当于制作动画 有两种制作方法 一个是 from to 另一个是百分比 制作完动画之后 再在需要的地方通过 animation 来使用制作好的动画效果 1 定义动画 from to ke
  • (三)elasticSearch和MySQL的对比

    ElasticSearch和MySQL的对比 一 ES和MySQL的概念的比较 二 ES和MySQL使用场景的比较 1 MySQL更擅长的是事务类型的操作 可以确保数据的安全和一致性 如果是有事务要求 如商品的下单支付等业务操作 无疑使用M
  • Flink中的时间和窗口

    1 时间语义 在流式数据处理的过程中 有两个非常重要的时间点 一个是数据产生的时间 我们把它叫作 事件时间 Event Time 另一个是数据真正被处理的时刻 叫作 处理时间 Processing Time 我们所定义的窗口操作 到底是以那
  • 六一儿童节礼物(Python中turtle实现)

    目录 六一儿童节快乐 Python代码实现 好玩的海龟turtle 送给小朋友的节日小故事 六一儿童节快乐 一颗闪闪发光 五彩斑斓的儿童星星奉上 Python代码实现 好玩的海龟turtle import turtle as t impor
  • 阿里云推出基于大模型的工作学习AI助手“通义听悟”

    文章目录 人工智能福利文章 什么是通义听语 通义听语有哪些优势 通义听语能做什么 体验地址 写在最后 创作者 全栈弄潮儿 个人主页 全栈弄潮儿的个人主页 个人社区 欢迎你的加入 全栈弄潮儿的个人社区 专栏地址 AI大模型 人工智能福利文章
  • git stash 用法小结

    场景 有一天你正兴高采烈地coding 突然现网出现一个bug让你紧急修复 但是你本地已经有了修改 你又不想提交 也总不能全部回退吧 所以你正发愁怎么办的时候恰好看到了这篇文章 它将帮你完美解决此场景的困扰 那么今天的主角就是 git st
  • JS的几种关键词的查找方法

    1 var i str indexOf 关键词 开始位置 在str中 从 开始位置 开始 查找下一个 关键词 的位置 返回值 下一个 关键词 的第一个字的下标位置 如果找不到就返回 1 如果省略第二个参数 开始位置 默认从0开始找 查找最后
  • Java语言的跨平台性

    Java语言的跨平台性 什么是跨平台性 通过Java语言编写的应用程序在不同的系统平台上都可以运行 原理是什么 只要在需要运行java应用程序的操作系统上 先安装一个Java虚拟机 JVM Java Virtual Machine 即可 由
  • java ssh 访问linux,通过java使用ssh访问远程Linux

    需要做一个监控远程Linux磁盘空间的东西 绞尽脑汁终于发现一个东西 ch ethz ssh2 它可以通过用户名和密码登录可以ssh登录的机器 并且可以执行命令 并将命令显示的东西返回来 上代码了 Java代码 Connection con
  • 用jquery插件实现漂亮的日历效果

  • python爬虫时,将时间戳转换成北京时间、标准格式

    import time timestamp items get created 时间戳 time local time localtime int timestamp 注意 这里的整数不能超过11位数 pub date time strft
  • vue点击按钮次数

    显示点击次数
  • blender常用快捷键+动效制作

    文章目录 1 技术概述 2 技术详述 2 1常用快捷键 2 2镜像循环动画效果 3 遇到的难点和解决办法 难点 解决方法 4 总结 1 技术概述 Blender是一款免费的3D计算机图形软件 可用于创建动画 视觉效果 游戏开发和建筑设计等领
  • 分布式系统之Raft算法

    介绍 Raft是一种为了管理日志复制的分布式一致性算法 Raft 出现之前 Paxos 一直是分布式一致性算法的标准 Paxos 难以理解 更难以实现 Raft 的设计目标是简化 Paxos 使得算法既容易理解 也容易实现 Paxos 和
  • 【opencv学习之二十四】OpenCV滤波处理对比

    OpenCV的邻域滤波处理函数主要都通图像的卷积操作 有 1方框滤波boxFilter 属于线性滤波 其原理是用一个矩阵和一个核矩阵卷积操作 2均值滤波blur 也属于线性滤波 是方框滤波一种归一化后的方框滤波 3高斯滤波GaussianB