数字图像处理期末测试
创建以YUVtoJPEG为名称的M文件,读取CIF格式的YUV文件mobile_cif_300f.yuv的前60帧,并逐一以jpg格式保存各视频帧至当前目录下,视频帧帧号命名相对应的jpg图片。保存的jpg图片满足以下条件:
第1-10帧,视频帧缩小1倍后,利用双线性内插法放大回原尺寸;
第11-20帧,对视频帧混入椒盐噪声,再作中值滤波;
第21-30帧,对视频帧混入高斯噪声,再作图像维纳滤波复原;
第31-40帧,对视频帧作直方图均衡化;
第41-50帧,对视频帧作Sobel边缘检测,将边缘点像素值增大为原值的1.2倍;
第51-60帧,将视频帧的DCT变换系数取值前30%置为0,并重建视频帧;
计算第1-60帧处理后视频帧与原始视频帧在Y通道上的PSNR值,并显示出PSNR值随帧号的变化曲线。
注:上述所有处理均在Y通道,UV通道不作处理。
%YUVtoJPEG.m
clc;clear;
%
[Y,U,V] = ReadMultiFrames('mobile_cif_300f.yuv','cif',[0,60]);
len = size(Y,3);
psnr = [];
for ii = 1:lenYc = Y(:,:,ii);Uc = U(:,:,ii);Vc = V(:,:,ii);if ii<=10Yd = fun1(Yc);elseif ii<=20Yd = fun2(Yc);elseif ii<=30Yd = fun3(Yc);elseif ii<=40Yd = fun4(Yc);elseif ii<=50Yd = fun5(Yc);elseYd = fun6(Yc);endtmp = PSNR(Yc,Yd);psnr = [psnr,tmp];im_rgb = yuv2rgb(Yd,Uc,Vc);imwrite(uint8(im_rgb),[num2str(ii),'.jpg']);
end
plot(psnr);
function Yd = fun1(Yc)w = fspecial('average',[5,5]);
Yc = imfilter(Yc,w);
Yc = Yc(1:2:end,1:2:end);Yd = imresize(Yc,2,'bilinear');end
function Yd = fun2(Yc)Yc = uint8(Yc);
J = imnoise(Yc,'salt & pepper',0.05);
B = ordfilt2(J,13,ones(5,5));
Yd = double(B);end
function Yd = fun3(Yc)Yc = mat2gray(Yc);
J = imnoise(Yc,'gaussian',0,0.05);
B = wiener2(J,[5 5]);
Yd = double(255*B);end
function Yd = fun4(Yc)Yc = uint8(Yc);
Yd = histeq(Yc);
Yd = double(Yd);end
function Yd = fun5(Yc)BW = edge(Yc,'sobel');
Yc(BW(:)) = Yc(BW(:))*1.2;
Yd = Yc;end
function Yd = fun6(Yc)d = dct2(Yc);
[tmp,idx] = sort(d(:),'descend');
idx1 = idx(1:round(length(idx)*0.3));
d(idx1) = 0;
Yd = idct2(d);end
function r = PSNR(x1,x2)x1 = double(x1);
x2 = double(x2);mes = x1-x2;r = 10 * log10(255^2 / mean(mes(:).^2));end
function im_rgb = yuv2rgb(Yd,Uc,Vc)Uc = imresize(Uc,2);
Vc = imresize(Vc,2);R = Yd + 1.4075*(Vc-128);
G = Yd - 0.3455*(Uc-128) - 0.7169*(Vc-128);
B = Yd + 1.7790*(Uc-128);im_rgb = cat(3,R,G,B);
im_rgb(im_rgb>255) = 255;
im_rgb(im_rgb<0) = 0;end
function [Y,U,V] = ReadMultiFrames(yuvfilename,format,init2last)
%该函数用于将yuv格式的视频连续多帧分别读入到三维数组Y,U,V之中
%yuv视频的采样格式为4:2:0
%输入参数:
% yuvfilename ---- 视频yuv文件路径名
% format ---- 视频格式(格式名or分辨率[rows,cols])
% init2last ---- 读取的视频帧的范围[初始帧序号,终止帧序号]
%输出参数:
% Y ---- 亮度,三维数组,第三维为帧序号,前两维是单帧的行和列
% U,V ---- 色差,三维数组,第三维为帧序号,前两维是单帧的行和列
%调用示范:
% [Y,U,V] = ReadMultiFrames('.\videoname.yuv','cif',[100,101]);
% [Y,U,V] = ReadMultiFrames('.\videoname.yuv',[288,352],[100,101]);
close all;
if ischar(format)format = lower(format);switch formatcase 'sub_qcif'cols = 128; rows = 96;case 'qcif'cols = 176; rows = 144;case 'cif'cols = 352; rows = 288;case 'sif'cols = 352; rows = 240;case '4cif'cols = 704; rows = 576;otherwiseerror('no format!');end
elseif isequal(size(format),[1,2])||isequal(size(format),[2,1])cols = format(2);rows = format(1);
elseerror('第二参数输入有误!');
endpoint = fopen(yuvfilename,'r');
if point == -1error('打开文件失败!');
endorder_num = init2last(1);
frames_num = init2last(2) - order_num + 1;
k = 0;
Y = zeros(rows,cols,frames_num);
U = zeros(rows/2,cols/2,frames_num);
V = U;offset = order_num*(rows*cols + rows*cols/2);
status = fseek(point,offset,'bof');
pro = fread(point,1,'uchar');
if (isempty(pro)&&feof(point)) || status ~=0error('读取位置定位失败!');
end
fseek(point,-1,'cof');for ii = 1:frames_numk = k + 1;pro = fread(point,1,'uchar');if feof(point)&&isempty(pro)disp('读取帧数范围已超过yuv视频总帧数!');Y = Y(:,:,1:k-1);U = U(:,:,1:k-1);V = V(:,:,1:k-1);break;endfseek(point,-1,'cof');temp = fread(point,[cols,rows],'uchar');Y(:,:,ii) = temp';temp = fread(point,[cols/2,rows/2],'uchar');U(:,:,ii) = temp';temp = fread(point,[cols/2,rows/2],'uchar');V(:,:,ii) = temp';
endfclose(point);end
数字图像处理期末测试相关推荐
- matlab 图像 幅度谱 低通滤波_数字图像处理期末复习2018-12-21
数字图像处理期末复习2018-12-21 愉快先生 0.204 · 字数 5547 · 阅读 1834 2018-12-22 19:35 (数字图像冈萨雷斯第二版教材) 一.基本原理 图像的读取.存储 ...
- 数字图像处理期末整理
数字图像处理期末整理 1. 数字图像基础 1.1 采样和量化 1.2 彩色模型 2. 空域滤波 2.1 灰度变换 2.1.1 基本的灰度变换函数 2.2 直方图处理 2.2.1 直方图均衡化 2.2. ...
- 数字图像处理期末大作业-美图秀秀
本项目是以matlab为主语言并设计GUI界面的一款简易美图秀秀,包含基础的图像处理和一些常见美颜算法 对于一些matlab较难实现的算法采用C++或python来实现 ⭐️ github地址:htt ...
- 数字图像处理期末大作业 完成总结
考核内容 一.设计部分(70分) 第一部分:编写一个基于GUI的图像处理程序/软件,功能按钮和界面布局自己设定,遵循美观大方.方便操作的原则:(30分) 第二部分:项目设计内容:(40分) 1.绘制灰 ...
- 数字图像处理期末总结
前言概述部分 数字媒体包含哪些类型,涉及哪些研究领域? 1)可视数字媒体包含图像.视频.图形和可视化数据等媒体类型,这些媒体类型之间具有很强的相关性,但又有明确的差异性: 2)可视数字媒体涉及计算机视 ...
- 山东大学软件学院2019数字图像处理期末试题(数媒)
考砸了--都是软件学院的,软工和数媒的题咋就差距这么大呢.记录一下,明年说不定还用得上. 试题分8道选择题每道6分,4道简答题每道10分,最后一道计算题12分 . 一. 选择 数字图像定义 9×9英寸 ...
- 遥感数字图像处理期末总结二
第二次总结复习参考题 一.试述遥感影像几何变形误差的主要来源和类型 遥感图像的几何误差可分为静态误差和动态误差两大类.静态误差是指成像过程中,传感器相对于地球表面呈静止状态时所具有的各种误差;动态误差 ...
- 【数字图像处理】2021期末复习考试重点大纲
本文目录 数字图像处理期末复习 1.填空(每空2分,共20分) 1.均值滤波计算 2.中值滤波计算 3.水平方向一阶锐化计算 4.无方向一阶锐化计算 5.位图文件存储所需要的数据量计算 2.问答(每题 ...
- 数字图像处理大作业实验报告
<数字图像处理> 期末大作业 班 级:数字媒体技术2020级1班 姓 名:快乐的小蓝 学 号:XXXXXXXXX XXXX大学信息学院 目录 一.任务描述 二.设 ...
最新文章
- 前端JS调用微信扫一扫二维码
- golang中的bufio
- lisp精要(2)-基础(1)
- BZOJ2209: [Jsoi2011]括号序列
- ZeroMQ接口函数之 :zmq - 0MQ 轻量级消息传输内核
- Effective C# 原则34:创建大容量的Web API(译)
- github设置中文_【Github】100+ Chinese Word Vectors 上百种预训练中文词向量
- fastapi quickstart学习
- eureka自我保护时间_Eureka的自我保护机制
- 补:关于man关于SEE ALSO(参见)中代号与vim下常用命令
- 汉仪字体安装后PPT找不到_字体不知道去哪下载?我教您
- Teechart图表教程:Teechart的功能简介
- 铅蓄电池首批规范企业名单出炉 多家上市公司入围
- 1.Excel绘制斜线表头
- [IT最前沿--有点意思] 微博营销案例:杜蕾斯鞋套雨夜传奇
- 通用API接口签名算法(参考淘宝)
- 谷歌cloud_参加Google Cloud专业机器学习工程师考试的20天Beta
- Java使用Spire将网页保存为PDF并去除Evaluation Warning水印方案
- jquery和workerman实例和案例demo代码
- 键盘的某个键坏了,怎么用其它键代替?
热门文章
- 教师资格证科目一综合素质
- 计算机专业用苹果哪款笔记本,电脑太多,哪款最适合您?盘点9款最佳笔记本电脑,您中意谁呢?...
- 哈工大计算机网络第七章——无线网络与移动网络复习
- c语言作业的心得土灰,作业心得体会范文4篇
- 找实习、工作的一点浅见
- 行为型设计模式之中介者模式
- LR实战之Discuz开源论坛——登录脚本
- HNU-电子测试平台与工具-三人表决器
- 蚂蚁金服回应,支付宝年度账单“虚高”
- Vue 引入路径正确的,但有波浪线: differs from already included file name