matlab常用图像处理函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

imshow和image:

图像的显示是最为重要的,用imshow和image都可以显示图像,但是有一定的区别。用的不对,就会象我最初一样,老是出错,或者得到一张空白图或者是彩色图显示成颗粒状、反相黑白图等等。image是用来显示附标图像,即显示的图像上有x,y坐标轴的显示,可以看到图像的像素大小。imshow只是显示图像。

它们都可以用subplot来定位图像显示的位置,用colormap来定义图像显示用的颜色查找表,比如用colormap(pink),可以把黑白图像显示成带粉红色的图像,很有趣的。

Matlab读取avi文件,并转换为灰度图:

1.用matlab读取avi电影(只能读一定压缩各式的avi电影)

mov=aviread('highwayI_raw.A VI'); %读入电影highwayI_raw.A VI

movie(mov); %放映电影

2.将电影转成图片序列

aviread(filename, index); % 读取avi文件的第index帧图像;

例:mov = aviread('highwayI_raw.A VI',1) %读取第一帧图像

读取图像以后储存的格式是一个结构体,该结构体有两个元素:cdata和colormap

例:frame = aviread('highwayI_raw.A VI', i);

frame.cdata表示了一个数据数组,彩色图像就是3维的,灰度图像就是2维的。

frame.colormap 见(help aviread)

3.然后就是将彩色图像转换为灰度图像,很简单:

frame = aviread('highwayI_raw.A VI', i);

f_gray = rgb2gray(frame.cdata);

这样就可以将文件的第i帧转换为灰度图像。

imwrite的用法:

imwrite(recover_image, 'recover.jpg', 'jpg');

colormap

定义图像显示用的颜色查找表,比如用colormap(pink),可以把黑白图像显示成带粉红色的图像,很有趣的。

avi格式视频的读取和显示(Matlab代码)

clear data

disp('input video'); % 显示"input video"

avi = aviread('samplevideo.avi'); % avi: MATLAB movie structure

video = {avi.cdata}; % cdata: M x N x 3 的矩阵用来表示真彩色的图像

for a = 1:length(video) % length(video)表示这段视频的帧数imshow(video{a}) %按帧数顺序显示图像

drawnow; %用于刷新屏幕的。当你的代码执行时间长,需要反复执行plot时,Matlab程序不会马上把图像画到figure上,这时,要想实时看到图像的每一步变化%情况,需要使用这个语句。

end

avi格式视频的读取和倒放(Matlab代码)

clear data

disp('input video'); % 显示"input video"

avi = aviread('samplevideo.avi'); % avi: MATLAB movie structure

video = {avi.cdata}; % cdata: M x N x 3 的矩阵用来表示真彩色的图像

for a = length(video) :-1:1 % length(video)表示这段视频的帧数

imshow(video{a}) %按帧数倒序显示图像

drawnow;

end

ischar()函数

判断给定数组是否是字符数组。

语法格式:tf = ischar(A) 返回逻辑1(true)如果A是字符数组,否则返回0(false)。

应用举例>> cell_arr{1, 1} = 'Hello ,world!'; cell_arr{1, 2} = [1 2 3; 4 5 6]; cell_arr{2, 1} = 1 + 2j; cell_arr{2, 2} = ispc;

>> ischar(cell_arr{1, 1}) ans = 1

>> ischar(cell_arr{1, 2}) ans = 0

>> ischar(cell_arr{2, 1}) ans = 0

>> ischar(cell_arr{2, 2}) ans = 0

rectangle函数

功能:创建二维矩形对象。

rectangle('Position',[x,y,w,h])从点(x,y)开始绘制一个宽w高h的矩形,对坐标轴数据单元指定值。

例:

rectangle('position',[1,1,5,5],'curvature',[1,1],'edgecolor','r','facecolor','g');

'position',[1,1,5,5]表示从(1,1)点开始高为5,宽为5;

'curvature',[1,1]表示x,y方向上的曲率都为1,即是圆弧;

'edgecolor','r'表示边框颜色是红色;

'facecolor','g'表示面内填充颜色为绿色。

axis image off

关闭所有的坐标轴、标签和二维图像标签.

binornd()

此函数生成服从二项分布的随机数。二项分布有2个参数:n,p。考虑一个打靶的例子,每枪命中率为p,共射击N枪,那么一共击中的次数就服从参数为(N,p)的二项分布。注意p要小于等于1且非负,N要为整数。基本语法:

binornd(n,p,[M,N,P,...])

生成的随机数服从参数为(N,p)的二项分布,这些随机数排列成M*N*P... 多维向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:binornd(10,0.3,5,1) %生成5个随机数排列的列向量,一般用这种格式

binornd(10,0.3,5) %生成5行5列的随机数矩阵

binornd(10,0.3,[5,4]) %生成一个5行4列的随机数矩阵

%注:上述语句生成的随机数所服从的参数为(10,0.3)的二项分布

生成的随机数大致的分布。

x=binornd(10,0.45,100000,1);

hist(x,11);

我们可以将此直方图解释为,假设每枪射击命中率为0.45,每论射击10次,共进行10万轮,这个图就表示这10万轮每轮命中成绩可能的一种情况。

unifrnd(20,30,1000,1)

意思是:

产生一个1000*1 的array,这个array中的每个元素为20 到30之间连续均匀分布的随机数

e.g.:

a = unifrnd(20,30,5,1)产生(一种可能,因为是随机数)如下结果:

a =

29.5013

22.3114

26.0684

24.8598

28.9130

类似的,结果是5*1的array,array中的值为20到30之间连续均匀分布的随机值

matlab中im2bw函数的用法

matlab中DIP工具箱函数im2bw使用阈值(threshold)变换法把灰度图像(grayscale image)转换成二值图像。所谓二值图像,一般意义上是指只有纯黑(0)、纯白(255)两种颜色的图像。当然,也可以是其他任意两种颜色的组合。在matlab命令行中键入doc im2b 或help im2bw即可获得该函数的帮助信息。阈值变换比如数组 a = [120, 254, 0, 200, 99]; 设定一个阈值125,并对a进行阈值变换,那么a中凡是大于125的,则变为255,小于等于125的则变为0 (具体对临界情况处理可能不同,不过matlab

中im2bw函数是按照上述方法处理的)这样a经过阈值变换后变为[0, 255, 0, 255, 0] 语法BW = im2bw(I, level) BW = im2bw(X, map, level) BW = im2bw(RGB, level) 其中level就是设置阈值的。level取值范围[0, 1]。例如:>> I = uint8([0, 255, 128, 127, 121, 202]); >> range = getrangefromclass(I) range = 0 255 >> I2 = im2bw(I, 0.5) I2 = 0 1 1 0 0 1 >> I3 = im2uint8(I2) I3 = 0 255 255

相关文档
最新文档