LOG滤波器原理探究---计算机视觉和特征检测

news2024/11/20 1:42:40

先来看几个滤波器公式:

高斯滤波器:

G ( x , y ; σ ) = 1 2 π σ 2 e − x 2 + y 2 2 σ 2 G(x,y;\sigma) = \frac{1}{2 \pi \sigma^2} e^{-\frac{x^2 + y^2}{2\sigma^2}} G(x,y;σ)=2πσ21e2σ2x2+y2

图像的二阶导数:

∇ 2 f = ∂ 2 f ∂ x 2 + ∂ f ∂ y 2 \nabla^2 f = \frac{\partial ^ 2 f}{\partial x^2} + \frac{\partial ^ f}{\partial y^2} 2f=x22f+y2f

LOG滤波器:
∇ 2 G ( x , y ; σ ) = ( x 2 + y 2 σ 4 − 2 σ 2 ) G ( x , y ; σ ) \nabla^2 G(x,y;\sigma) = (\frac{x^2 + y^2}{\sigma^4 }- \frac{2}{\sigma ^2}) G(x,y;\sigma) 2G(x,y;σ)=(σ4x2+y2σ22)G(x,y;σ)

计算机视觉材料中只有这几个孤零零的公式,没找到详细的说明,初次时便感到很有趣,但是不知道究竟如何利用这几个公式,以便实现滤波效果,但是我进行了如下测试。

首先声明,图片的操作目标是bmp图片。关于bmp图片的格式和操作,请看我的另一个帖子:https://blog.csdn.net/m0_37567738/article/details/134639843?spm=1001.2014.3001.5501

  1. 卷积操作。这个简单,根据卷积的定义操作即可,没什么好说的。但是实际操作过程中有一个奇怪的现象是:使用高斯卷积、双线性、sobel、角点、方框等几种常见卷积核测试,如果去掉卷积核前面的比例系数,会有一定的效果,如果保留,卷积无效,就是说卷积后图片未发生变化。

  2. 基于c/c++的、上述几个滤波公式的效果测试。有个问题是,我不知道上述几个滤波公式里面的x和y是什么意思,究竟是代表像素的坐标还是像素的值。首先,如果代表的是坐标的话,那么像素值将毫无意义,这显然是不可能的;但是如果代表的是像素值,那么究竟是像素的差异值还是像素值呢?我觉得都可以,不论是差异还是像素值,该公式都可以一定程度上体现出图片的特征。如果哪位大哥看到此贴,请务必指点迷津,简单阐述一下上述DOG公式的实现原理,留下宝贵的意见。

代码如下,其中的convolution是卷积函数,默认使用高斯滤波器;bmpFeature是滤波函数,就是将像素值直接带入上面的LOG公式中,其中x代表当前像素的水平方向的一个像素值,y代表当前像素垂直方向的一个像素值。



#include "feature.h"

#include <math.h>

#include <stdio.h>

#include <Windows.h>

#define _USE_MATH_DEFINES

#define FILTER_DIMENSION 5


double g_filter[FILTER_DIMENSION][FILTER_DIMENSION] = { 1,4,6,4,1,4,6,24,16,4,6,24,36,24,6,4,6,24,16,4,1,4,6,4,1 };


int convolution(unsigned char* data, int h, int w) {
	unsigned char* newdata = new unsigned char[w * (h + FILTER_DIMENSION)];
	memset(newdata, 0, w * h);

	for (int i = 0; i < h - FILTER_DIMENSION + 1;i ++) {
		for (int j = 0; j < w - FILTER_DIMENSION + 1; j++) {
			
			int p = i * w + j;
			double t = 0;

			for (int k = 0; k < FILTER_DIMENSION; k++) {

				for (int m = 0; m < FILTER_DIMENSION; m++) {
					
					t += data[p + k * w + m] * g_filter[k][m];
				}
			}
			newdata[p] = t/256;
		}
	}

	memcpy(data, newdata, w * h);

	delete[]newdata;

	return 0;
}



