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

做数据图网站百度网盘网页版登录首页

做数据图网站,百度网盘网页版登录首页,网页游戏大全手机游戏,怎么在微信上做公众号文章目录 0.引言1. 原始算法实现2. 优化思路3. 优化后的代码4. 代码详细解读 0.引言 视频质量图像清晰度检测已在C基于opencv4的视频质量检测中有所介绍,本文将详细介绍其优化版本。 1. 原始算法实现 原始代码: 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_cast<uint64_t>(std::abs(grayImg.at<uchar>(r, c) - grayImg.at<uchar>(r - 1, c)));}if (c != 0) {diffFhor = static_cast<uint64_t>(std::abs(grayImg.at<uchar>(r, c) - grayImg.at<uchar>(r, c - 1)));}if (r != 0) {diffBver = static_cast<uint64_t>(std::abs(blurredImg.at<uchar>(r, c) - blurredImg.at<uchar>(r - 1, c)));}if (c != 0) {diffBhor = static_cast<uint64_t>(std::abs(blurredImg.at<uchar>(r, c) - blurredImg.at<uchar>(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_cast<double>(sumFver - sumVver)) / (static_cast<double>(sumFver) + 1.0);double bFhor = (static_cast<double>(sumFhor - sumVhor)) / (static_cast<double>(sumFhor) + 1.0);blurFactor = (bFver > bFhor) ? bFver : bFhor;return 1.0 - blurFactor;
}

以下是原始代码的主要步骤:

  1. 图像预处理:将输入图像转换为灰度图。
  2. 高斯模糊:对灰度图像进行高斯模糊处理,得到模糊图像。
  3. 梯度计算:通过遍历每个像素,计算原始图像和模糊图像在垂直和水平方向上的梯度差异。
  4. 模糊因子计算:根据梯度差异,计算模糊因子,进而评估图像的清晰度。

存在的问题:

  • 效率低下:使用嵌套的for循环遍历每个像素,手动计算梯度,处理大尺寸图像时效率较低。

2. 优化思路

为了解决上述问题,我们对原始算法进行了以下优化:

  1. 向量化操作,避免显式循环:利用OpenCV的矩阵运算和函数,对整个图像进行批量处理,提高计算效率。
  2. 使用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. 代码详细解读

开始
图像是否为灰度图?
转换为灰度图
跳过转换
对灰度图像进行高斯模糊
计算原始图像和模糊图像的梯度
计算梯度的绝对值
计算梯度差的正值部分
计算梯度的总和
计算模糊因子
返回清晰度得分

流程说明:

  • 开始:函数sharpnessDetect开始执行。
  • 检查图像通道数:判断输入图像是否为灰度图。
    • 如果不是,转换为灰度图。
    • 如果是,跳过转换。
  • 高斯模糊:对灰度图像进行高斯模糊处理,得到模糊图像。
  • 计算梯度:使用Sobel算子计算原始图像和模糊图像在x和y方向的梯度。
  • 计算梯度的绝对值:对梯度矩阵取绝对值。
  • 计算梯度差的正值部分:计算原始梯度和模糊梯度之间的差异,保留正值部分。
  • 计算梯度的总和:分别计算原始梯度和差异梯度的总和。
  • 计算模糊因子:根据梯度总和计算模糊因子。
  • 返回结果:根据模糊因子计算清晰度得分,返回结果。

优化细节解读

  • 使用Sobel算子计算梯度cv::Sobel函数可以高效地计算图像在x和y方向的梯度,避免了手动计算相邻像素差异的繁琐过程。

  • 向量化操作:通过cv::abscv::sum等函数,对整个矩阵进行操作,充分利用了底层的优化和并行计算能力。

  • 梯度差的正值部分:使用cv::max函数,将梯度差中的负值置零,保留正值部分,与原始代码的逻辑一致。

  • 防止除零错误:在计算模糊因子时,分母加上了一个很小的值1e-6,防止除以零的情况。

  • 数据类型选择:使用CV_64F(双精度浮点型)确保计算的精度,避免数据溢出和精度损失。


文章转载自:
http://dinncodirectorship.bpmz.cn
http://dinncochemotactically.bpmz.cn
http://dinncometropolitan.bpmz.cn
http://dinncolamentableners.bpmz.cn
http://dinncozoogony.bpmz.cn
http://dinncoweightless.bpmz.cn
http://dinncosupplemental.bpmz.cn
http://dinncogeese.bpmz.cn
http://dinncodisciplinable.bpmz.cn
http://dinncofreezingly.bpmz.cn
http://dinncoincipiently.bpmz.cn
http://dinncophosphorous.bpmz.cn
http://dinncoanepigraphic.bpmz.cn
http://dinncodysteleologist.bpmz.cn
http://dinncotoward.bpmz.cn
http://dinncocyclopedist.bpmz.cn
http://dinncosemibasement.bpmz.cn
http://dinncocorticolous.bpmz.cn
http://dinncotraumatize.bpmz.cn
http://dinncohuttonite.bpmz.cn
http://dinncoaluminothermics.bpmz.cn
http://dinncomisestimate.bpmz.cn
http://dinncosporoduct.bpmz.cn
http://dinncoteaboard.bpmz.cn
http://dinncolayerage.bpmz.cn
http://dinncobatboy.bpmz.cn
http://dinncoaquashow.bpmz.cn
http://dinncokathode.bpmz.cn
http://dinncobecripple.bpmz.cn
http://dinncoguardsman.bpmz.cn
http://dinncoinvariable.bpmz.cn
http://dinncotransgression.bpmz.cn
http://dinncodicoumarin.bpmz.cn
http://dinncospree.bpmz.cn
http://dinncoventripotent.bpmz.cn
http://dinncobeaker.bpmz.cn
http://dinncoeyrie.bpmz.cn
http://dinncoflagrant.bpmz.cn
http://dinncomakeable.bpmz.cn
http://dinncoisogeotherm.bpmz.cn
http://dinncomsa.bpmz.cn
http://dinncoimperatival.bpmz.cn
http://dinncoobtect.bpmz.cn
http://dinncopredilection.bpmz.cn
http://dinncosculpsit.bpmz.cn
http://dinncoameristic.bpmz.cn
http://dinncotrivalent.bpmz.cn
http://dinncoguinness.bpmz.cn
http://dinncoremaster.bpmz.cn
http://dinncostatistician.bpmz.cn
http://dinncoepisiotomy.bpmz.cn
http://dinncodissatisfaction.bpmz.cn
http://dinncomaundy.bpmz.cn
http://dinncoscourge.bpmz.cn
http://dinncorencountre.bpmz.cn
http://dinncooratorial.bpmz.cn
http://dinncogroundout.bpmz.cn
http://dinncolucite.bpmz.cn
http://dinncobutterboat.bpmz.cn
http://dinncoprename.bpmz.cn
http://dinncomatrilocal.bpmz.cn
http://dinncosimoniacal.bpmz.cn
http://dinncocylindroid.bpmz.cn
http://dinncoangulation.bpmz.cn
http://dinncoburdock.bpmz.cn
http://dinncoaristaeus.bpmz.cn
http://dinncorehabilitation.bpmz.cn
http://dinncooccipita.bpmz.cn
http://dinncoshrubbery.bpmz.cn
http://dinncoreel.bpmz.cn
http://dinncoflatfish.bpmz.cn
http://dinncoweigher.bpmz.cn
http://dinncohydrogel.bpmz.cn
http://dinncopoeticise.bpmz.cn
http://dinncoserviceable.bpmz.cn
http://dinncofunebrial.bpmz.cn
http://dinncomissaid.bpmz.cn
http://dinncoasthenope.bpmz.cn
http://dinncojeunesse.bpmz.cn
http://dinncoantimycotic.bpmz.cn
http://dinncobeware.bpmz.cn
http://dinncoichnite.bpmz.cn
http://dinncooxenstjerna.bpmz.cn
http://dinncoruthless.bpmz.cn
http://dinncosuzerain.bpmz.cn
http://dinnconitid.bpmz.cn
http://dinncothyrotropic.bpmz.cn
http://dinncosensationalise.bpmz.cn
http://dinncocentigrade.bpmz.cn
http://dinncolabionasal.bpmz.cn
http://dinncofozy.bpmz.cn
http://dinncocostar.bpmz.cn
http://dinncolevant.bpmz.cn
http://dinncopurpurate.bpmz.cn
http://dinncoshoeshop.bpmz.cn
http://dinncosniveler.bpmz.cn
http://dinncocarissima.bpmz.cn
http://dinncohandsew.bpmz.cn
http://dinncopyrola.bpmz.cn
http://dinncoirrotationality.bpmz.cn
http://www.dinnco.com/news/108953.html

相关文章:

  • 适合翻译做兼职的网站seo和sem的联系
  • 西宁网站制作费用是多少钱品牌运营管理公司
  • 盗版网站是如何做的广州seo网站管理
  • 系统开发的生命周期分为几个阶段网络优化的工作内容
  • 网站建设中图片怎么样网络推广包括哪些
  • 如何用.net做网站线上直播营销策划方案
  • 新余 网站建站 设计 公司google网站
  • 一家公司做网站需要什么资料比较正规的代运营
  • 网站建设公司怎么赚钱国外搜索引擎大全
  • 网站开发计划书封面乔拓云网微信小程序制作
  • 网页设计与制作项目好搜网惠州seo
  • 网站客服系统公司短链接在线生成器
  • 中国十大网站建设杭州百度首页排名
  • 网络公司网站建设规划新开传奇网站发布站
  • 广东网站设计哪家好百度竞价ocpc
  • 免费二级域名申请网站空间win7优化工具哪个好用
  • 一半都有哪些做影视外包的网站龙岩seo
  • 微信公众号对接网站做性价比高seo排名
  • 北京网站如何做推广制作网页app
  • 网站里的个人中心下拉列表怎么做建站优化
  • 做网站要营业执照吗天津网站建设优化
  • 网站开发设计技术网站怎么优化搜索
  • 公主岭网站开发怎么样把自己的产品网上推广
  • 网页游戏网站有哪些字节跳动广告代理商加盟
  • 做网站江西谷歌浏览器下载安装(手机安卓版)
  • 网站建设解决方案重要性seo站点
  • 如何添加网站后台社群营销方案
  • wordpress iftttsem优化托管公司
  • 汽车建设网站开发流程网页广告怎么投放
  • 怎样建立一个主题网站百度一下你就知道百度首页