给YUV视频加入椒盐噪声

2024-04-07 07:08
文章标签 视频 加入 噪声 yuv 椒盐

本文主要是介绍给YUV视频加入椒盐噪声,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

你可以按帧读入yuv视频。然后每帧图像加入椒盐噪声,然后按帧保存成yuv视频就可以了啊。 
%对YUV格式文件信息按帧读入并进行下采样后保存
%注:此次处理的YUV文件的Y、U、V分量是分开处理的。但读入时是按4:2:2比例处理的
%对yuv文件存储时候使用的是平面格式而不是打包格式
function YUVSubsample(filename,frameNumMax,formatT,method,outputFileName)
clc;
clear;
%考虑到调用函数时未输入参数,则赋以默认参数值
if nargin==0frameNumMax = 16;         %读取的yuv的帧数:考虑到上采样的问题,此处应比最后输出的视频帧多一帧formatT = 'cif';          %yuv格式文件类型method = 'paper';         %yuv文件的下采样方法filename = 'coast_cif.yuv';%yuv格式文件名outputFileName = 'salt_pepper_coast_cif.yuv';  %yuv文件下采样后以另外一个名字保存
end
% 初始化帧格式
switch formatTcase 'qcif'H = 144;   % 高W = 176;   % 宽case 'cif'H = 288;   % 高W = 352;   % 宽otherwiseH = 480;   % 高W = 720;   % 宽
end%按帧读入yuv文件并按帧处理后保存为yuv格式的文件
for  frameNum = 1:frameNumMax% 读取yuv格式某指定帧的文件内容[Y U V]为读入的某帧的原始数据[Y,U,V]=yuv_import(filename,[W,H],1,frameNum);% 按指定下采样方法进行下采样处理:[YI UI VI]为下采样后的数据%在此处对加入椒盐噪声处理Y = imnoise(uint8(Y),'salt & pepper',0.005);U = imnoise(uint8(U),'salt & pepper',0.005);V = imnoise(uint8(V),'salt & pepper',0.005);%分别显示Y、U、V分量subplot(1,3,1),imshow(uint8(Y));subplot(1,3,2),imshow(uint8(U));subplot(1,3,3),imshow(uint8(V));%将下采样后的[YI UI VI]数据输出,保存为指定文件名的yuv格式yuv_output(outputFileName,Y,U,V,1,frameNum);%播放每帧图像时暂停1/1000spause(1/1000);
end%读取yuv格式某指定帧的文件内容[Y U V]为读入的某帧的原始数据:实际上yuv的某帧文件就是一幅图片
function [Y,U,V]=yuv_import(filename,dims,numfrm,startfrm)%以只读的方式打开并关联文件fid=fopen(filename,'r');if (fid < 0)error('File does not exist!');end;%计算每帧文件的大小,计算读取某指定帧的文件偏移位置Yd = zeros(dims(1),dims(2));UVd = zeros(dims(1)/2,dims(2)/2);   %UV分量的位置frelem = numel(Yd) + 2*numel(UVd);  %视频图像显示的宽度if (nargin == 4)                    %从文件起始位置计算偏移量fseek(fid, startfrm * frelem , 0);end;%初始化Y、U、V分量,YUV文件格式为:4:2:2Y=zeros(dims(2),dims(1),numfrm);U=zeros(dims(2)/2,dims(1)/2,numfrm);V=zeros(dims(2)/2,dims(1)/2,numfrm);%分别读入YUV分量for i=1:numfrmYd = fread(fid,[dims(1) dims(2)],'uint8'); Y = Yd';      %转置UVd = fread(fid,[dims(1)/2 dims(2)/2],'uint8');U = UVd';     %转置UVd = fread(fid,[dims(1)/2 dims(2)/2],'uint8');V = UVd';     %转置end;%关闭文件并去掉关联fclose(fid);%将下采样后的[YI UI VI]数据输出,保存为指定文件名的yuv格式
function yuv_output(outputFileName,YI,UI,VI,numfrm,startfrm)%判断是否是第一帧即刚开始输入。如果是第一次输入则将原有同名文件覆盖否则在文件后追加信息if startfrm==1fileId=fopen(outputFileName,'w');elsefileId=fopen(outputFileName,'a');endif (fileId < 0)error('File does not exist!');end;%[YI UI VI]数据取下整YI = round(YI);UI = round(UI);VI = round(VI);%计算每个分量大小,计算每帧图像输出时文件的偏移位置Yd = size(YI);  %Y分量的位置Ud = size(UI);  %U分量的位置Vd = size(VI);  %V分量的位置frelem = Yd(1)*Yd(2) + Ud(1)*Ud(2) + Vd(1)*Vd(2); %视频图像显示的宽度if (nargin == 4)%从文件起始位置计算偏移量fseek(fid, startfrm * frelem , 0);end;%输出YI,UI,VI分量信息fwrite(fileId, YI', 'uint8');fwrite(fileId, UI', 'uint8');fwrite(fileId, VI', 'uint8');%关闭文件并去掉关联fclose(fileId);

这篇关于给YUV视频加入椒盐噪声的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/881949

相关文章

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开

Python实现视频转换为音频的方法详解

《Python实现视频转换为音频的方法详解》这篇文章主要为大家详细Python如何将视频转换为音频并将音频文件保存到特定文件夹下,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5. 注意事项

Window Server2016加入AD域的方法步骤

《WindowServer2016加入AD域的方法步骤》:本文主要介绍WindowServer2016加入AD域的方法步骤,包括配置DNS、检测ping通、更改计算机域、输入账号密码、重启服务... 目录一、 准备条件二、配置ServerB加入ServerA的AD域(test.ly)三、查看加入AD域后的变

Python视频处理库VidGear使用小结

《Python视频处理库VidGear使用小结》VidGear是一个高性能的Python视频处理库,本文主要介绍了Python视频处理库VidGear使用小结,文中通过示例代码介绍的非常详细,对大家的... 目录一、VidGear的安装二、VidGear的主要功能三、VidGear的使用示例四、VidGea

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试