OpenCV——多分辨率LBP的计算方法

目录

  • 一、算法原理
    • 1、原理概述
    • 2、参考文献
  • 二、代码实现
  • 三、结果展示

在这里插入图片描述

OpenCV——多分辨率LBP的计算方法由CSDN点云侠原创,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。

一、算法原理

1、原理概述

  基本LBP算子虽然在早期的实验中取得了一系列成果,但是应用于不同领域的具体问题时,该算子的处理结果并不能达到预期的效果。因此,很多学者对其进行了改进,并取得了显著成果。改进算子主要有多分辨率LBP、旋转不变LBP和等价LBP等。

  TimoOjala等_对基本LBP进行拓展,拓展后的多分辨率LBP不再仅仅是 3 × 3 3\times3 3×3格网,而是可以设置邻域像素数量和半径,通常用 P P P表示邻域像素个数,用 R R R表示半径,记为LBP_PR;与此同时,运用了插值的思想,将邻域窗口由方形拓展为圆形。基本LBP是邻域像素数量P=8,半径R=1.0的版本。下图描述了P和R取不同值时的情况。
在这里插入图片描述

多分辨率LBP
  从图中可以看出,只要不断改变窗口大小,即改变P和R的值,LBP就具备了多分辨率识别的特性,TimoOjala等人通过实验得出,将图像的灰度直方图和LBP特征结合可以增强分类效果。

2、参考文献

[1] 马新江. 基于多元LBP特征的车载激光点云中道路边界提取[D].山东科技大学,2019.

二、代码实现

