电子商务网站建设与维护期末考试/百度推广收费标准

电子商务网站建设与维护期末考试,百度推广收费标准,最全的游戏网站,政府部门建设网站的好处Opencv计算机视觉编程攻略-第四节 图直方图统计像素 1.计算图像直方图2.基于查找表修改图像3.直方图均衡化4.直方图反向投影进行内容查找5.用均值平移法查找目标6.比较直方图搜索相似图像7.用积分图统计图像 1.计算图像直方图 图像统计直方图的概念 图像统计直方图是一种用于描…

Opencv计算机视觉编程攻略-第四节 图直方图统计像素

  • 1.计算图像直方图
  • 2.基于查找表修改图像
  • 3.直方图均衡化
  • 4.直方图反向投影进行内容查找
  • 5.用均值平移法查找目标
  • 6.比较直方图搜索相似图像
  • 7.用积分图统计图像

1.计算图像直方图

图像统计直方图的概念
图像统计直方图是一种用于描述图像中像素分布情况的工具。具体来说,灰度直方图是一个关于灰度级别的函数,它记录了图像中每种灰度级别对应的像素数量。这种分布反映了图像亮度的整体特性。

对于彩色图像(如RGB),可以通过将每个颜色通道分别映射到特定索引来构建其直方图,并利用核密度估计的方法来累积权重,从而得到更精确的颜色分布信息。