int bmpFeature(unsigned char * data,int h,int w) {
	char* newdata = new char[w * h];
	memset(newdata, 0, w * h);

	double pi = acos(-1);

	for (int i = 0; i < h; i++) {
		for (int j = 0; j < w; j++) {
			int x = i * w + j;
			int y = x + w;
			if (y >= h*w) {
				y = x;
			}

			double t1 = ( (data[x]) ^ 2 + (data[y]) ^ 2);
			double c1 =  (t1-2)* exp(-t1/2)/(2*pi);

			y = x + 1;
			if (x % w == 0) {
				//y = x;
			}
			double t2 = ((data[x]) ^ 2 + (data[y]) ^ 2);
			double c2 = (t2 - 2) * exp(-t2 / 2) / (2 * pi);

			//newdata[x] =  256 - (c1 + c2)/2;

			//newdata[x] = 256 - c1;

			newdata[x] = 256 - ( c2) ;
		}
	}

	memcpy(data, newdata, w * h);

	delete []newdata;

	return 0;
}

原始图片:

在这里插入图片描述

测试效果图:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1351511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

案例086:基于微信小程序的影院选座系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

CTF流量分析经典例题详解

目录 入门题型 题目&#xff1a;Cephalopod(图片提取) 题目&#xff1a;特殊后门(icmp协议信息传输) 题目&#xff1a;手机热点(蓝牙传输协议obex,数据提取) 题目&#xff1a;想蹭网先解开密码(无线密码破解) 进阶题型 题目&#xff1a;抓到一只苍蝇(数据包筛选,数据提…

JAVAEE初阶相关内容第二十弹--HTTP协议

写在前&#xff1a;2024年啦&#xff01;新的一年要努力学习啦 本篇博客围绕HTTP协议&#xff0c;对HTTP协议进行了解&#xff0c;需要理解其工作过程&#xff0c;对HTTP协议格式要清楚&#xff0c;通过抓包工具进行协议分析&#xff0c;认识“方法”、“请求报头”&#xff0c…

什么是安全信息和事件管理(SIEM),有什么用处

安全信息和事件管理&#xff08;SIEM&#xff09;对于企业主动识别、管理和消除安全威胁至关重要。SIEM 解决方案采用事件关联、AI 驱动的异常检测以及机器学习驱动的用户和实体行为分析 &#xff08;UEBA&#xff09; 等机制来检测、审查和应对网络安全威胁。这些功能使 SIEM …

OpenCV图像处理——C++实现亚像素尺寸标定板边缘轮廓提取

前言 标定模板&#xff08;Calibration Target&#xff09;在机器视觉、图像测量、摄影测量以及三维重建等应用中起着重要的作用。它被用于校正相机的畸变&#xff0c;确定物理尺寸和像素之间的换算关系&#xff0c;并建立相机成像的几何模型。通过使用相机拍摄带有固定间距图…

基于simiulink的flyback反激型电路建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 Flyback反激型电路的基本原理 4.2 Flyback反激型电路的数学建模 4.3 Flyback反激型电路的仿真方法 5.完整工程文件 1.课题概述 flyback反激型电路建模与仿真。反激变换器在开关管导通时电源将电能…

IDEA2023 最新版详细图文安装教程(安装+运行测试+汉化+背景图设置)

IDEA2023 最新版详细图文安装教程 名人说&#xff1a;工欲善其事&#xff0c;必先利其器。——《论语》 作者&#xff1a;Code_流苏(CSDN) o(‐&#xff3e;▽&#xff3e;‐)o很高兴你打开了这篇博客&#xff0c;跟着教程去一步步尝试安装吧。 目录 IDEA2023 最新版详细图文安…

LiveGBS流媒体平台GB/T28181常见问题-如何配置快照目录快照存储默认目录目录如何配置

LiveGBS流媒体平台GB/T28181常见问题-如何配置快照目录快照存储默认目录目录如何配置 1、快照目录2、指定快照目录3、搭建GB28181视频直播平台 1、快照目录 部署LiveGBS后&#xff0c; 再查看通道播放后 或是 获取通道快照后&#xff0c;就会在LiveSMS部署的服务器里面存储对应…

大文件断点下载Range下载zip包显示文件损坏

问题&#xff1a;大文件下载&#xff0c;其它格式的文件及rar格式的压缩包正常下载但是 之后zip包下载后解压失败 原因分析: 1. 查看上传文件的属性值 如图&#xff0c;10.4kb是已经约去小数点的值&#xff0c;准确的大小应该是10663字节10.4130859375KB&#xff0c;所以用10.…

