当前位置: 首页 > news >正文

烟台网站排名系统做购物网站多少钱 知乎

烟台网站排名系统,做购物网站多少钱 知乎,昆明网站建设推荐q479185700上墙,四川游戏seo整站优化文章目录 0.引言1. 原始算法实现2. 优化思路3. 优化后的代码4. 代码详细解读 0.引言 视频质量图像清晰度检测已在C基于opencv4的视频质量检测中有所介绍#xff0c;本文将详细介绍其优化版本。 1. 原始算法实现 原始代码#xff1a; double sharpnessDetect(const cv::Ma… 文章目录 0.引言1. 原始算法实现2. 优化思路3. 优化后的代码4. 代码详细解读 0.引言 视频质量图像清晰度检测已在C基于opencv4的视频质量检测中有所介绍本文将详细介绍其优化版本。 1. 原始算法实现 原始代码 double sharpnessDetect(const cv::Mat srcImg) {const int kGaussianSize 3; // 高斯模糊的核大小cv::Mat grayImg;if (srcImg.channels() ! 1) {cv::cvtColor(srcImg, grayImg, cv::COLOR_BGR2GRAY);} else {grayImg srcImg;}cv::Mat blurredImg;cv::GaussianBlur(grayImg, blurredImg, cv::Size(kGaussianSize, kGaussianSize), 0);uint64_t sumFver 0;uint64_t sumFhor 0;uint64_t sumVver 0;uint64_t sumVhor 0;double blurFactor 0.0;for (int r 0; r grayImg.rows; r) {for (int c 0; c grayImg.cols; c) {uint64_t diffFver 0;uint64_t diffFhor 0;uint64_t diffBver 0;uint64_t diffBhor 0;if (r ! 0) {diffFver static_castuint64_t(std::abs(grayImg.atuchar(r, c) - grayImg.atuchar(r - 1, c)));}if (c ! 0) {diffFhor static_castuint64_t(std::abs(grayImg.atuchar(r, c) - grayImg.atuchar(r, c - 1)));}if (r ! 0) {diffBver static_castuint64_t(std::abs(blurredImg.atuchar(r, c) - blurredImg.atuchar(r - 1, c)));}if (c ! 0) {diffBhor static_castuint64_t(std::abs(blurredImg.atuchar(r, c) - blurredImg.atuchar(r, c - 1)));}uint64_t verDiff (diffFver diffBver) ? (diffFver - diffBver) : 0;uint64_t horDiff (diffFhor diffBhor) ? (diffFhor - diffBhor) : 0;sumFver diffFver;sumFhor diffFhor;sumVver verDiff;sumVhor horDiff;}}double bFver (static_castdouble(sumFver - sumVver)) / (static_castdouble(sumFver) 1.0);double bFhor (static_castdouble(sumFhor - sumVhor)) / (static_castdouble(sumFhor) 1.0);blurFactor (bFver bFhor) ? bFver : bFhor;return 1.0 - blurFactor; }以下是原始代码的主要步骤 图像预处理将输入图像转换为灰度图。高斯模糊对灰度图像进行高斯模糊处理得到模糊图像。梯度计算通过遍历每个像素计算原始图像和模糊图像在垂直和水平方向上的梯度差异。模糊因子计算根据梯度差异计算模糊因子进而评估图像的清晰度。 存在的问题 效率低下使用嵌套的for循环遍历每个像素手动计算梯度处理大尺寸图像时效率较低。 2. 优化思路 为了解决上述问题我们对原始算法进行了以下优化 向量化操作避免显式循环利用OpenCV的矩阵运算和函数对整个图像进行批量处理提高计算效率。使用Sobel算子计算梯度Sobel算子是常用的梯度计算方法能够有效地提取图像的边缘信息。 3. 优化后的代码 以下是优化后的sharpnessDetect函数 double sharpnessDetect(const cv::Mat srcImg) {const int kGaussianSize 3; // 高斯模糊的核大小cv::Mat grayImg;if (srcImg.channels() ! 1) {cv::cvtColor(srcImg, grayImg, cv::COLOR_BGR2GRAY);} else {grayImg srcImg;}// 对灰度图像进行高斯模糊cv::Mat blurredImg;cv::GaussianBlur(grayImg, blurredImg, cv::Size(kGaussianSize, kGaussianSize), 0);// 计算原始图像和模糊图像的梯度cv::Mat gradXOrig, gradYOrig;cv::Mat gradXBlur, gradYBlur;cv::Sobel(grayImg, gradXOrig, CV_64F, 1, 0, 3);cv::Sobel(grayImg, gradYOrig, CV_64F, 0, 1, 3);cv::Sobel(blurredImg, gradXBlur, CV_64F, 1, 0, 3);cv::Sobel(blurredImg, gradYBlur, CV_64F, 0, 1, 3);// 计算梯度的绝对值cv::Mat absGradXOrig cv::abs(gradXOrig);cv::Mat absGradYOrig cv::abs(gradYOrig);cv::Mat absGradXBlur cv::abs(gradXBlur);cv::Mat absGradYBlur cv::abs(gradYBlur);// 计算梯度差的正值部分cv::Mat diffX absGradXOrig - absGradXBlur;cv::Mat diffY absGradYOrig - absGradYBlur;diffX cv::max(diffX, 0);diffY cv::max(diffY, 0);// 计算梯度的总和double sumFhor cv::sum(absGradXOrig)[0];double sumFver cv::sum(absGradYOrig)[0];// 计算梯度差的总和double sumVhor cv::sum(diffX)[0];double sumVver cv::sum(diffY)[0];// 计算模糊因子double bFver (sumFver - sumVver) / (sumFver 1e-6);double bFhor (sumFhor - sumVhor) / (sumFhor 1e-6);double blurFactor std::max(bFver, bFhor);// 返回清晰度得分return 1.0 - blurFactor; }4. 代码详细解读 #mermaid-svg-PeakSTwSaDIf74hx {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-PeakSTwSaDIf74hx .error-icon{fill:#552222;}#mermaid-svg-PeakSTwSaDIf74hx .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-PeakSTwSaDIf74hx .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-PeakSTwSaDIf74hx .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-PeakSTwSaDIf74hx .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-PeakSTwSaDIf74hx .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-PeakSTwSaDIf74hx .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-PeakSTwSaDIf74hx .marker{fill:#333333;stroke:#333333;}#mermaid-svg-PeakSTwSaDIf74hx .marker.cross{stroke:#333333;}#mermaid-svg-PeakSTwSaDIf74hx svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-PeakSTwSaDIf74hx .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-PeakSTwSaDIf74hx .cluster-label text{fill:#333;}#mermaid-svg-PeakSTwSaDIf74hx .cluster-label span{color:#333;}#mermaid-svg-PeakSTwSaDIf74hx .label text,#mermaid-svg-PeakSTwSaDIf74hx span{fill:#333;color:#333;}#mermaid-svg-PeakSTwSaDIf74hx .node rect,#mermaid-svg-PeakSTwSaDIf74hx .node circle,#mermaid-svg-PeakSTwSaDIf74hx .node ellipse,#mermaid-svg-PeakSTwSaDIf74hx .node polygon,#mermaid-svg-PeakSTwSaDIf74hx .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-PeakSTwSaDIf74hx .node .label{text-align:center;}#mermaid-svg-PeakSTwSaDIf74hx .node.clickable{cursor:pointer;}#mermaid-svg-PeakSTwSaDIf74hx .arrowheadPath{fill:#333333;}#mermaid-svg-PeakSTwSaDIf74hx .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-PeakSTwSaDIf74hx .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-PeakSTwSaDIf74hx .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-PeakSTwSaDIf74hx .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-PeakSTwSaDIf74hx .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-PeakSTwSaDIf74hx .cluster text{fill:#333;}#mermaid-svg-PeakSTwSaDIf74hx .cluster span{color:#333;}#mermaid-svg-PeakSTwSaDIf74hx div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-PeakSTwSaDIf74hx :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 否 是 开始 图像是否为灰度图? 转换为灰度图 跳过转换 对灰度图像进行高斯模糊 计算原始图像和模糊图像的梯度 计算梯度的绝对值 计算梯度差的正值部分 计算梯度的总和 计算模糊因子 返回清晰度得分 流程说明 开始函数sharpnessDetect开始执行。检查图像通道数判断输入图像是否为灰度图。 如果不是转换为灰度图。如果是跳过转换。 高斯模糊对灰度图像进行高斯模糊处理得到模糊图像。计算梯度使用Sobel算子计算原始图像和模糊图像在x和y方向的梯度。计算梯度的绝对值对梯度矩阵取绝对值。计算梯度差的正值部分计算原始梯度和模糊梯度之间的差异保留正值部分。计算梯度的总和分别计算原始梯度和差异梯度的总和。计算模糊因子根据梯度总和计算模糊因子。返回结果根据模糊因子计算清晰度得分返回结果。 优化细节解读 使用Sobel算子计算梯度cv::Sobel函数可以高效地计算图像在x和y方向的梯度避免了手动计算相邻像素差异的繁琐过程。 向量化操作通过cv::abs、cv::sum等函数对整个矩阵进行操作充分利用了底层的优化和并行计算能力。 梯度差的正值部分使用cv::max函数将梯度差中的负值置零保留正值部分与原始代码的逻辑一致。 防止除零错误在计算模糊因子时分母加上了一个很小的值1e-6防止除以零的情况。 数据类型选择使用CV_64F双精度浮点型确保计算的精度避免数据溢出和精度损失。
http://www.dnsts.com.cn/news/15022.html

