16-自定义线型滤波

关于suzuki 轮廓跟踪算法 关于suzuki 轮廓跟踪算法 算定义了几个概念: 连通区域,由相同像素点组成的区域,,如果自称区域的点为1,则称之为1-部件,否则为0-部件。 点(i,j)的邻域是指: 其中左侧的为点的4-邻域,用于连通域的路径搜索。右侧的为8-邻域,用于边缘跟踪。 边缘点序号NBD,标识边缘点。 边缘序号LNBD,标识边缘的从属关系。 边缘类型,表示一个边缘的类型属性,外边缘和孔边缘(outer/hole)。 图像帧(Frame),图像的最外边界所形成的连通域,即图像的背... 阅读详情

自定义线性滤波

1、卷积概念;
2、常见算子;
3、自定义卷积模糊;
4、代码演示;

卷积

1、图像卷积操作可以模糊图像, 降低一幅图像的噪声(降噪);
2、卷积是图像处理中的一个操作,是kernel(卷积核)在图像的每个像素上的操作,Kernel本质上是一个固定大小的矩阵数组,其中心点称为锚点(anchor point);
在这里插入图片描述3、卷积计算方法:卷积核与图像矩阵依次相乘,取平均值作为锚点覆盖下像素点的像素值;从左到右,从上到下,依次做卷积,完成对整幅图像的卷积操作;

在这里插入图片描述在这里插入图片描述4、卷积的三个作用:①模糊图像;②提取边缘;③图像增显(锐化)

常见卷积算子(常见卷积核)

Robert算子:2*2算子

在这里插入图片描述

Sobel算子:边缘检测中常用

在这里插入图片描述

拉普拉斯算子:边缘检测中常用

在这里插入图片描述

自定义卷积模糊

-1 默认与原图一样,卷积核一般奇数

Code

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
	Mat src, dst;
	
	
	src = imread("C:\\Users\\hello\\Desktop\\1.jpg");
	if (!src.data)
	{
		cout << "could not load the image..." << endl;
		return -1;
	}
	namedWindow("input image", CV_WINDOW_AUTOSIZE);
	imshow("input image", src);
	char OUTPUT_WIN[] = "Robert X";
	namedWindow(OUTPUT_WIN, CV_WINDOW_AUTOSIZE);

	//X方向 Robert算子
	Mat robert_x = (Mat_<int>(2, 2) << 1, 0, 0, -1);  //一个2 * 2的矩阵
	filter2D(src, dst, -1, robert_x, Point(-1, -1));
	imshow(OUTPUT_WIN, dst);
	//Y方向 Robert算子
	Mat ying;
	Mat robert_y = (Mat_<int>(2, 2) << 0, 1, -1, 0);  //一个2 * 2的矩阵
	filter2D(src, ying, -1, robert_y, Point(-1, -1));
	imshow("Robert Y", ying);

	//Sobel算子
	Mat sx, sy;
	Mat Sobel_X = (Mat_<int>(3, 3) << -1, 0, 1, -2, 0, 2, -1, 0, 1); //1个3 * 3 矩阵 体现X方向差异
	Mat Sobel_Y = (Mat_<int>(3, 3) << -1, -2, -1, 0, 0, 0, 1, 2, 1); //1个3 * 3 矩阵 体现Y方向差异
	filter2D(src, sx, -1, Sobel_X, Point(-1, -1));
	filter2D(src, sy, -1, Sobel_Y);
	imshow("sobel x", sx);
	imshow("sobel y", sy);

	//Laplace算子:边缘检测算子,可以得到图像的整个差异  4个0的laplace算子,还有其他的
	//获取轮廓后还可以进一步处理得到更清晰的图像;
	Mat kernel_l = (Mat_<int>(3, 3) << 0, -1, 0, -1, 4, -1, 0, -1, 0);
	Mat ml;
	filter2D(src, ml, -1, kernel_l, Point(-1, -1));
	imshow("laplace image", ml);

	//自定义卷积核
	int c = 0;
	int index = 0;
	int ksize = 3;
	Mat dd;
	while (true)
	{
		c = waitKey(500); //每隔500ms模糊一次;
		if ((char)c == 27) //ESC
		{
			break;
		}
		ksize = 4 + (index % 8) * 2 + 1 ;
		Mat kernel = Mat::ones(Size(ksize, ksize), CV_32F) / (float)(ksize * ksize); //得到一个ksize 
		filter2D(src, dd, -1, kernel, Point(-1, -1));
		index++;
		imshow("Custom Blur Filter Result", dd);
	}
	waitKey(0);
	return 0;
}