C#使用纯OpenCvSharp部署yolov8-pose姿态识别

【源码地址】 github地址&#xff1a;https://github.com/ultralytics/ultralytics 【算法介绍】 Yolov8-Pose算法是一种基于深度神经网络的目标检测算法&#xff0c;用于对人体姿势进行准确检测。该算法在Yolov8的基础上引入了姿势估计模块&#xff0c;通过联合检测和姿势…

解决Android Studio The path ‘X:\XXX‘ does not belong to a directory.

目录 前言 一、问题描述 二、解决方法 前言 在移动应用开发领域&#xff0c;Android Studio作为一款功能强大的集成开发环境&#xff0c;为开发人员提供了丰富的工具和功能。然而&#xff0c;在使用Android Studio的过程中&#xff0c;有时也会遇到各种各样的问题和错误。 &…

彻底理解前端安全面试题(2)—— CSRF 攻击,跨站请求伪造攻击详解,建议收藏(含源码)

前言 前端关于网络安全看似高深莫测&#xff0c;其实来来回回就那么点东西&#xff0c;我总结一下就是 3 1 4&#xff0c;3个用字母描述的【分别是 XSS、CSRF、CORS】 一个中间人攻击。当然 CORS 同源策略是为了防止攻击的安全策略&#xff0c;其他的都是网络攻击。除了这…

以 RoCE+软件定义存储同时实现信创转型与架构升级

目前&#xff0c;不少企业数据中心使用 FC 交换机和集中式 SAN 存储&#xff08;以下简称“FC-SAN 架构”&#xff09;&#xff0c;支持核心业务系统、数据库、AI/ML 等高性能业务场景。而在开展 IT 基础架构信创转型时&#xff0c;很多用户受限于国外交换机&#xff1a;FC 交换…

2015年AMC8数学竞赛中英文真题典型考题、考点分析和答案解析

今天我们来看2015年的AMC8竞赛真题的典型考题和解析&#xff0c;最后利用碎片化时间冲刺&#xff0c;查漏补缺&#xff0c;理解考试。温馨提示&#xff1a;2024年AMC8比赛现在还可以报名&#xff0c;自由报名截止到1月7日&#xff0c;我这里有官方自由报名通道。 2015年AMC8数学…

对基于深度神经网络的Auto Encoder用于异常检测的一些思考

一、前言 现实中&#xff0c;大部分数据都是无标签的&#xff0c;人和动物多数情况下都是通过无监督学习获取概念&#xff0c;故而无监督学习拥有广阔的业务场景。举几个场景&#xff1a;网络流量是正常流量还是攻击流量、视频中的人的行为是否正常、运维中服务器状态是否异常…

Django Web框架

1、创建PyCharm项目 2、安装框架 pip install django4.2.0 3、查看安装的包列表 4、使用命令创建django项目 django-admin startproject web 5、目录结构 6、运行 cd web python manage.py runserver7、初始化后台登录的用户名密码 执行数据库迁移生成数据表 python man…

自定义指令:让 Vue 开发更有趣(中)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

一年中ChatGPT使用情况

介绍 本人是独立开源软件开发者&#xff0c;参与很多项目建设&#xff0c;谈下日常使用情况。 我用了一年多&#xff0c;现在已经离不开&#xff0c;我如指挥家&#xff0c;它是我最忠诚的乐手。 编码 GitHub Copilot&#xff1a;GitHub Copilot是GitHub和OpenAI合作开发的一…

unity C# 中通俗易懂LINQ使用案例

文章目录 1. 从数组或列表中查询元素**&#xff1a;2. **排序与分组**&#xff1a;3. **连接多个数据源**&#xff1a;4. **聚合操作**&#xff1a;5. **分页查询**&#xff1a;6. **多条件查询**&#xff1a;7. **转换和投影&#xff08;Select&#xff09;**&#xff1a;8. *…

[C#]使用onnxruntime部署Detic检测2万1千种类别的物体

【源码地址】 github地址&#xff1a;https://github.com/facebookresearch/Detic/tree/main 【算法介绍】 Detic论文&#xff1a;https://arxiv.org/abs/2201.02605v3 项目源码&#xff1a;https://github.com/facebookresearch/Detic 在Detic论文中&#xff0c;Detic提到…