通过上一章节的学习相信大家已经掌握了一些小的技巧
在看本章节之前你应该掌握以下技能

  1. 给按钮添加回调函数
  2. 修改axes框和按钮的属性,包括tag属性和string属性
  3. 你要可以打开gui编程的界面

如果不会以上技能的童鞋请看上一章节的内容
https://blog.csdn.net/gjggj/article/details/79115121
现在正式实现这个项目:
首先拖出一个下图的界面:

第一个axses框的tag属性改为before第二个axses框的属性改为after
去噪按钮的string属性改为“去噪”,tag属性改为load
下一张按钮的string属性改为“下一个”,tag属性改为next
上一张按钮的string属性改为“上一个”,tag属性改为prev

第二步
在matlab保存脚本的文件夹,一般是bin目录里新建两个空文件夹,分别是new和old;
程序运行结束后new保存了去噪后的视频和每一帧的图像,old保存了去噪后的视频和每一帧的图像

第三步
相应的按钮添加回调函数如下:

去噪按钮的回调函数

function load_Callback(hObject, eventdata, handles)
% hObject    handle to load (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
[filename,pathname]=uigetfile({'*.*';'*.avi';'*.mp4';'*.flv';},'选择视频');
%将im定义成全局变量,这样在代码的任何位置都可以使用im了。
%如果没有输入路径,则弹出错误对话框
if isequal(filename,0)||isequal(pathname,0)errordlg('您还没有选择视频!!','程序员哥哥告诉你');return;
else%合成路径+文件名global PA;global im;path=[pathname,filename];PA=path;%读取图像videoRead = VideoReader(PA);%打开坐标,方便操作nFrameRead = videoRead.NumberOfFrames;% 帧的总数for i = 1 : nFrameRead;   %对每帧图像做空间域滤波处理%命名 jpg默认为YCbCr通道strtemp = strcat('old//F_new',int2str(i),'.','jpg');F_new = read(videoRead,i);%  F_new=medfilt2(F)imwrite(F_new,strtemp,'JPG');       % 将图片序列保存为图片文件endvideoRead = VideoReader(path);%打开坐标,方便操作nFrameRead = videoRead.NumberOfFrames;% 帧的总数for i = 1 : nFrameRead;   %对每帧图像做空间域滤波处理%命名 jpg默认为YCbCr通道strtemp = strcat('new//F_new',int2str(i),'.','jpg');F = read(videoRead,i);%  F_new=medfilt2(F)%   F_new = imnoise(F,'speckle',0.1); %给图像加入噪声 0.4为可以修改的参数Y = F(:,:,1);                       %获得图像的三个通道的灰度值Cb = F(:,:,2);Cr = F(:,:,3);F_Y=medfilt2(Y,[3 3]);             %对图像进行中值滤波处理F_Cb=medfilt2(Cb,[3 3]);F_Cr=medfilt2(Cr,[3 3]);F_new = cat(3,F_Y,F_Cb,F_Cr);      %将三个通道联结在一起 cat函数imwrite(F_new,strtemp,'JPG');       % 将图片序列保存为图片文件end
end
myobj = VideoWriter('new//result.avi');     % 新建一个视频文件
myobj.FrameRate =25;               % 定义每秒的帧数
open(myobj);                           % 打开视频文件
for i = 1:nFrameRead;                  % 将图像重新生成视频文件fname = strcat('new//F_new',num2str(i),'.jpg');im = imread(fname);writeVideo(myobj,im);
end

下一个按钮的回调函数:

function next_Callback(hObject, eventdata, handles)
% hObject    handle to next (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)persistent j;
if isempty(j)j=0;
end
global i;
i=j;
j=j+2;
fname = strcat('old//F_new',num2str(j),'.jpg');
im = imread(fname);
set(handles.before,'HandleVisibility','ON');
%使用图像,操作在坐标before里
axes(handles.before);
%在坐标图before里显示原图像
imshow(im);
fname = strcat('new//F_new',num2str(j),'.jpg');
af = imread(fname);
set(handles.after,'HandleVisibility','ON');
%使用图像,操作在坐标before里
axes(handles.after);
%在坐标图before里显示原图像
imshow(af);

上一个按钮的回调函数:

function prev_Callback(hObject, eventdata, handles)
% hObject    handle to prev (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
persistent j;
global i;
if isempty(j)j=i;
end
j=j-2;
if j<=0j=1;
end
fname = strcat('old//F_new',num2str(j),'.jpg');
im = imread(fname);
set(handles.before,'HandleVisibility','ON');
%使用图像,操作在坐标before里
axes(handles.before);
%在坐标图before里显示原图像
imshow(im);
fname = strcat('new//F_new',num2str(j),'.jpg');
af = imread(fname);
set(handles.after,'HandleVisibility','ON');
%使用图像,操作在坐标before里
axes(handles.after);
%在坐标图before里显示原图像
imshow(af);

恭喜你完成本项目,如有其它问题请在下面留言与我交流
留个思考题,如何做到上面两个axses框是每一帧图片的对比,下面是去噪前后两个视频的对比?(下一篇博客揭晓答案)
如下图:

matlab实现视频图像去噪完成篇相关推荐

  1. android硬编码封装mp4,【Android 音视频开发打怪升级:音视频硬解码篇】四、音视频解封和封装:生成一个MP4...

    [声 明] 首先,这一系列文章均基于自己的理解和实践,可能有不对的地方,欢迎大家指正. 其次,这是一个入门系列,涉及的知识也仅限于够用,深入的知识网上也有许许多多的博文供大家学习了. 最后,写文章过程 ...

  2. matlab aviobj,MATLAB AVI 视频读取处理

    MATLAB AVI 视频读取处理 1.用matlab读取avi视频(只能读一定压缩各式的avi 电影,这是因为avi视频文件的编码 有很多,而matlab只支持部分编码格式.可见 http://ww ...

  3. matlab 细化函数,MATLAB图像处理工具箱函数(细化篇).doc

    MATLAB图像处理工具箱函数(细化篇) 第3章 MATLAB数字图像处理工具箱 3.1 MATLAB图像预处理 3.1.1 图像处理的基本操作 1. 读入并显示一幅图像 clear %清除所有的工作 ...

  4. ECCV 2020 论文大盘点-视频目标分割篇

    本文盘点 ECCV 2020 中所有视频目标分割(Video Object Segmentation,VOS)相关论文,总计 11 篇,其中 oral 1 篇,spotlight 2篇, 5 篇论文开 ...

  5. matlab读取视频VideoRead用法

    声明:转载自博主酌希的博文matlab读取视频VideoRead,原文链接点击打开链接,仅供参考学习. 看到以前matlab中读取视频多使用mmreader等(参考<matlab读取/播放视频的 ...

  6. MATLAB读视频报错 Unable to initialize the video obtain properties (videoreader in Matlab)

    添加一种问题情况:可能是某个视频无法初始化,可以对视频重新处理再重新读取试试 其他解决思路:MATLAB读视频报错 Unable to initialize the video obtain prop ...

  7. 【Android 音视频开发打怪升级:FFmpeg音视频编解码篇】一、FFmpeg so库编译

    转自:https://juejin.im/post/5e130df55188253a8b42ebac 目录 一.Android音视频硬解码篇: 1,音视频基础知识 2,音视频硬解码流程:封装基础解码框 ...

  8. 【图像去噪】基于matlab全变分算法图像去噪【含Matlab源码 626期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像去噪]基于matlab全变分算法图像去噪[含Matlab源码 626期] 获取代码方式2: 付费专栏Matlab图像处理(初级版) ...

  9. 技术博客|第16期:个性化视频搜索引擎:排序篇(下)

    模型结构决定了信息提取的效率,在搜广推领域有大量的相关研究.我们借鉴业内排序模型的优秀实践并结合视频搜索的特点,设计了一套以深度编码网络为基础提取信息.适合多目标优化的多任务专家网络以及解决偏差问题的 ...

最新文章

  1. Unity 内建数据索引
  2. plsql developer 创建表空间和临时表
  3. 请求网页时,怎么给我返回了一段 JavaScript 代码
  4. 组合体视图的画图步骤_(完整版)组合体视图画法教案
  5. Halcon算法矫正镜头畸变
  6. 最严格的身份证校验(JavaScript版)
  7. oracle 设置不可重复,oracle – 不可重复读和幻读之间有什么区别?
  8. Alex 的 Hadoop 菜鸟教程: 第6课 Hbase 安装教程
  9. 服务器客户端证书,使用服务器和客户端证书以及私钥创建SSLContext
  10. 计算机专业实践报告立题依据,论文的选题依据.doc
  11. 批处理版MPlayer播放器(甲兵时代原创批处理)(下)
  12. 第十五天PAT-A1124 Raffle for Weibo Followers简单模拟测试点三错误说明
  13. 2019-2020中国互联网趋势报告
  14. springmvc自定义参数解析器
  15. 为什么职场公众号最容易变现?
  16. 多平台Avalonia UI框架的主题化和本地化功能
  17. Vue—使用canvas实现电子签名
  18. 每日新闻 | 董明珠与雷军开启新赌约:10亿不要了,再赌5年
  19. Windows XP sp3系统服务详解
  20. 聊聊诊断协议——UDS

热门文章

  1. Linux学习手册(命令大全)
  2. python脚本模拟CC攻击
  3. 今天到洪城买衣服。。
  4. btrfs 使用方法
  5. 读书笔记:《简约至上 交互式设计四策略》
  6. 查找最接近的元素(c语言)
  7. 第一部分:简单句——第一章:简单句的核心——二、简单句的核心变化(谓语动词的语态)
  8. 《Python机器学习及实践》----良/恶性乳腺癌肿瘤预测
  9. 计算机网络实验 实验三 VLAN基本配置
  10. sqlserver服务器主体 “Jack-PC/Jack“ 无法在当前安全上下文下访问数据库 “model“。 (Microsoft SQL Server,错误: 916)