Consequence

效果图:
在这里插入图片描述

学习Qt_OpenCV线型滤波种类、特点、适用范围及OpenCV实现 参考教程:https://blog.youkuaiyun.com/qingyang8513/article/details/80413320 线型滤波 图像平滑处理又称为图像模糊,主要是用来减少图像上的噪声点或者失真。 图像滤波是在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可或缺的操作,其处理效果的好坏将直接影响后续图像处理和分析的效率。 图像滤波分... 阅读详情

相关推荐

线性滤波+非线性滤波

方框滤波 函数原型 void boxFilter(InputArray src, OutputArray dst, int ddepth, Size ksize, Point anchor = Point(-1,-1), boolnormalize = true, int borderType = BORDER_DEFAULT) 第一个参数,inputArray类型的src源图像,输入图像M...

尘归风的博客 954

自定义线性滤波

自定义线性滤波 线性滤波器:将小滑块与图像做卷积,小滑块就是所谓的核,它是一个固定大小的数值数组。在该数组中有一个锚点,一般位于数组中央。 如何将核与图像做卷积? 将核的锚点放在特定的像素上,同时核内其他值与该像素邻域的各像素重合。 将核内各值与对应的图像像素值相乘,然后相加,再将得到的结果放在与锚点对应的像素上。 对图像中的所有像素都进行以上的操作。 下面来看一下,对与三阶的手动实现: Mat ...

qq_25105061的博客 283

支持线型相机的XG-8000L单机式视觉系统详解

支持非固定场景下的灵活检测;- 减少人工巡检频率;- 实现移动式质量控制闭环。通过上述章节内容的深入解析,我们全面展示了单机式视觉系统在制造业中的技术优势、实际应用、操作流程与灵活部署方案。该系统不仅在成本与响应速度上优于分布式系统,而且通过模块化设计与智能化配置,具备了在多种复杂场景中稳定运行的能力,为工业自动化检测提供了强有力的技术支撑。

weixin_35949153的博客 663

openCV学习7-自定义线性滤波+处理边缘

1.自定义线性滤波·拉普拉斯算子和掩膜的算子很像,一个中间是4,一个中间是5.但是结果会差很多。#include &lt;opencv2\core\core.hpp&gt; #include &lt;opencv2\highgui\highgui.hpp&gt; #include &lt;opencv2\imgproc\imgproc.hpp&gt; #include &lt;open...

智熄 750

matlab自定义函数(滤波器部分)

matlab自定义函数(滤波器部分),dsp运用到的函数,,AFD_BUTT.M,AFD_CHB1.M,AFD_CHB2.M,AFD_ELIP.M,BLACKMAN.M,CAS2DIR.M,CASFILTR.M等等

(一)OpenCV图像处理基础_15_自定义线性滤波

卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作。 Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor point) 卷积过程:(模糊图像、提取边缘、图像锐化…) 把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理。 常见算子(卷积核)(取边缘) Robert算子(22,锚点在+1处) Sobel算子(33,锚点为0,和为0) Laplacian算子(3*3,锚点为1,和为0) 自定义卷积模糊 ilter2D方法filter2D( Mat src, //输入图像 Mat dst, // 模糊图像

OpenCV学习14——自定义线性滤波

以下内容参考先前图像模糊处理章节: https://blog.youkuaiyun.com/weixin_43534296/article/details/87701604 数字图像处理中卷积的概念明细: 首先我们先来明确一个重要数学概念——卷积。 在数字图像处理中存在着一个基本的处理方法——即线性滤波,线性滤波的基本原理就是通过一个滤波器小矩阵对原图像的大矩阵进行像素变换,而这个小矩阵我们就称作矩阵核。...

weixin_43534296的博客 455

SAP数据导入避坑指南:财务期初上线实操全流程(含常见错误排查)

本文详细解析了SAP财务期初数据导入的全流程,包括数据准备、主数据标准化、余额与未清项导入等关键步骤,并提供了常见错误排查和解决方案。特别强调了过渡科目和存货价值的处理技巧,帮助企业在SAP系统上线时避免数据导入陷阱,确保财务数据的准确性和系统平稳运行。

weixin_30832143的博客 396

opencv学习十六---自定义线性滤波

卷积 应用:主要用于模糊图像(降噪),提取边缘,增强图像 卷积是图像处理中的一个操作,是kernel在图像的每个像素上的操作 kernel本质上是一个固定大小的矩阵数组,其中心点成为锚点(anchor point) 卷积算子(掩模) API 用小矩阵定义一个Mat对象 Mat kernel =(Mat<type>(row,column)<< , , , , , , )...

weixin_42638401的博客 316

立创开源4G+GPS定位系统:基于微信小程序的低成本低功耗追踪方案

本文介绍了一个基于立创开源平台的超小型4G+GPS定位系统方案。该方案采用28mm*28mm主板,集成4G Cat.1通信与GPS定位,通过微信小程序“点灯专家”实现远程追踪管理,具备低成本、低功耗、易于部署的特点,适用于电动车、宠物、资产追踪等多种场景。

weixin_28895791的博客 393

linux离线安装nginx

linux离线安装nginx

zhang_130914036的博客 9346

【Qt_OpenCV基础篇 - 003】线型滤波种类、特点、适用范围及OpenCV实现

一、开发环境1、Windows 7 64位 SP1 旗舰版;2、Qt 5.10.1;3、OpenCV 3.4.1二、线型滤波三、OpenCV实现四、示例设计与测试

Qingyang8513的专栏 1642

MAX3232芯片引脚功能详解与外围电路设计避坑指南(从电荷泵到静电防护)

本文详细解析了MAX3232芯片的引脚功能与外围电路设计,重点介绍了其电荷泵架构和RS232通信接口的应用。通过实际案例和参数对比,提供了电路设计中的常见问题解决方案和静电防护建议,帮助工程师优化工业控制与嵌入式系统中的通信可靠性。

weixin_30596165的博客 432

学习Qt_OpenCV非线型滤波种类、特点、适用范围及OpenCV实现

参考教程:https://blog.youkuaiyun.com/qingyang8513/article/details/80413373 非线型滤波 线型滤波易于构造,易于从频率响应角度分析,但是,很多情况下,如果脉冲噪声、椒盐噪声明显时,或者需要较好的保存边缘时,线型滤波往往无法达到需要的效果,此时就需要用到非线性滤波。 常见的非线性滤波有:中值滤波、双边滤波。 中值滤波基...

误入歧途渐行渐远 328

【RTOS】 Vxworks 653 第一章 —— 初识 vx653 3.x

。。不是很重要,自己搜吧鲁棒分区是一种确保共享计算资源中独立运行功能实现​​时空隔离​​的机制,其目标是为集成模块中的混合临界性应用提供与联邦式部署(federated implementation)同等级别的功能隔离保障。具体表现为:​​多关键性共存​​:支持不同安全等级应用(如飞控系统A级与娱乐系统D级)在同一模块中协同运行。​​抗干扰能力​​:防止未授权或意外的时空干扰(如内存越界、时间窗口冲突),确保应用间互不影响。​​。

qq_38183694的博客 1280

国产系统迁移实战:在银河麒麟V10上搞定Wine32位支持,让老Windows软件跑起来

本文详细介绍了在银河麒麟V10操作系统上构建Wine32位支持的全过程,帮助用户解决Windows应用迁移难题。从系统架构差异分析到Wine环境配置,再到实战应用部署与优化,提供了一套完整的解决方案,确保老Windows软件在国产系统上稳定运行。

weixin_32288959的博客 648

【opencv学习笔记】009之图像线性滤波原理与操作(方框滤波、均值滤波、高斯滤波)

目录 一、前言 二、图像滤波 1、图像滤波 2、线性滤波器 三、OpenCV中的线型滤波操作 1、方框滤波——boxblur函数 2、均值滤波——blur函数 3、高斯滤波——GaussianBlur函数 一、前言 今天要讲的是图像线性滤波原理与操作,图像滤波包括线性滤波与非线性滤波,今天我们要讲的是线性滤波,包括方框滤波、均值滤波与高斯滤波。 如果想看其他有关于OpenCV...

水亦心的博客 2986

Pyinstaller打包为可执行文件编码错误的问题

Pyinstaller打包为可执行文件编码错误的问题 写好的python程序在vscode上运行没有任何问题,将程序利用pyinstaller打包后,运行程序发生了错误。 错误代码 UnicodeDecodeError: ‘utf-8' codec can't decode byte 0xce in position 20-21:invalid cotinuation byte 网上找到的解决方案是: 1.在命令行中输入 chcp 65001 2.按正常方式进行封装 pyinstaller

xuefeng_he的博客 1559

【opencv学习笔记】010之图像非线性滤波原理与操作(中值滤波、双边滤波)

一、前言 着实好久没有写博客了,回来填坑,不过opencv4已经出来很久了,我的教程还在3徘徊。作为基础完全够用了,先把基础的坑填完吧,确实是很纠结自己的研究方向,不知道,还是多学吧,想太多,不如好好学。 如果想看其他有关于OpenCV学习方法介绍、学习教程、代码实战、常见报错及解决方案等相关内容,可以直接看我的OpenCV分类: 【OpenCV系列】:https://blog.csdn....

水亦心的博客 2041

Android Treble 简介

上面两段话来自官网上,Android 8.0 重新设计了 Android 操作系统框架(在一个名为“Treble”的项目中),以便让制造商能够以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。本文主要整理一下Android Treble框架。

私房菜 9272

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【OpenCV 4开发详解】可分离滤波

本文首发于“小白学视觉”微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。 前面介绍的滤波函数使用的滤波器都是固定形式的滤波器,有时我们...

小白学视觉 1583

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【Qt_OpenCV基础篇 - 004】非线型滤波种类、特点、适用范围及OpenCV实现

一、开发环境1、Windows 7 64位 SP1 旗舰版;2、Qt 5.10.1;3、OpenCV 3.4.1二、非线型滤波三、非线型滤波与线型滤波对比四、OpenCV实现五、示例设计与测试

Qingyang8513的专栏 817

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python中16mod7_MODIS系列之NDVI(MOD13Q1)七:时间序列S-G滤波之Python

时间序列S-G滤波之Python根据上上篇博文(MODIS系列之NDVI(MOD13Q1)五:NDVI处理流程)做出的NDVI。我们求NDVI时间序列图,但该NDVI时序图为地表各土地类型综合的NDVI时序图。(详情同样参考该系列五博文的文底)建议:大家应该也能发现从网上粘贴的代码,大部分在各自实际运行中会出现报错,不能运行。这其中有代码本身的错误,但也不乏运行环境的欠缺、误操作、电脑自身特点等原...

weixin_39839726的博客 1714

【电路】基于matlab半导体中非抛物线型一维薛定谔求解器【含Matlab源码 10950期】

半导体中非抛物线型一维薛定谔求解器 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 1049

【电路】半导体中非抛物线型一维薛定谔求解器【含Matlab源码 10950期】

半导体中非抛物线型一维薛定谔求解器 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版)或下载付费资源,可赠送奶茶价版付费专栏指定代码1份; 793
上一篇: OpenCV—基本矩阵操作与示例
下一篇: 17-边缘处理
hellohake
博客等级 码龄10年 4543粉丝 108原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值