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

这篇具有很好参考价值的文章主要介绍了OpenCV——多分辨率LBP的计算方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OpenCV——多分辨率LBP的计算方法,OpenCV 图像/点云处理,opencv,人工智能,计算机视觉,算法,开发语言

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取不同值时的情况。
OpenCV——多分辨率LBP的计算方法,OpenCV 图像/点云处理,opencv,人工智能,计算机视觉,算法,开发语言

多分辨率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);
	// 多分辨率LBP
	cv::Mat lbpImg = ExpandLocalBinaryPattern(img);

	imshow("多分辨率LBP", lbpImg);
	cv::waitKey(0);

	return 0;

}

三、结果展示

OpenCV——多分辨率LBP的计算方法,OpenCV 图像/点云处理,opencv,人工智能,计算机视觉,算法,开发语言文章来源地址https://www.toymoban.com/news/detail-818864.html

到了这里,关于OpenCV——多分辨率LBP的计算方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • opencv-python读取的图像分辨率太大不能完全显示

    如果使用OpenCV-Python读取的图像分辨率太大,无法完全显示在屏幕上,可以考虑以下几种方法: 1.缩放图像:使用OpenCV的resize函数,将图像缩小到适合屏幕显示的大小。例如,可以将图像的宽度和高度都缩小到屏幕宽度和高度的一半。 2.平移图像:如果只是图像的一部分超出了

    2024年02月03日
    浏览(46)
  • 位深度/像素/分辨率/图像大小的计算/帧率/刷新率

    有关图像的基本名词解释: 在记录数字图像的颜色时,计算机实际上是用每个像素需要的位深度来表示的。黑白二色的图像是数字图像中最简单的一种,它只有黑、白两种颜色,也就是说它的每个像素只有1位颜色,位深度是1,用2的一次幂来表示;考虑到位深度平均分给R,

    2024年02月11日
    浏览(47)
  • opencv和ffmpeg调整视频分辨率两种方法介绍

     咳咳,为了调整学习资料的分辨率,我花了很多时间,嗯,效果一般。就是图个乐子。   opencv确实是个不错的软件,但可惜我不太懂调整颜色色差,对比度这些东西,但是还是贴上代码吧。     ffmpeg有python版本和exe版本,为了节省时间,我就使用exe版本了。ffmpeg使用前需要

    2024年02月09日
    浏览(48)
  • 图像超分辨率简单介绍

    图像超分辨率(Image Super-Resolution,简称SR)是一种通过使用计算机算法提高图像分辨率的技术,即从低分辨率的图像中生成高分辨率的图像。图像SR可以在许多领域得到应用,例如计算机视觉、医学成像、遥感等。 图像SR旨在从低分辨率(低清晰度)图像中提高图像质量和信

    2024年02月06日
    浏览(42)
  • 图像超分辨率重建概述

    1. 概念:         图像分辨率是一组用于评估图像中蕴含细节信息丰富程度的性能参数,包括时间分辨率、空间分辨率及色阶分辨率等,体现了成像系统实际所能反映物体细节信息的能力。相较于低分辨率图像,高分辨率图像通常包含更大的像素密度、更丰富的纹理细节及更

    2024年02月04日
    浏览(51)
  • ISP之图像降分辨率

    1、图像缩放背景 图像的放大、缩小(简称缩放)是图像处理的一种处理方法。所谓图像缩放是指图像分辨率的改变,它在图像显示、传输、图像分析以及动画制作、电影合成、甚至医学图像处理中都有着相当广泛的应用。比如要在1024 X 768 分辨率的显示器上全屏显示800 X 600 的数

    2024年02月11日
    浏览(47)
  • 图像超分辨率重建(pytorch)

             本文代码主体来自CVPR2020论文《Closed-loop matters: Dual regression networks for single image super-resolution》,但原作者并未提供论文亮点--如何使用unpair数据进行训练的代码,所以我在其基础上补齐了该过程的代码。         代码仓库:https://github.com/VitaminyW/Super_Solution      

    2024年01月16日
    浏览(45)
  • ​目标检测算法——YOLOv5/YOLOv7改进之结合​SOCA(单幅图像超分辨率) CVPR19 单幅图像超分辨率来了!!!

    (一)前沿介绍 论文题目:Second-order Attention Network for Single Image Super-Resolution 论文地址:CVPR19 超分辨率 代码地址:https://github.com/daitao/SAN 1.SOCA moudle结构图 2.相关实验结果 (二)YOLOv5/YOLOv7改进之结合​SOCA 1.配置common.py文件 2.配置yolo.py文件 3.配置yolov5/yolov7_SOCA moudle.yaml文件

    2023年04月23日
    浏览(49)
  • 【图像超分辨率重建】——GRL论文精读笔记

    作者: Yawei Li1 Yuchen Fan2 Xiaoyu Xiang2 Denis Demandolx2 Rakesh Ranjan2 Radu Timofte1;3 Luc Van Gool1;4 期刊: CVPR 引用: * 摘要: 本文的目的是提出一种机制,在全局、区域和局部范围内有效和明确地建立图像层次模型,用于图像修复。为了实现这一目标,我们首先分析了自然图像的两个重要

    2024年02月09日
    浏览(50)
  • 【图像超分辨率重建】——HAT论文精读笔记

    作者: Xiangyu Chen, Xintao Wang, Jiantao Zhou, and Chao Dong 期刊: 引用: 摘要: 基于 Transformer 的方法在图像超分辨率等低级视觉任务中表现出令人印象深刻的性能。然而,我们发现这些网络只能通过归因分析利用有限空间范围的输入信息。这意味着 Transformer 的潜力在现有网络中仍未

    2024年02月08日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包