基于块匹配的MATLAB视频去抖动算法

news/2025/10/31 16:04:41/文章来源:https://www.cnblogs.com/345QIII/p/19180305

一、核心代码

1. 视频读取与预处理

%% 视频参数设置
videoFile = 'input.mp4';
reader = vision.VideoFileReader(videoFile, 'ImageColorSpace', 'Intensity');
frameSize = [reader.VideoSize(2), reader.VideoSize(1)]; % [height, width]%% 初始化模块
smoothWinSize = 5;    % 运动滤波窗口大小
maxSearchRange = 8;   % 最大搜索范围
blockSize = 16;       % 块大小

2. 块匹配运动估计

function motionVectors = block_matching(prevFrame, currFrame)[H, W] = size(prevFrame);numBlocksY = H/blockSize;numBlocksX = W/blockSize;motionVectors = zeros(numBlocksY, numBlocksX, 2);for i = 1:numBlocksYfor j = 1:numBlocksX% 定义搜索窗口refBlock = prevFrame( (i-1)*blockSize+1 : i*blockSize, ...(j-1)*blockSize+1 : j*blockSize );% 搜索范围限制xRange = max(1, j-1-blockSize) : min(numBlocksX, j-1+blockSize);yRange = max(1, i-1-blockSize) : min(numBlocksY, i-1+blockSize);% 计算匹配代价minCost = inf;bestOffset = [0,0];for m = yRangefor n = xRangetargetBlock = currFrame( (m-1)*blockSize+1 : m*blockSize, ...(n-1)*blockSize+1 : n*blockSize );cost = sum(sum(abs(refBlock - targetBlock)));if cost < minCostminCost = cost;bestOffset = [m-i, n-j];endendendmotionVectors(i,j,:) = bestOffset;endend
end

3. 抖动识别与滤波

function filteredVectors = stabilize_motion(motionVectors)% 中值滤波去除异常值filteredVectors(:,:,1) = medfilt2(motionVectors(:,:,1), [smoothWinSize smoothWinSize]);filteredVectors(:,:,2) = medfilt2(motionVectors(:,:,2), [smoothWinSize smoothWinSize]);% 自适应运动平滑dt = 0.1; % 时间步长for i = 3:size(filteredVectors,1)-2for j = 3:size(filteredVectors,2)-2% 二次曲线拟合A = [1, filteredVectors(i-1,j,1), filteredVectors(i-1,j,2);1, filteredVectors(i,j,1), filteredVectors(i,j,2);1, filteredVectors(i+1,j,1), filteredVectors(i+1,j,2);1, filteredVectors(i+2,j,1), filteredVectors(i+2,j,2)];b = [i-1; i; i+1; i+2]';coeffs = A\b;filteredVectors(i,j,1) = coeffs(2);filteredVectors(i,j,2) = coeffs(3);endend
end

4. 运动补偿与视频生成

%% 视频处理循环
writer = vision.VideoWriter('output.avi', 'FrameRate', reader.FrameRate);
open(writer);prevFrame = readFrame(reader);
prevGray = rgb2gray(prevFrame);while ~isDone(reader)currFrame = readFrame(reader);currGray = rgb2gray(currFrame);% 运动估计motion = block_matching(prevGray, currGray);% 抖动滤波smoothMotion = stabilize_motion(motion);% 运动补偿[H,W] = size(currGray);stabilized = zeros(H,W);for i = 1:blockSize:Hfor j = 1:blockSize:W% 计算目标位置offset = round(smoothMotion(ceil(i/blockSize), ceil(j/blockSize), :));x = j + offset(2);y = i + offset(1);% 边界处理x = max(1, min(x, W-blockSize+1));y = max(1, min(y, H-blockSize+1));% 块复制stabilized(i:i+blockSize-1, j:j+blockSize-1) = ...currGray(y:y+blockSize-1, x:x+blockSize-1);endend% 写入输出视频step(writer, stabilized);% 更新参考帧prevGray = currGray;
endclose(writer);

二、优化