相关文章:

  • 做论坛网站怎么赚钱家装公司图片
  • 防城港网站建设甘肃网络公司网站建设
  • 俄语淘宝网站建设wordpress中的邮箱设置
  • 网站建设 jsp php手机营销型网站建设公司
  • dw建设网站如何加入音乐合肥网站建设技术
  • 鞍山市做网站公司Wordpress模板服务
  • 外贸网站建设报价差别那么大花钱多吃亏wordpress添加订阅会员
  • 怎么建设网站赚钱WordPress添加上传下载
  • 做网站 服务器施工企业会计制度及施工企业会计核算办法
  • 零陵旅游建设投资公司网站网站弹窗页面是谁做的
  • 网站搜索框设计wordpress 能装windows
  • 什么网站做宣传好合肥网站建设策划方案
  • 有什么免费开发网站建设软件有哪些传媒网站建设方案
  • 在境外做网站网站福州建设厅网站
  • 宁夏网站开发公司重庆舞台搭建招聘
  • 阜宁做网站哪家公司最好电子产品网站
  • 网站建设一般报价一些网站只能在微信打开怎么做的
  • 如何开发网站自己做站长vps怎么做网站
  • 做分销网站系统下载海外网站加速免费
  • 中小企业网站制作不了郑州网站制作设计
  • 企业网站策划方案模板备案域名价格
  • 电子商务网站开发实战wordpress删除模板文件夹
  • 怎样做网站服务器网站建设外包费用
  • wordpress开启子站点正规的网页设计公司
  • 北京网站制作服务盐城网盐城网站建设站建设
  • 一起做网商网站怎么样郑州网站营销推广公司
  • 金融网站建设公司wordpress调用列表页
  • 婚庆设备租赁网站源码wordpress营业按钮
  • 台山网站建设公司网站配色方案
  • 一般网站模块九江市住房和城乡建设局官方网站