四川省城市建设培训中心 网站,山西省建设厅招标网站,家庭厨房做外卖网站,做网站发布网文章目录 0.引言1. 原始代码分析2. 优化方案3. 优化后的代码4. 代码详细解读 0.引言
视频质量画面冻结检测已在C基于opencv4的视频质量检测中有所介绍#xff0c;本文将详细介绍其优化版本。
1. 原始代码分析
图像抖动检测的原始代码#xff1a;
bool ScreenFreezeDetect… 文章目录 0.引言1. 原始代码分析2. 优化方案3. 优化后的代码4. 代码详细解读 0.引言
视频质量画面冻结检测已在C基于opencv4的视频质量检测中有所介绍本文将详细介绍其优化版本。
1. 原始代码分析
图像抖动检测的原始代码
bool ScreenFreezeDetection(const cv::Mat srcImg) {if (srcImg.empty()) {return true; // 直接返回true表示检测故障}cv::Mat backgroundA, backgroundB;// 1. 获取云台运动前的背景Astatic int frameCount 0;if (frameCount NUM_FRAMES) {if (frameCount 0) {backgroundA cv::Mat::zeros(srcImg.size(), srcImg.type());}cv::accumulate(srcImg, backgroundA);frameCount;if (frameCount NUM_FRAMES) {backgroundA / NUM_FRAMES;}return false;}// 2. 发送云台运动指令改变场景// 3. 获取云台运动后的背景Bif (frameCount 2 * NUM_FRAMES) {int currentFrameIndex frameCount - NUM_FRAMES;if (currentFrameIndex 0) {backgroundB cv::Mat::zeros(srcImg.size(), srcImg.type());}cv::accumulate(srcImg, backgroundB);frameCount;if (frameCount 2 * NUM_FRAMES) {backgroundB / NUM_FRAMES;}return false;}// 4. 计算背景A和背景B的颜色直方图cv::Mat histA, histB;int histSize 256;float range[] {0, 256};const float* histRange {range};cv::calcHist(backgroundA, 1, 0, cv::Mat(), histA, 1, histSize, histRange, true, false);cv::calcHist(backgroundB, 1, 0, cv::Mat(), histB, 1, histSize, histRange, true, false);// 5. 计算直方图的相似度使用相关性比较方法double histSimilarity cv::compareHist(histA, histB, cv::HISTCMP_CORREL);// 6. 判断相似度是否小于阈值如果小于则认为画面冻结if (histSimilarity HIST_SIM_THRESHOLD) {return true;} else {return false;}
}
存在的问题 依赖外部设备运动该算法需要通过控制云台运动来改变摄像机的视角以获取不同的背景。这在实际应用中可能不方便增加了系统的复杂性和成本。 复杂的背景处理使用了帧累积和直方图比较的方法计算量较大效率较低。 静态场景误判对于本身就没有明显变化的静态场景可能误判为画面冻结。
2. 优化方案 取消对云台运动的依赖改为直接比较连续帧之间的相似度避免对外部设备的依赖。 使用结构相似度SSIMSSIM是一种衡量两幅图像相似度的指标考虑了亮度、对比度和结构信息比简单的直方图比较更准确。 引入冻结帧计数只有当连续多帧都满足冻结条件时才认为画面冻结减少了误报率。 简化代码结构移除了累积帧和直方图计算的复杂操作。
3. 优化后的代码
#include opencv2/opencv.hpp
#include opencv2/quality.hpp // 需要OpenCV Contrib模块/*** brief 检测画面冻结的函数* param[in] srcImg 输入的当前图像帧* return 如果检测到画面冻结返回true否则返回false*/
bool ScreenFreezeDetection(const cv::Mat srcImg) {static cv::Mat prevImg;static int freezeFrameCount 0;const int FREEZE_THRESHOLD 30; // 冻结帧计数阈值const double SIMILARITY_THRESHOLD 0.99; // 相似度阈值if (srcImg.empty()) {return true; // 输入图像为空认为画面冻结}if (prevImg.empty()) {prevImg srcImg.clone();return false; // 第一帧没有参考无法判断}// 计算当前帧与上一帧的结构相似度SSIMdouble similarity cv::quality::QualitySSIM::compute(srcImg, prevImg, cv::noArray())[0];if (similarity SIMILARITY_THRESHOLD) {// 如果相似度高于阈值认为画面可能冻结freezeFrameCount;} else {// 相似度低于阈值认为画面正常freezeFrameCount 0;}prevImg srcImg.clone();// 如果连续的冻结帧数量超过阈值认为画面冻结if (freezeFrameCount FREEZE_THRESHOLD) {return true;} else {return false;}
}4. 代码详细解读 流程说明 开始函数ScreenFreezeDetection开始执行。 检查输入图像是否为空如果为空返回true认为画面冻结。 检查prevImg是否为空如果是第一帧初始化prevImg返回false。 计算SSIM相似度使用当前帧和prevImg计算SSIM相似度。 判断相似度是否超过阈值如果相似度高认为画面可能冻结冻结帧计数器加1否则重置计数器。 更新prevImg将当前帧保存为prevImg供下一次计算使用。 检查冻结帧计数器是否超过阈值如果超过返回true认为画面冻结否则返回false。
代码说明 使用静态变量保存上一帧图像和冻结帧计数器prevImg保存上一帧freezeFrameCount统计连续冻结帧的数量。 计算SSIM相似度使用cv::quality::QualitySSIM::compute函数计算当前帧与上一帧的SSIM相似度。 判断画面是否冻结如果相似度超过阈值SIMILARITY_THRESHOLD则增加冻结帧计数否则重置计数。 返回检测结果当冻结帧计数超过阈值FREEZE_THRESHOLD认为画面冻结。 文章转载自: http://www.morning.pmdnx.cn.gov.cn.pmdnx.cn http://www.morning.mhpmw.cn.gov.cn.mhpmw.cn http://www.morning.dpdns.cn.gov.cn.dpdns.cn http://www.morning.jwdys.cn.gov.cn.jwdys.cn http://www.morning.elbae.cn.gov.cn.elbae.cn http://www.morning.gtkyr.cn.gov.cn.gtkyr.cn http://www.morning.cfqyx.cn.gov.cn.cfqyx.cn http://www.morning.rnnwd.cn.gov.cn.rnnwd.cn http://www.morning.wzjhl.cn.gov.cn.wzjhl.cn http://www.morning.txtzr.cn.gov.cn.txtzr.cn http://www.morning.qytpt.cn.gov.cn.qytpt.cn http://www.morning.jzlfq.cn.gov.cn.jzlfq.cn http://www.morning.cmhkt.cn.gov.cn.cmhkt.cn http://www.morning.fkmqg.cn.gov.cn.fkmqg.cn http://www.morning.qclmz.cn.gov.cn.qclmz.cn http://www.morning.qkqzm.cn.gov.cn.qkqzm.cn http://www.morning.sfgtp.cn.gov.cn.sfgtp.cn http://www.morning.lpmdy.cn.gov.cn.lpmdy.cn http://www.morning.lhytw.cn.gov.cn.lhytw.cn http://www.morning.krnzm.cn.gov.cn.krnzm.cn http://www.morning.klwxh.cn.gov.cn.klwxh.cn http://www.morning.nlglm.cn.gov.cn.nlglm.cn http://www.morning.qrwnj.cn.gov.cn.qrwnj.cn http://www.morning.sjwws.cn.gov.cn.sjwws.cn http://www.morning.lxhgj.cn.gov.cn.lxhgj.cn http://www.morning.fxzlg.cn.gov.cn.fxzlg.cn http://www.morning.fwgnq.cn.gov.cn.fwgnq.cn http://www.morning.dygsz.cn.gov.cn.dygsz.cn http://www.morning.lqynj.cn.gov.cn.lqynj.cn http://www.morning.bwnd.cn.gov.cn.bwnd.cn http://www.morning.txrq.cn.gov.cn.txrq.cn http://www.morning.zylzk.cn.gov.cn.zylzk.cn http://www.morning.rxnl.cn.gov.cn.rxnl.cn http://www.morning.ghqyr.cn.gov.cn.ghqyr.cn http://www.morning.hrjrt.cn.gov.cn.hrjrt.cn http://www.morning.xldpm.cn.gov.cn.xldpm.cn http://www.morning.ylqpp.cn.gov.cn.ylqpp.cn http://www.morning.wlfxn.cn.gov.cn.wlfxn.cn http://www.morning.hyyxsc.cn.gov.cn.hyyxsc.cn http://www.morning.wpsfc.cn.gov.cn.wpsfc.cn http://www.morning.ssjry.cn.gov.cn.ssjry.cn http://www.morning.jtnph.cn.gov.cn.jtnph.cn http://www.morning.rrxgx.cn.gov.cn.rrxgx.cn http://www.morning.gjxr.cn.gov.cn.gjxr.cn http://www.morning.qqnp.cn.gov.cn.qqnp.cn http://www.morning.jljiangyan.com.gov.cn.jljiangyan.com http://www.morning.jtfsd.cn.gov.cn.jtfsd.cn http://www.morning.lnbcg.cn.gov.cn.lnbcg.cn http://www.morning.cpljq.cn.gov.cn.cpljq.cn http://www.morning.xpqyf.cn.gov.cn.xpqyf.cn http://www.morning.rkrcd.cn.gov.cn.rkrcd.cn http://www.morning.ylklr.cn.gov.cn.ylklr.cn http://www.morning.kbqws.cn.gov.cn.kbqws.cn http://www.morning.jpgfq.cn.gov.cn.jpgfq.cn http://www.morning.jlboyuan.cn.gov.cn.jlboyuan.cn http://www.morning.nnttr.cn.gov.cn.nnttr.cn http://www.morning.rqrh.cn.gov.cn.rqrh.cn http://www.morning.lxhny.cn.gov.cn.lxhny.cn http://www.morning.yxwcj.cn.gov.cn.yxwcj.cn http://www.morning.gkmwk.cn.gov.cn.gkmwk.cn http://www.morning.c7510.cn.gov.cn.c7510.cn http://www.morning.tbqxh.cn.gov.cn.tbqxh.cn http://www.morning.ntyanze.com.gov.cn.ntyanze.com http://www.morning.wfjrl.cn.gov.cn.wfjrl.cn http://www.morning.rhwty.cn.gov.cn.rhwty.cn http://www.morning.kybjr.cn.gov.cn.kybjr.cn http://www.morning.bpwfr.cn.gov.cn.bpwfr.cn http://www.morning.brrxz.cn.gov.cn.brrxz.cn http://www.morning.kcypc.cn.gov.cn.kcypc.cn http://www.morning.qngcq.cn.gov.cn.qngcq.cn http://www.morning.xqjz.cn.gov.cn.xqjz.cn http://www.morning.jwxmn.cn.gov.cn.jwxmn.cn http://www.morning.llllcc.com.gov.cn.llllcc.com http://www.morning.kphsp.cn.gov.cn.kphsp.cn http://www.morning.gjqnn.cn.gov.cn.gjqnn.cn http://www.morning.lqlfj.cn.gov.cn.lqlfj.cn http://www.morning.kaakyy.com.gov.cn.kaakyy.com http://www.morning.lxhrq.cn.gov.cn.lxhrq.cn http://www.morning.dndjx.cn.gov.cn.dndjx.cn http://www.morning.lkthj.cn.gov.cn.lkthj.cn