#include<iostream>
#include<opencv2/opencv.hpp>using namespace std;// 多分辨率LBP
cv::Mat ExpandLocalBinaryPattern(cv::Mat& orignImg, int lbpRadius = 3, int maxCount = 20)
{cv::Mat grayImg;cvtColor(orignImg, grayImg, cv::COLOR_BGR2GRAY);int offset = lbpRadius * 2;cv::Mat elbpImg = cv::Mat::zeros(grayImg.rows - offset, grayImg.cols - offset, CV_8UC1);int numNeighbor = 8;for (int n = 0; n < numNeighbor; n++){float x = lbpRadius * cos((2 * CV_PI * n) / numNeighbor);float y = lbpRadius * (-sin((2 * CV_PI * n) / numNeighbor));int fx = static_cast<int>(floor(x)); // 向下取整,它返回的是小于或等于函数参数,并且与之最接近的整数int fy = static_cast<int>(floor(y));int cx = static_cast<int>(ceil(x));  // 向上取整,它返回的是大于或等于函数参数,并且与之最接近的整数int cy = static_cast<int>(ceil(y));float ty = y - fy;float tx = x = fx;float w1 = (1 - tx) * (1 - ty);float w2 = (tx) * (1 - ty);float w3 = (1 - tx) * (ty);float w4 = (tx) * (ty);for (int row = lbpRadius; row < (grayImg.rows - lbpRadius); row++){for (int col = lbpRadius; col < (grayImg.cols - lbpRadius); col++){float t = w1 * grayImg.at<uchar>(row + fy, col + fx) +w2 * grayImg.at<uchar>(row + fy, col + cx) +w3 * grayImg.at<uchar>(row + cy, col + fx) +w4 * grayImg.at<uchar>(row + cy, col + cx);elbpImg.at<uchar>(row - lbpRadius, col - lbpRadius) +=((t > grayImg.at<uchar>(row, col)) && (abs(t - grayImg.at<uchar>(row, col)) > std::numeric_limits<float>::epsilon())) << n;}}}return elbpImg;
}int main(int argc, char** argv)
{cv::Mat img = cv::imread("luna.png");//cv::Mat img;//resize(img, img, cv::Size(800, 500), 0, 0, cv::INTER_AREA);if (img.empty()){cout << "请确认图像文件名称是否正确" << endl;return -1;}imshow("img", img);// 多分辨率LBPcv::Mat lbpImg = ExpandLocalBinaryPattern(img);imshow("多分辨率LBP", lbpImg);cv::waitKey(0);return 0;}

三、结果展示

在这里插入图片描述

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

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

相关文章

Vue.js设计与实现阅读-2

Vue.js设计与实现阅读-2 1、前言2、框架设计的核心要素2、1 提升用户体验2、2 控制代码体积2、3 Tree-Shaking2、4 特性开关2、5 错误处理 1、前言 上一篇我们了解到了 命令式和声明式的区别&#xff0c;前者关注过程&#xff0c;后者关注结果了解了虚拟dom存在的意义&#x…

笔记软件内怎么查看文章字数 笔记查看字数的操作步骤

在记录生活点滴、工作要务时&#xff0c;你是否曾像我一样&#xff0c;为了知道写了多少字而犯愁&#xff1f;尤其是在需要精确控制字数时&#xff0c;那种焦虑感更是如影随形。 记得有一次&#xff0c;我为了一个项目报告苦思冥想&#xff0c;好不容易写了个初稿&#xff0c;…

Java--ListUtil工具类,实现将一个大列表,拆分成指定长度的子列表

文章目录 前言实现代码执行结果 前言 在项目中有时会出现列表很大&#xff0c;无法一次性批量操作&#xff0c;我们需要将列表分成指定大小的几个子列表&#xff0c;一份一份进行操作&#xff0c;本文提供这样的工具类实现这个需求。 实现代码 以下为代码实现&#xff1a; …

锂电池的电压和容量怎么计算?

锂电池组是由电池单体&#xff08;电芯&#xff09;通过串并联来组成 1、串联(S)增加电压&#xff0c;容量不变。 例如&#xff1a;1个磷酸铁锂电池的额定电压为3.2V&#xff0c;容量为4000mAH&#xff0c;将10个磷酸铁锂电芯串联&#xff0c;电池组电压&#xff1a;3.2v*10&a…

Spring Boot中加@Async和不加@Async有什么区别?设置核心线程数、设置最大线程数、设置队列容量是什么意思?直接在yml中配置线程池

在 Spring 中&#xff0c;Async 注解用于将方法标记为异步执行的方法。当使用 Async 注解时&#xff0c;该方法将在单独的线程中执行&#xff0c;而不会阻塞当前线程。这使得方法可以在后台执行&#xff0c;而不会影响主线程的执行。 在您提供的代码示例中&#xff0c;a1() 和…

【gpt4 8k 免费使用】Coze 是一款用来开发新一代 AI Chat Bot 的应用编辑平台

Coze 快速开始 | Coze Welcome to Coze Coze 是什么&#xff1f; Coze 是一款用来开发新一代 AI Chat Bot 的应用编辑平台&#xff0c;无论你是否有编程基础&#xff0c;都可以通过这个平台来快速创建各种类型的 Chat Bot&#xff0c;并将其发布到各类社交平台和通讯软件上。…

【C++】类和对象之匿名对象友元内部类

目录 一、匿名对象 1、基础格式 2、使用场景 二、友元 1、友元函数 2、友元类 三、内部类 1、概念 2、特性 四、拷贝对象时的一些编译器优化 1、函数传参 2、对象返回 一、匿名对象 1、基础格式 【注意】 &#x1f7e2;匿名对象的声明周期只有当前行&#xff0c;进入…

[计算机提升] 创建FTP共享

4.7 创建FTP共享 4.7.1 FTP介绍 在Windows系统中&#xff0c;FTP共享是一种用于在网络上进行文件传输的标准协议。它可以让用户通过FTP客户端程序访问并下载或上传文件&#xff0c;实现文件共享。 FTP共享的用途非常广泛&#xff0c;例如可以让多个用户共享文件、进行文件备份…

超越5大最先进的文本到视频系统!MagicVideo-V2:多阶段高保真视频生成框架(字节)

本项工作介绍了MagicVideo-V2&#xff0c;将文本到图像模型、视频运动生成器、参考图像embedding模块和帧内插模块集成到端到端的视频生成流程中。由于这些架构设计的好处&#xff0c;MagicVideo-V2能够生成具有极高保真度和流畅度的美观高分辨率视频。通过大规模用户评估&…

【设计模式-6】建造者模式的实现与框架中的应用

建造者模式又被成为生成器模式&#xff0c;是一种使用频率比较低&#xff0c;相对复杂的创建型模式&#xff0c;在很多源码框架中可以看到建造者的使用场景&#xff0c;稍后我们会在本文末尾展示几个框架的使用案例。  建造者模式所构造的对象通常是比较复杂而且庞大的&#x…

Day31 贪心算法 part01 理论基础 455.分发饼干 376.摆动序列 53.最大子序和

贪心算法 part01 理论基础 455.分发饼干 376.摆动序列 53.最大子序和 理论基础&#xff08;转载自代码随想录&#xff09; 什么是贪心 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 这么说有点抽象&#xff0c;来举一个例子&#xff1a; 例如&#…

Unity——VContainer的依赖注入

一、IOC控制反转和DI依赖倒置 1、IOC框架核心原理是依赖倒置原则 C#设计模式的六大原则 使用这种思想方式&#xff0c;可以让我们无需关心对象的生成方式&#xff0c;只需要告诉容器我需要的对象即可&#xff0c;而告诉容器我需要对象的方式就叫做DI&#xff08;依赖注入&…

企业级大数据安全架构(三)修改集群节点hostname

作者&#xff1a;楼高 在后续安装FreeIPA的过程中&#xff0c;要求机器名必须包含完整的域名信息。如果之前在Ambari集群节点上的机器名不符合这个要求&#xff0c;可以按照以下步骤在Ambari上修改所有节点的机器名&#xff1a; 1.部署节点说明 本次测试是三台 ambari 节点&…

【软件测试作业_TPshop商城】农业工程学院-测试需求分析与测试计划+自动化+性能+测试用例+报告软件缺陷+测试计划+单元测试+系统测试

1测试需求分析与测试计划 1.1 被测系统简介 1.2测试需求分析 1.2.1单元测试层面的测试需求分析 1.2.2系统测试层面的测试需求分析 1.3测试计划 1.31测试范围与任务 1.3.2 测试环境 1.3.3测试进度安排 测试用例的设计2 2.1单元测试层面的测试用例设计 2.2系统测试层面的测试用例…

linux部署apache服务部署静态网站

第一步&#xff1a;配置IP地址 第二步&#xff1a;创建挂载点 配置yum仓库 mkdir -p /media/cdrom 挂载 mount /dev/cdrom /media/cdrom 安装服务 安装yum源 启用httpd服务程序并将其加入到开机启动项中 建立网站数据保存目录&#xff0c;并创建首页文件 mkdir /home/wwwroo…

英伟达推新AI语音识别模型Parakeet 号称优于Whisper

领先的开源对话 AI 工具包 NVIDIA NeMo宣布推出 Parakeet ASR 模型系列&#xff0c;这是一系列最先进的自动语音识别&#xff08;ASR&#xff09;模型&#xff0c;能够以出色的准确性转录英语口语。Parakeet ASR 模型与 Suno.ai 合作开发&#xff0c;是语音识别领域的一大突破&…

这些代码对比工具,你都知道吗?屎山别怕

在程序开发的过程中&#xff0c;程序员会经常对源代码以及库文件进行代码对比&#xff0c;在这篇文章里我们向大家介绍六款程序员常用的代码比较工具 WinMerge WinMerge是一款运行于Windows系统下的文件比较和合并工具&#xff0c;使用它可以非常方便地比较多个文档内容&#…

Hadoop分布式文件系统(三)

目录 一、Hadoop 1、MapReduce 1.1、理解MapReduce思想 1.2、分布式计算概念 1.3、MapReduce介绍 1.4、MapReduce特点 1.5、MapReduce局限性 1.6、MapReduce实例进程 1.7、MapReduce阶段组成 1.8、MapReduce数据类型 1.9、MapReduce官方示例 2、YARN 一、Hadoop 1…

上海亚商投顾:创业板指放量涨近2% 全市场超4400只个股上涨

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日震荡反弹&#xff0c;创业板指午后涨超2%。华为概念股爆发&#xff0c;鸿蒙方向领涨&#xff0c;创识…