统计直方图主要基于opencv 的calcHist函数实现,其具体配置如下

		calcHist(&image, 1,			// histogram of 1 image onlychannels,	// the channel usedMat(),	// no mask is usedhist,		// the resulting histogram1,			// it is a 1D histogramhistSize,	// number of binsranges		// pixel value range);

学习文中给出的手绘统计直方图,基于统计的频数,绘制线高 line

    // Create an image representing a histogramstatic Mat getImageOfHistogram(const Mat &hist, int zoom) {// Get min and max bin valuesdouble maxVal = 0;double minVal = 0;minMaxLoc(hist, &minVal, &maxVal, 0, 0);// get histogram sizeint histSize = hist.rows;// Square image on which to display histogramMat histImg(histSize*zoom, histSize*zoom, CV_8U, Scalar(255));// set highest point at 90% of nbins (i.e. image height)int hpt = static_cast<int>(0.9*histSize);// Draw vertical line for each binfor (int h = 0; h < histSize; h++) {float binVal = hist.at<float>(h);if (binVal>0) {int intensity = static_cast<int>(binVal*hpt / maxVal);line(histImg, Point(h*zoom, histSize*zoom),Point(h*zoom, (histSize - intensity)*zoom), Scalar(0), zoom);}}return histImg;}

在这里插入图片描述

2.基于查找表修改图像

所谓的查找表,相当于是一个数组,每个数组对应i值的原像素值映射为目标像素值
人工构建查找表

cv::Mat lut(1,256,CV_8U); // 1x256 matrix
// Or:
// int dim(256);
// cv::Mat lut(1,  // 1 dimension
// 	&dim,          // 256 entries
//	CV_8U);        // uchar
for (int i=0; i<256; i++) {// 0 becomes 255, 1 becomes 254, etc.lut.at<uchar>(i)= 255-i;
}

通过opencv的LUT函数一键映射查找表,进行取反操作

 Mat result;// apply lookup tableLUT(image,lookup,result);

在这里插入图片描述
在这里插入图片描述

3.直方图均衡化

上文了解了统计直方图和查找表,基于直方图统计结果构建均衡化的查找表,从而全局修改图像整体颜色

equalizeHist(image,result); // 直接使用opencv函数实现均衡化

在这里插入图片描述
在这里插入图片描述
统计直方图的原理一般是值选择一定像素值范围,将该范围的像素映射的一个更大范围的像素值范围中,从而使得整体图像显得更均匀,手动实现代码如下:

    Mat stretch(const Mat &image, float percentile) {// number of pixels in percentilefloat number= image.total()*percentile;// Compute histogram firstMat hist = getHistogram(image);// find left extremity of the histogramint imin = 0;for (float count=0.0; imin < 256; imin++) {// number of pixel at imin and below must be > numberif ((count+=hist.at<float>(imin)) >= number)break;}// find right extremity of the histogramint imax = 255;for (float count=0.0; imax >= 0; imax--) {// number of pixel at imax and below must be > numberif ((count += hist.at<float>(imax)) >= number)break;}// Create lookup tableint dims[1] = { 256 };Mat lookup(1, dims, CV_8U);for (int i = 0; i<256; i++) {if (i < imin) lookup.at<uchar>(i) = 0;else if (i > imax) lookup.at<uchar>(i) = 255;else lookup.at<uchar>(i) = cvRound(255.0*(i - imin) / (imax - imin));}// Apply lookup tableMat result;result = applyLookUp(image, lookup);return result;}

在这里插入图片描述

4.直方图反向投影进行内容查找

区域内图像的统计直方图某种程度表示了整体颜色分布特征,因而可以使用区域的统计直方图作为特征进行相似内容查找,以区域内白云的颜色为例进行统计
在这里插入图片描述
在这里插入图片描述

calcBackProject(&image,1,            // we only use one image at a timechannels,     // vector specifying what histogram dimensions belong to what image channelsshistogram,   // the histogram we are usingresult,       // the resulting back projection imageranges,       // the range of values, for each dimension255.0         // the scaling factor is chosen such that a histogram value of 1 maps to 255);

在这里插入图片描述
在这里插入图片描述
在灰度图内进行统计分析,难以分割出较好的效果,使用rgb往往可以获得不错的效果,彩色图使用同一个函数
在这里插入图片描述

5.用均值平移法查找目标

在这里插入图片描述
以这个猩猩的脸部特征生成统计特征图

   // 颜色转为hsv 如上一节所说,hsv分辨皮肤更清晰cv::cvtColor(image, hsv, cv::COLOR_BGR2HSV);// Get back-projection of hue histogramint ch[1]={0};finder.setThreshold(-1.0f); // no thresholdingcv::Mat result= finder.find(hsv,0.0f,180.0f,ch);// 使用反向统计直方图获得图像上和目标区域的相似性概率图// search objet with mean shift 使用均值漂移算法在概率图中查找,最后在一张有偏移的图像上准确找到目标cv::TermCriteria criteria(cv::TermCriteria::MAX_ITER | cv::TermCriteria::EPS,10,     // iterate max 10 times1);     // or until the change in centroid position is less than 1px

在这里插入图片描述

6.比较直方图搜索相似图像

在传统数字图像处理领域,使用统计直方图进行图像相似度对比,是常用的方法,简单高效

	double compare(const cv::Mat& image) {inputH= hist.getHistogram(image);// histogram comparison using intersectionreturn cv::compareHist(refH,inputH, cv::HISTCMP_INTERSECT);}

在这里插入图片描述
waves vs dog: 26535
waves vs marais: 12149
waves vs bear: 18353
waves vs beach: 33032 相似度最高的图像
waves vs polar: 20768
waves vs moose: 15225
waves vs lake: 15486
waves vs fundy: 14309

在这里插入图片描述

7.用积分图统计图像

积分图统计图像,本质就是数组的前缀和算法,通过一次性求解前缀,后续每个位置的要素数量就可以直接查询得到,避免每次的查找,这个在区域内进行搜索直方图特征中有较好的应用,实际操作中,将颜色维度从256压缩到更小空间从而实现加速:

	double maxSimilarity=0.0;int xbest, ybest;// loop over a horizontal strip around girl location in initial imagefor (int y=110; y<120; y++) {for (int x=0; x<secondImage.cols-width; x++) {// compute histogram of 16 bins using integral imagehistogram= intHistogram(x,y,width,height);// compute distance with reference histogramdouble distance= cv::compareHist(refHistogram,histogram, cv::HISTCMP_INTERSECT);// find position of most similar histogramif (distance>maxSimilarity) {xbest= x;ybest= y;maxSimilarity= distance;}std::cout << "Distance(" << x << "," << y << ")=" << distance << std::endl;}}

在这里插入图片描述
如果看到这里,麻烦点一个赞再走,谢谢!相关代码同样上传代码库链接: 点击下载

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

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

相关文章

5、vim编辑和shell编程【超详细】

一、vim 1、了解 Vim (Vi IMproved) 是一款功能强大的文本编辑器。 正常模式&#xff1a;vim 文件&#xff0c;刚打开的样子vim模式&#xff1a;输入文本的地方命令模式&#xff1a;输入 :wq等等的位置&#xff0c;可以对文本进行一些操作&#xff0c;比如&#xff1a;保存文…

《Robust Synthetic-to-Real Transfer for Stereo Matching》

论文地址&#xff1a;https://arxiv.org/pdf/2403.07705 源码地址&#xff1a;https://github.com/jiaw-z/DKT-Stereo 概述 通过在合成数据上预训练的模型在未见领域上表现出强大的鲁棒性。然而&#xff0c;在现实世界场景中对这些模型进行微调时&#xff0c;其领域泛化能力可…

蓝桥杯第10届 后缀表达式

题目描述 给定 N 个加号、M 个减号以及 NM1 个整数 A1,A2,⋅⋅⋅,ANM1​&#xff0c;小明想知道在所有由这N 个加号、M 个减号以及 NM1 个整数凑出的合法的 后缀表达式中&#xff0c;结果最大的是哪一个&#xff1f; 请你输出这个最大的结果。 例如使用 1 2 3 -&#xff0c…

C++前缀和

个人主页&#xff1a;[PingdiGuo_guo] 收录专栏&#xff1a;[C干货专栏] 大家好&#xff0c;今天我们来了解一下C的一个重要概念&#xff1a;前缀和 目录 1.什么是前缀和 2.前缀和的用法 1.前缀和的定义 2.预处理前缀和数组 3.查询区间和 4.数组中某个区间的和是否为特定…

uni app跨端开发遇到的问题

技术栈 uni app&#xff0c;vue3&#xff0c;uview puls&#xff0c;map… nvue 因为项目中有地图&#xff0c;要使用到map标签&#xff0c;所以考虑用原生nvue开发&#xff0c;它是有痛点的&#xff0c;首先浏览器不支持&#xff0c;我是要开发ios和Android&#xff0c;所以…

element-ui messageBox 组件源码分享

messageBox 弹框组件源码分享&#xff0c;主要从以下两个方面&#xff1a; 1、messageBox 组件页面结构。 2、messageBox 组件属性。 一、组件页面结构。 二、组件属性。 2.1 title 标题&#xff0c;类型为 string&#xff0c;无默认值。 2.2 message 消息正文内容&#xf…

支付页面安全与E-Skimming防护----浅谈PCI DSS v4.0.1要求6.4.3与11.6.1的实施

关键词&#xff1a;支付页面安全、E-Skimming、PCI DSS v4.0.1、第三方脚本、风险管理、持卡人数据、数据安全、第三方服务提供商、TPSP、内容安全、网页监控、恶意脚本攻击 本文为atsec和作者技术共享类文章&#xff0c;旨在共同探讨信息安全的相关话题。转载请注明&#xff…

【gradio】从零搭建知识库问答系统-Gradio+Ollama+Qwen2.5实现全流程

从零搭建大模型问答系统-GradioOllamaQwen2.5实现全流程&#xff08;一&#xff09; 前言一、界面设计&#xff08;计划&#xff09;二、模块设计1.登录模块2.注册模块3. 主界面模块4. 历史记录模块 三、相应的接口&#xff08;前后端交互&#xff09;四、实现前端界面的设计co…

案例分享|树莓派媒体播放器,重构商场广告的“黄金三秒”

研究显示&#xff0c;与传统户外广告相比&#xff0c;数字户外广告在消费者心中的记忆率提高了17%&#xff0c;而动态户外广告更是能提升16%的销售业绩&#xff0c;整体广告效率提升了17%。这一显著优势&#xff0c;使得越来越多资源和技术流入数字广告行业。 户外裸眼3D广告 无…

23种设计模式-装饰器(Decorator)设计模式

装饰器设计模式 &#x1f6a9;什么是装饰器设计模式&#xff1f;&#x1f6a9;装饰器设计模式的特点&#x1f6a9;装饰器设计模式的结构&#x1f6a9;装饰器设计模式的优缺点&#x1f6a9;装饰器设计模式的Java实现&#x1f6a9;代码总结&#x1f6a9;总结 &#x1f6a9;什么是…

ubuntu22.04安装搜狗输入法保姆教程~

一、添加中文语言支持 1.首先打开设置,找到Language and Region 2.点击Manage Installed Languages 3.点击 Install/Remove Languages... 4.选中Chinese (simplified),点击Apply

强化学习和智能决策:Q-Learning和Deep Q-Learning算法

强化学习(Reinforcement Learning, RL)是机器学习的一个重要分支,它通过智能体(Agent)与环境交互来学习最优决策策略,旨在最大化智能体的长期累积奖励。Q-Learning和Deep Q-Learning是强化学习中的两种关键算法,它们在智能决策领域发挥着重要作用。 一、强化学习基础 …

ubuntu22.04 安装Jitsi meet 开源会议系统,代替腾讯会议

0.安装 官方安装教程Self-Hosting Guide - Debian/Ubuntu server | Jitsi Meet 一定要用域名访问&#xff0c; 一定要用域名访问&#xff0c; 一定要用域名访问&#xff0c; 一定要用域名访问&#xff0c; 域名一定要有ssl证书&#xff0c;域名一定要有ssl证书&#xff0c;域名…

专家管理系统(源码+文档+讲解+演示)

引言 在知识经济时代&#xff0c;专家管理系统成为了企业优化知识资源、提升决策效率的重要工具。本文将介绍一款创新的专家管理系统&#xff0c;该系统通过智能化工具&#xff0c;助力企业实现专家资源的高效管理和利用。 平台概述 专家管理系统采用前后端分离的架构设计&a…

关于cmd中出现无法识别某某指令的问题

今天来解决以下这个比较常见的问题&#xff0c;安装各种软件都可能会发生&#xff0c;一般是安装时没勾选注册环境变量&#xff0c;导致cmd无法识别该指令。例如mysql&#xff0c;git等&#xff0c;一般初学者可能不太清楚。 解决这类问题最主要的是了解环境变量的概念&#x…

【C++初阶】---类和对象(上)

1.类的定义 1.1类的定义格式 • class为定义类的关键字&#xff0c;Data为类的名字&#xff0c;{}中为类的主体&#xff0c;注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员&#xff1a;类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数。 •…

Rust安装并配置配置vscode编译器

一. 下载rustup-init.exe rust下载网址&#xff1a;Getting started - Rust Programming Language 根据系统&#xff0c;选择适合的exe文件 我选择的的是右边64bit的 打开下载的文件 输入1&#xff0c;回车 二. Visual C 安装 自动下载安装vs 等待安装完毕 三. Rust 安装…

ECharts各类炫酷图表/3D柱形图

一、前言 最近鸡米花实现了各类的炫酷的图表&#xff0c;有3D柱形图、双边柱形图以及异形柱形图&#xff0c;好了&#xff0c;直接上图&#xff1a; 二、效果图 一个个来吧&#xff0c;下面就是代码啦&#xff0c;注意&#xff0c;一下图表展示的宽高均为800px*300px 三、异形横…

HCIP——园区网、VLAN

园区网 园区网搭建核心思路&#xff1a;冗余&#xff08;备份&#xff09;--- 保证其健壮性 1、设备冗余 2、线路冗余 3、网关冗余 4、ups&#xff08;不间断电源&#xff09;冗余—— 能不断电&#xff08;物理层&#xff09; 三层交换机和路由器的选择&#xff1a; 三层交换…

虚拟机(二):Android 篇

虚拟机&#xff08;一&#xff09;&#xff1a;Java 篇 虚拟机&#xff08;二&#xff09;&#xff1a;Android 篇 Dalvik和JVM区别 Dalvik 基于寄存器&#xff0c;而 JVM 基于栈。 基于栈的架构具有更好的可移植性&#xff0c;因为其实现不依赖于物理寄存器基于栈的架构通常指…