matlab 图像处理基础知识

来源:互联网 发布:饿了么网络连接失败 编辑:程序博客网 时间:2024/04/30 00:04

数字图像文件的类型:BMP,GIF,JPEG,ICO,HDF,PNG,TIFF,DICOM

matlab矩阵:

一。矩阵创建

1.普通矩阵的建立:不管是任何的矩阵(向量),都可以直接按行方式输入每个元素:同一行中的元素用逗号或是空格分开,不同行的元素用分号分开,并所有元素都要处于[ ]中。

2.大型矩阵的建立:对于大型矩阵一般创建M文件,以便于修改

3.三维数组的建立:多维数组创建时需要使用cat函数,A=cat(n,A1,A2,,,An),其中n为多维数组的维数,A1,A2....An分别为n个二维数组。三维还可以用另一种原始方式进行定义

A1=[1,2,3;4,5,6;7,8,9];A2=A1';A3=A1-A2;A5(:,:,1)=A1,A5(:,:,2)=A2,A5(:,:,3)=A3;

即A5(:,:,1)=[1,2,3;4,5,6;7,8,9],A5(:,:,2)=[1,4,7;2,5,8;3,6,9],A5(:,:,3)=[0,-2,-4;2,0,-2;4,2,0];

二。矩阵访问

1.根据下标访问:将需要访问的矩阵元素的行列坐标写在圆括号内,且行号必须在列号之前,行坐标按照由上到下的顺序从1开始递增计数,列坐标按照由左向右的顺序计数。另外也可使用”:“来访问所有坐标,用end访问最后一个坐标

2.根据序号访问:matlab中按序号访问矩阵元素时采用列优先,即先从上到下访问第一列的所有元素再由左到右访问下一列的元素。也可使用”:“访问所有坐标,使用end访问最后一个元素

三。矩阵运算

1.算术运算:加,减,乘,除(右除/,左除\,A\B等效于A的逆左乘B矩阵,即inv(A)*B,B/A等效于A矩阵的逆右乘B矩阵即B*inv(A))^乘方;而乘、除、乘方又有点运算形式即.*,./,.\,.^。区别是乘、除、乘方运算只要A,B两个矩阵A的列维数与B的行维数相同即可,是两个矩阵之间的运算,而点运算的两个矩阵维数尺寸相同,是对应元素之间的运算。

2.关系运算:<=,>=,<,>,==,~=,当比较量是两个标量时,则直接比较两个量的大小,关系成立则结果为1,不成立为0;当比较量是两个矩阵时,则比较的是对应元素之间的关系,结果是一个只包含1,0的同维数矩阵;当比较量一个是标量一个是矩阵时,则比较的是矩阵中每个元素与此标量的关系,得到的结果是一个只含1,0的同维数矩阵。

3.逻辑运算:&,|,~,当比较量是两个标量时,与一般逻辑运算相同;当比较量是两个矩阵时,则结果是同维数的只含1,0的矩阵;当比较量一个是标量一个是矩阵时,结果是一个同维数的只含1,0的矩阵。

4.其他运算:

(1)矩阵的逆:B=inv(A),则B是A的逆矩阵

(2)行列式的值:Z=det(A),则Z是A的行列式值

(3)对角矩阵:B=diag(A),则B是A的对角矩阵

(4)矩阵转置:B=A':则B是A的转置矩阵

5.其他常用的矩阵的操作函数:

(1)size:求矩阵的尺寸:[m,n]=size(A):m是A行数,n是A的列数

(2)abs:求矩阵的绝对值,返回每个元素的绝对值

(3)max,min:求矩阵的最大值、最小值,返回矩阵中每列元素的最大值,最小值,是向量

(4)sum:求每列元素的和,返回值是向量,要求全部元素的值:Z=sum(sum(A)),Z即为全部元素的和

(5)median:求向量中每列数据的平均值

(6)floor,ceil:取整,floor为向下取整,返回小于或等于元素值的矩阵,ceil向上取整,返回大于或等于元素值的矩阵

(7)round:取近似整数值,即采用四舍五入,返回矩阵

(8)fix:取整,返回矩阵

(9)find:查找非0值,返回向量是所有非零元素的位置

(10)ind2sub:一维序号转换为二位下标:[x,y]=ind2sub([m,n],index):将一维序号index转换为m*n的二位矩阵中的坐标[x,y]

(11)reshap:矩阵变形函数,此函数可以将二维矩阵变换为一维矩阵或是将一维矩阵变换为二维矩阵:z=reshap(A,m,n)将矩阵A按照列优先的顺序将其转换为m*n矩阵

(12)repmat:矩阵复制函数,Z=repmat(A,m,n):将A在水平方向上复制M个,垂直方向复制n个

(13)padarray:矩阵元素补充函数:padarray(X,[m,n],value,parameters):按给定的x,y方向上的补充元素数目[m,n],补充元素值value和补充方式参数parameters来补充矩阵

(14)fliplr,flipud:左右列,上下行颠倒

(15)circshift:循环移位,Z=circshift(A,[m,n]):按行移m位,按列移n位

(16)numel:统计矩阵元素数目

matlab编程基础:

一。函数:matlab中函数是一种特殊形式的M文件

function [outarg1,outarg,...]=fname(inarg1,inarg2)

%H1 comment line-----对本函数功能的总结,通过lookfor命令能被搜索并显示出来

.....

(return)

用nargin获得实际调用此函数时输入的参数个数,nargout获得函数输出的个数

函数句柄

x=@funcname,可通过对变量x的使用来使用函数

x=@(param)expression,通过对变量x的使用来使用表达式,注意表达式不需要用括号

二。元包

元包这种数据类型来支持多种数据结构包含在一个数组中的功能,元包中每个元包的访问都可以通过圆括号来访问,通过使用大括号来访问元包的内容

三。绘图函数

(1)figure,生成一个新的绘图窗口

(2)subplot(m,n,p)指定一个窗口中显示图像的个数,当p<10时,逗号可以省略,总共显示m*n个,p表示显示的序号,序号按行序优先

(3)plot(x,y)绘制二维曲线

(4)mesh(x,y,z)可绘制三维曲面网格

四。文件操作

(1)打开文件,文件名,文件格式,文件中数据的数据格式

fid=fopen(filename,peimission)

[fid,message]=fopen(filename,permission)

[fid,message]=fopen(filename,permission,format)

(2)关闭文件

status=fclose(fid),关闭指定文件,status=fclose('all')关闭所有打开的文件,status表示状态,成功为0,失败为-1

(3)把二进制数据写入文件

count=fwrite(fid,array,precision),count表示写入文件变量的个数

count=fwrite(fid,array,precision skip)

(4)从文件中读取二进制数据
[array,count]=fread(fid,size,precision)

[array,count]=fread(fid,size,precision,skip)


0 0
原创粉丝点击