第一章 预备知识
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
得到的图像矩阵有两种数据类型,uint8,double。
二值和灰度图像读入后为二维数组,彩色图像为三维数组, 彩色图像存储格式有多种,主要有RGB(红绿蓝),索引格 式等。 真彩图像: 存储为一个 m*n*3 的三维数组,数值为[0, 255]的整数。 索引图像:图像矩阵X与颜色图数组map,其中颜色图map 是按图像中颜色值进行排序后的数组。对于每个像素,图像 矩阵X包含一个值,这个值就是颜色图数组map中的索引。 颜色图map是大小为t*3的二维双精度矩阵,map=[RGB], R、G、B为值域为[0,1]的实数值,t为索引图像包含的像素 个数,一般t默认为64。 索引格式的显示有: load *.mat; image(X);colormap(map) 或者 imshow(X); imshow(X,map)。
几种常见信号的读取, 包括音频信号,图像信号和视频信号的读取。 实验平台:Matlab
Matlab中常见的测试数据可以直接读取,信号的名 称在malab安装目录下的 toolbox\\wavelet\\wavedemo\\。 在matlab工作目录下,Matlab中的数据类型 “*.mat”的可以直接读取:
◦ 视频信号读入:aviread('*.avi'); ◦ 视频信号输出:avifile(*)。
>> MOV = aviread('cat_video.avi >> size(MOV)%视频包括的帧数'); %读入matlab自带文件。 ans = 1 241 %MOV是一个结构体,其中的每一帧图像都是一个索引图像 >>imshow(MOV(1,1).cdata,MOV(1,1).colormap);%显示第一帧图像 %抽取图像的奇数帧,存储为新的视频图像Cat.avi >> aviobj = avifile('Cat.avi','compression','None'); fig=figure; for k=1:2:241 imshow(MOV(1,k).cdata,MOV(1,k).colormap); F = getframe(fig); aviobj = addframe(aviobj,F); end close(fig); aviobj = close(aviobj); % MOV_new = MOV(1,1:2:241);%抽取视频中的一半帧数
图像的格式多种多样,有bmp,jpeg,tiff,gif, png,pdf,eps,fig等多种形式。 不同格式图像读取方式不同,Matlab中自带图像 *.mat格式的可以直接读入,或者拖入工作区。所 在目录为toolbox//wavelet//wavedemo。 图像读取命令为:
◦ 读入图像函数imread('*.jpeg');%可以读取大量格式的图像。 ◦ 输出图像函数imshow(),image(),imwrite();
◦ 读取命令:load('*.mat')(或者直接拖入工作区); ◦ 输出显示命令:plot(*)
>> load sumsin % 也可以用 load (‘sumsin.mat’) >> plot(sumsin);
目前的音频信号格式多种多样,在matlab中只能打 开wav格式的文件,所以处理之前,希望能够将其 它音频格式转化为wav格式,然后进行读取。 目前,可以将mp3,rm,wav,wma等格式相互 转化的软件有Boilsoft,ripper等软件。 Matlab 中自带的wav文件所在的目录为 toolbox//dspblks// dspblks。 wav格式音频文件的读取命令为:
RGB->HSI
HSI->RGB
%真彩色图像转化为HSI图像;%R [0,255],G [0,255],B [0,255];%H [0,2*pi],S [0,1],I [0,1] function Y = rgb2hsi(X) %图像格式转化 X1 = im2double(X); %获取rgb分量 r = X1(:,:,1); g = X1(:,:,2); b = X1(:,:,3); % 图像亮度分量I I = (r + g + b)./3; % 图像色度分量H,是角度值 F = 0.5*((r - g) + (r - b))./(sqrt((r - g).^2+(r - b).*(g - b))+eps);%此处为避免除零,加入小量eps。 st = zeros(size(r));% H的常数项 sig = ones(size(r));% H中符号量 st(find(b>g)) = 1; sig(find(b>g)) = -1; H = (2 * pi * st + sig .* acos(F)); % H可以除以(2*pi)归一化到了[0,1],如果这样在反变换过程中要注意反归一化,将该分量乘以(2*pi)。 %图像饱和度分量S den = r + g + b; den(den==0) = eps;%此处为避免除零,进行该操作。 S = 1 - 3 * min(min(r,g),b)./(den);%为更精确未直接用I带入。 %补充一下,在饱和度为零时,其色度分量也为零。 H(S == 0) = 0; %组成一个矩阵 Y = cat(3,H,S,I);
图像的类型很多,索引图像,真彩图像,二值图像, 他们之间可以进行转化,有下面的命令: dither,将真彩图像转化成索引图像,或将灰度图 变成二值图;
◦ X = dither(RGB,MAP); %真彩图像变成索引图像 ◦ X = dither(RGB,MAP,Qm,Qe): %参数Qm和Qe是比特 量化参数, ◦ Qm<Qe时才能用实现此种转换,否则不能实现。 ◦ BW = dither(I);%灰度图像变成二值图像
◦ 音频信号读入:wavread('*.wav'); ◦ 音频信号输出:wavwrite(*)。
>> X = wavread('speech_dft.wav');%读入 matlab自带文件。 >> Y = X + rand(size(X)).*0.02;%按均匀分布加 入一定噪声 >> wavwrite(Y,'Noise_dft.wav');% 存储为 Noise_dft.wav 文件。 >> subplot(1,2,1),plot(X); >> subplot(1,2,2),plot(Y);
rgb2ind,将真彩图像转换成索引图像,可以选择均匀 量化,最小方差量化和色彩图逼近三种方法实现转化;
◦ [X,MAP] = rgb2ind(RGB, N):用最小方差量化方法,将真彩图 像化成N种颜色的索引图像 ◦ X = rgb2ind(RGB, MAP):用色彩图逼近方法,将真彩图像转化 成逼近此色彩图MAP的索引图像; ◦ [X,MAP] = rgb2ind(RGB, TOL):用均匀量化的方法,将真彩图 像转化为与TOL相关的色彩的索引图像; ◦ 另外有可选参数DITHER\_OPTION,能够结合dither命令,可 选'dither', 或者'nodither' ◦ [...] = rgb2ind(...,DITHER\_OPTION)
>> RGB = imread('peppers.png'); >> [X,map] = rgb2ind(RGB,128);%真彩图像转化为索引图像 >> G = rgb2gray(RGB); %真彩色图像转化为灰度图像; >> size(RGB)%真彩图像是三维数组,每个通道每个像素点有其颜色值,颜色取值为 [0,255] ans = 384 512 3 >> size(map)%三个通道颜色值量化为128个颜色,每个颜色有R,G,B三个通道值。 ans = 128 3 >> size(X)%图像像素对应map中一个值,取值为[0,128] ans = 384 512 >> size(G)%灰度图像每个像素对应一个灰度值,取值为[0,255] ans = 384 512 >> figure(1), imshow(RGB); >> figure(2), imshow(X,map);%索引图像,为彩色的 >> figure(3), imshow(X);%量化为[0,128]的灰度图 >> figure(4), imshow(G);%灰度图像,灰度值[0,255]
>> >> >> >> >>
load chess.mat;% 入图像数据 whos%显示基本信息 figure(1) image(X);%显示原始图像 colormap(map);colorbar;%显示调色板
视频读取有几种方法,Matlab自带的程序aviread, 它能处理没有压缩的视频,或者下载其他的工具包 mmread,videoI来处理。 MALAB支持的数据类型有很多种,在window中主 要的有.avi .mpg .wmv .asf以及所有Microsoft DirectShow所支持的文件类型。 Matlab 中自带的avi文件所在的目录为 toolbox//vipblks//vipdemos。 未被压缩的avi格式视频文件的读取命令为:
Βιβλιοθήκη Baidu
在Matlab2010b中以后的版本出现读取和生成视频的函数更为简单 VideoReader,VideoWriter % 读取视频文件 'xylophone.mpg', 标记为 'myreader1'. readerobj = VideoReader('xylophone.mpg', 'tag', 'myreader1'); % 读取视频所有帧. vidFrames = read(readerobj); % 得到视频的总帧数 numFrames = get(readerobj, 'numberOfFrames'); %从视频结构建立Matlab视频流 for k = 1 : numFrames mov(k).cdata = vidFrames(:,:,:,k); mov(k).colormap = []; end % 建立图像 hf = figure; % 根据视频的宽度和高度重新规划视频图像大小——拉伸 set(hf, 'position', [150 150 readerobj.Width readerobj.Height]) % 重放视频 movie(hf, mov, 1, readerobj.FrameRate);
认识信号
信号是数据的电磁编码或电子编码。信号也分为模 拟信号和数字信号。 模拟信号是指电信号的参量是连续取值的,其特点 是幅度连续。常见的模拟信号有电话、传真和电视 信号等。 数字信号是离散的,从一个值到另一个值的改变是 瞬时的,就像开启和关闭电源一样。数字信号的特 点是幅度被限制在有限个数值之内。常见的数字信 号有电报符号、数字数据等 信号是运载消息的工具,是消息的载体。 从广义上讲,它包含光信号、声信号和电信号等。
一维信号包括声音信号,股市数据等 二维信号包括二值图像,灰度图像等。 三维信号包括彩色图像,即RGB三个颜色通道,视 频流,三维扫描立体数据等。
函数空间:平方可积空间
该空间具有很多好的性质: 定义了距离,范数,极限,完备,内积——Hilbert 空间。 生活中信号多为属于该空间的函数。
RGB图像是最常用的图像格式,它还可以转化为 HSI(色度,饱和度,亮度模型),YUV(亮度,色度 参数模型),CMY(青、品红、黄彩色格式), CMYK(青、品红、黄,黑彩色格式)等等图像格式, 其中HIS格式是各个通道的相关性最小,适合网络 传输和压缩,在图像格式中占有很重要的地位。 这些转化不是Matlab自带的程序,需要编写程序进 行转化。我们以RGB转化为HSI图像为例,实现这 种转化。将[0, 255]取值的R、G、B通道值拉伸为 [0,1]区间的数r、g、b,然后,进行下面的转化。
ind2rgb,将索引色图像转换成真彩色图像;
◦ RGB = ind2rgb(X,MAP)\%将矩阵X和色彩地图结合转换成真彩 图像格式。
其他图像格式相互转换函数还有gray2ind,将灰度 图像转换成索引图像; grayslice, 通过设定阈值 将灰度图像转换成索引色图像;im2bw,通过设定 亮度阈值将真彩色、索引色、灰度图转换成二值图; ind2gray,将索引色图像转换成灰度图像; mat2gray,将一个数据矩阵转换成一副灰度图; rgb2gray,将一副真彩图像转换成灰度图像或者 将色彩图变成灰度范围等