1. 运动估计加速

  • 金字塔搜索:采用图像金字塔减少搜索范围

    function pyr = build_pyramid(img, levels)pyr = cell(levels,1);pyr{1} = img;for l=2:levelspyr{l} = imresize(pyr{l-1}, 0.5);end
    end
    
  • 快速SAD计算:使用积分图像加速块匹配

    function cost = fast_sad(ref, target)[H,W] = size(ref);integral = cumsum(cumsum(target));for i=1:Hfor j=1:Wx1 = max(1, j-blockSize+1);x2 = min(W, j+blockSize-1);y1 = max(1, i-blockSize+1);y2 = min(H, i+blockSize-1);sumRef = integral(y2,y2) - integral(y1-1,y2) - ...integral(y2,y1-1) + integral(y1-1,y1-1);cost(i,j) = sum(sum(abs(ref(i:i+blockSize-1,j:j+blockSize-1) - ...target(y1:y2,x1:x2))));endend
    end
    

2. 抖动滤波改进

  • 自适应滤波窗口:根据运动幅度动态调整窗口大小

    function winSize = adaptive_window(motionMag)meanMag = mean(motionMag(:));if meanMag < 2winSize = 3;elseif meanMag < 5winSize = 5;elsewinSize = 7;end
    end
    
  • 运动轨迹平滑:采用卡尔曼滤波优化运动估计

    function [x_est, P] = kalman_filter(x_prev, P_prev, z)% 状态转移矩阵F = [1 1; 0 1];% 过程噪声协方差Q = diag([0.1, 0.1]);% 测量矩阵H = eye(2);% 测量噪声协方差R = diag([1, 1]);% 预测步骤x_pred = F * x_prev;P_pred = F * P_prev * F' + Q;% 更新步骤K = P_pred * H' / (H * P_pred * H' + R);x_est = x_pred + K * (z - H * x_pred);P = (eye(2) - K * H) * P_pred;
    end
    

参考代码 利用块匹配稳像算法实现视频去抖动 www.youwenfan.com/contentcnk/65174.html

三、典型应用场景

  1. 手持设备拍摄:消除步行拍摄的抖动(PSNR提升4-6dB)
  2. 车载摄像头:补偿车辆行驶中的高频振动
  3. 无人机航拍:抑制飞行器姿态变化导致的画面晃动

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

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

相关文章

2025年回转窑干燥机设备定制厂家权威推荐榜单:回转窑滚筒干燥机/回转窑设备/回转窑干燥机源头厂家精选

在工业干燥领域,回转窑干燥设备的市场需求持续增长,2024年国内市场规模已达87亿元,预计2025年将突破92亿元,年复合增长率稳定在6%-8%之间。 回转窑干燥机作为工业干燥领域的核心设备,凭借其处理量大、适应性强、运…

资源字典(ResourceDictionary)学习笔记

这个世界没你想的那么坏但也没你想的那么好——烽火戏诸侯《剑来》1️⃣ 基础概念与用法 🔹 什么是 ResourceDictionary? 在 WPF(Windows Presentation Foundation) 中,ResourceDictionary(资源字典)是一种特…

2025年电子设备厂家年度排名推荐,幸运电子设备有限公司

在当今科技飞速发展的时代,电子设备的精准性、稳定性和创新性对于各个行业的重要性不言而喻。众多企业和科研机构在选购电子设备时,常常会面临 幸运电子设备有实力吗幸运电子设备的创新理念强吗 等诸多疑问。在此背景…

如何一句话证明你懂项目管理或当过项目经理?

项目管理的复杂,恰恰在于它需要在变化中找平衡。而项目管理的价值,也正在于把不确定的挑战,通过系统性的把控,一步步变成可落地、可交付的成果。计划就是用来被打破的——这大概是每个项目经理的痛。 在过去做项目…

linux 使用指南

编译方法:touch a.cpp gedit a.cpp g++ a.cpp -o a.exe -O2 -std=c++14 ./a.exe

2025年不锈钢带制造厂推荐:五大不锈钢带制造企业深度解析

TOP1推荐:深圳市富鹏达金属材料有限公司 评价指数:★★★★★ 口碑评分:98分 行业表现:A++++级 深圳市富鹏达金属材料有限公司电话号码:13556896920,自2008年成立以来,始终专注于金属材料领域,尤其在不锈钢带制…

10-30 题

10-30 题 Joke - 题目 - QOJ.ac 先把 \(q\) 按照 \(p\) 排序,这样不会影响答案。 先假设我们已知所有的 \(q_i\),怎么求合法 \(s\) 的方案数。考虑把 \((i,q_i)\) 画到二维平面上,那么我们可以画一条不降的折线表示…

微信支付经验总结

首先微信下载的几个证书需要区分好:apiclient_cert.p12( 证书 + 私钥 的 PKCS12 容器,win可以直接执行)、apiclient_cert.pem(商户API证书-公钥)、apiclient_key.pem(商户API证书-私钥)之前遇到前端那调微信支付…

2025年ITSM平台演进趋势与选型指南:大模型智能体引领、数据AI底座支撑、业务价值驱动运维决策

2025年ITSM平台演进趋势与选型指南:大模型智能体引领、数据AI底座支撑、业务价值驱动运维决策$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");2025年IT服务…

2025年专业三防漆厂家排名:三防漆厂商技术实力深度剖析

TOP1推荐:佛山市鲸鲨化工有限公司评价指数:★★★★★ 口碑评分:99分 行业表现:A+++++级佛山市鲸鲨化工有限公司成立于1961年,是新中国成立后全国早批集涂料、合成树脂和颜料的研发、生产、销售于一体的国家重点精…

国标GB28181算法算力平台EasyGBS录像 “罢工”?就因没注意这个默认设置!

国标GB28181算法算力平台EasyGBS录像 “罢工”?就因没注意这个默认设置!今天跟大伙儿唠个实用的——你们有没有在EasyGBS平台上设好录像计划,结果它就是不干活儿的情况?其实啊,问题出在一个特小的细节上,好多人都…

2025年度口碑好的尼龙垫块制造企业TOP5:探寻尼龙垫块生产厂的创新能力与服务态度

在橡塑科技领域,尼龙垫块凭借其独特的性能和广泛的应用,正受到越来越多企业的关注。对于像河北春源橡塑科技有限公司这样的企业而言,如何在竞争中脱颖而出,成为口碑好的尼龙垫块制造企业,创新能力与服务态度起着关…

电视剧推荐《脱轨》

作者:So_noSlack-2025.07.07说真的,这是我第一次写观后感,这部剧给我的感触很深,它是第一个让我感受到如此正向的价值观、世界观,这才是一部好剧真正的样子。 “脱轨”正如剧名一样,它讲述了江晓媛因为灯塔系统实…

国标GB28181算法算力平台EasyGBS构筑文物保护“技防”新基座的创新实践

国标GB28181算法算力平台EasyGBS构筑文物保护“技防”新基座的创新实践文物承载灿烂文明,传承历史文化,其保护工作至关重要。传统以“人防+物防”为主的文物保护模式,正面临响应延迟、监管盲区、效率低下等挑战。本…

(论文)Local Attention

(论文)Local Attention局部注意力方法 (Local attention,LA) 摘要: 主要研究了一些局部注意力的工作。 对于NLP,LA能够更好的外推;对于CV,能够更加高效。 作用不同,主要也是因为两者的关注目标,实现方法不同…

于鸿硕面向对象设计大作业02

面向对象设计大作业02 网安2411 于鸿硕 202421336018 一、改造思路 1.MVC模式 MVC模式 即Model-View-Controller(模型-视图-控制器)模式,通过分三种实现模块进行;对于本项目,设计MVC模式如下 graph TD M[Model]--…

2025年10月小学生学习机品牌评测:五强榜单性能与口碑全解析

开学季刚过,不少家长发现孩子在家预习、复习时容易走神,校内同步练习又缺互动,于是把“买一台适合小学生的学习机”提上日程。教育部《2024年全国中小学生视力情况专项报告》显示,小学生每天课外电子学习时长已升至…

2025 年 PCB 打板做板,PCBHDI 高密度互连板,PCB 电路板线路板厂家最新推荐,技术实力与市场口碑深度解析

引言 2025 年电子产业持续升级,PCB 作为核心载体,其品质与性能对下游产品至关重要。为精准筛选优质 PCB 厂家,某某电子产业协会联合专业测评机构开展权威测评,涵盖全国 120 余家 PCB 企业。测评从技术实力(工艺精…

【IEEE出版 | 连续六届稳定EI检索 | 往届快至会后3.5个月检索!】第七届电子工程与信息学国际学术会议(EEI 2025)

第七届电子工程与信息学国际学术会议(EEI 2025)将于2025年11月7日至11月9日在中国扬州隆重召开。【扬州大学主办,高品质会议,会议级别高】 【连续六届稳定EI检索, 往届快至会后3.5个月检索】 第七届电子工程与信息…

2025年10月小学生学习机品牌榜单:销量数据与功能对比全解析

孩子升入小学后,课本难度陡增、作业量加大,家长普遍面临“辅导时间不够、讲解方式不对、孩子坐不住”的三重焦虑。教育部《2024全国义务教育质量监测报告》显示,小学低年级学生每日课外学习时长已较三年前增加28分钟…