您的位置:首页 > 编程语言 > MATLAB

转载:MATLAB命令

2007-05-16 23:32 483 查看
正在处理您的请求...

蜘蛛&&H.264的学习乐园
-------------------------蜘蛛&&H.264的学习乐园

<May 2007>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

文章

H.264学习(RSS)

JM模型理解(RSS)

MATLAB学习(RSS)

爱的天堂(RSS)

收藏

H.264学习

JM模型理解

爱的天堂

相册

蜘蛛的相册

H.264视频编解码技术

视频乐园

JM模型学习

我的生活

存档

2007年05月(8)

CSDN首页    CSDN社区    CSDN技术中心    BLOG首页    我的首页    个人档案    联系作者    聚合

   

    搜索    登录

原创 - 6, 翻译 - 0, 转贴 - 2, 点击 - 232, 评论 - 0, Trackbacks -0

作者tag:c/c++ im 矩阵 图象 灰度 matlab学习 CSDN 推荐tag:matlab 图像 数组 

[align=center]<<对>的一些理解和疑问,欢迎大家一起讨论! | 帧内预测matlab程序 >>[/align]



 MATLAB命令

默认情况下,matlab将图象中的数据存储为double型,即64位浮点数;matlab还支持无符号整型(uint8和uint16);uint型的优势在于节省空间,涉及运算时要转换成double型。

im2double():将图象数组转换成double精度类型
im2uint8():将图象数组转换成unit8类型
im2uint16():将图象数组转换成unit16类型

图像类型转换函数:
dither() 通过颜色抖动,把真彩图像转换成索引图像或灰度图象转换成二值图像
gray2ind() 将灰度图像(或二值图像)转换成索引图像
grayslice() 通过设定的阈值将灰度图象转换成索引图像
im2bw() 通过设定亮度阈值将灰度、真彩、索引图象转换成二值图像
ind2gray() 将索引图象转换成灰度图象
ind2rgb() 将索引图象转换成真彩色图像
mat2gray() 将一个数据矩阵转换成一幅灰度图象
rgb2gray() 将真彩转换成灰度图象
rgb2ind() 将真彩转换成索引图象

图像类型与类型间的转换

1。索引图像:包括一个数据矩阵X和一个色图阵MAP。矩阵元素值指向MAP中的特定颜色向量。
2。灰度图像:数据矩阵I,I中的数据代表了颜色灰度值。矩阵中的元素可以是double类型、8位或16位无符号的整数类型。
3。RGB图像:即真彩图像。矩阵中每个元素为一个数组,数组的元素定义了像素的红、绿、蓝颜色值。RGB数组可以是double类型、8位或16位无符号的整数类型。
4。二值图像:一个数据阵列,每个象素只能取0或1。

矩阵的基本运算

行列式求值:det(A)
矩阵加减:+、-
矩阵相乘:*
矩阵左除:A/B     %相当于inv(A)*B
矩阵右除:A/B     %相当于A*inv(B)
矩阵的幂:^
矩阵转置:'
矩阵求共轭(实部相同,虚部相反):conj(X)
矩阵求逆:inv(X)

级数的求和与收敛
symsum(fun,var,a,b):其中fun是通项表达式,var为求和变量,a为求和起点,b为求和终点
例如:I为1/[n*(2n+1)]从1到正无穷的和,求I
syms n;
f1=1/(n*(2*n+1));
I=symsum(f1,n,1,inf)

计算结果为:
I =2-2*log(2)

空间曲面

mesh()函数语法:
mesh(Z):
mesh(X,Y,Z,C):其中C是用来定义相应点颜色等属性的数组

例:求x^2+y^2=z的空间曲面
x=-4:4;
y=x;
[X,Y]=meshgrid(x,y);%生成x,y坐标
Z=X.^2+Y.^2;
mesh(X,Y,Z)
曲面图
[x,y]=meshgrid(xa,ya) 当xa,ya分别为m维和n维行向量,得到x和y均为n行m列矩阵。meshgrid常用于生成x-y平面上的网格数据;
mesh(x,y,z)绘制网面图,是最基本的曲面图形命令,其中x、y、z是同阶矩阵,表示曲面三维数据;
mesh(xa,ya,z) xa,ya分别为m维和n维向量,z为n行m列矩阵。等价于先[x,y]=meshgrid(xa,ya)再mesh(x,y,z);
surf(x,y,z)绘制曲面图,与mesh用法类似;
contour(x,y,z)绘制等高线图,与mesh用法类似,可指定z的范围;
contour3(x,y,z)绘制三维等高线图,与mesh用法类似,可指定z的范围。

空间曲线

例:求方程组的空间曲线

1。化为参数方程组
x=t
y=sqrt[t(1-t)]
z=sqrt[1-x^2-y^2]
2。 程序
t=0:0.001:1;
x=t;
y=sqrt(t.*(1-t));
z=sqrt(1-x.^2-y.^2);
plot3(x,y,z,z,-y,z)
其中.*为数组相乘,.^为数组乘方

matlab实现离散余弦变换压缩(JPEG压缩原理)
比部分上篇文章已经介绍过,为了保持文章的完整性,继续保留。

JPEG图像压缩算法:
输入图像被分成8*8或16*16的小块,然后对每一小块进行二维DCT(离散余弦变换)变换,变换后的系数量化、编码并传输;
JPEG文件解码量化了的DCT系数,对每一块计算二维逆DCT变换,最后把结果块拼接成一个完整的图像。在DCT变换后舍弃那些不严重影响图像重构的接近0的系数。
DCT变换的特点是变换后图像大部分能量集中在左上角,因为左上放映原图像低频部分数据,右下反映原图像高频部分数据。而图像的能量通常集中在低频部分。

实例程序:
function Jpeg
I=imread('D:/MATLAB7/toolbox/images/imdemos/cameraman.tif');
%该图片在安装matlab的目录中找,原图为灰度图象
I=im2double(I);%图像存储类型转换
T=dctmtx(8);%离散余弦变换矩阵
B=blkproc(I,[8 8],'P1*x*P2',T,T');
%对原图像进行DCT变换
mask=[1 1 1 1 0 0 0 0
      1 1 1 0 0 0 0 0
      1 1 0 0 0 0 0 0
      1 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0];
B2=blkproc(B,[8 8],'P1.*x',mask);
%数据压缩,丢弃右下角高频数据
I2=blkproc(B2,[8 8],'P1*x*P2',T',T);
%进行DCT反变换,得到压缩后的图像
imshow(I)
title('原始图像')
figure;
imshow(I2)
title('压缩后的图像')
应用到的函数:
I=imread('图像文件名') :读取图像数据,保存在矩阵I中;
imshow(I) :显示灰度图像I,其他用法见matlab帮助;
I2=im2double(I1) :把图像数组I1转换成double精度类型;
D=dctmtx(n) :二维离散余弦变换函数,返回n*n离散余弦变换矩阵。

一个n*n的变换矩阵T被定义成:
Tpq=1/sqrt(n)                                  
,当p=0,0<=q<=M-1;
 Tpq=sqrt(2/n)*cos[pi*(2q+1)*p/2n]   
,当1<=p<=M-1,0<=q<=M-1。

B=blkproc(A,[m n],fun,P1,P2...) :块操作函数。对图像A的每个不同的m*n块应用fun函数,P1,P2等为fun函数参数。在图像边缘用0来扩展;只有当fun的返回矩阵是m*n矩阵时,B和A的大小才相同。
figure:强制生成一个新的个绘图窗口;

非线性方程求解

fsolve(fun,x0,options)
其中fun为待解方程或方程组的文件名;
x0位求解方程的初始向量或矩阵;
option为设置命令参数

建立文件fun.m:
function y=fun(x)
y=[x(1)-0.5*sin(x(1))-0.3*cos(x(2)), ...
    x(2) - 0.5*cos(x(1))+0.3*sin(x(2))];

>>clear;x0=[0.1,0.1];fsolve(@fun,x0,optimset('fsolve'))

注:
...为续行符
m文件必须以function为文件头,调用符为@;文件名必须与定义的函数名相同;fsolve()主要求解复杂非线性方程和方程组,求解过程是一个逼近过程。

不定积分与定积分

不定积分:int(fun,var)
例:求∫sinaxsinbxsincxdx

syms a b c x
y=sin(a*x)*sin(b*x)*sin(c*x);
int(y,x);
pretty(ans)

定积分:int(fun,var,a,b)
其中a,b分别为上下限

求解线形方程

solve,linsolve

例:

A=[5 0 4 2;1 -1 2 1;4 1 2 0;1 1 1 1];
%矩阵的行之间用分号隔开,元素之间用逗号或空格
B=[3;1;1;0]
X=zeros(4,1);%建立一个4元列向量
X=linsolve(A,B)

diff(fun,var,n):对表达式fun中的变量var求n阶导数。

例如:F=sym('u(x,y)*v(x,y)');   %sym()用来定义一个符号表达式
diff(F);  %matlab区分大小写
pretty(ans) %pretty():用习惯书写方式显示变量;ans是答案表达式

求极限
limit:
例:limit(F,x,a,left);对表达式F求极限,变量为x,从左边趋近a。
inf:正无穷;
-inf:负无穷。

matlab之基本绘图函数

clear:清空内存中的变量;
figure:强制生成一个新的个绘图窗口;
syms x y t :声明变量;
fplot(函数表达式,绘图区间);
plot(横坐标向量,纵坐标向量,颜色/线形等参数)
ezplot(函数表达式):简单的fplot,easy fplot
axis([xmin xmax ymin ymax ...]):设置坐标轴显示范围
  

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1606312
[收藏到我的网摘]   zhizhu666 蜘蛛777发表于 2007年05月12日 21:38:35

相关文章:
三维世界当中的变换矩阵 2005-01-31 happy__888

转帖](译)MATLAB代码矢量化指南-1 2004-07-05 yuanqingfei

图像镶嵌 2006-06-24 keldy

VC数字图像处理编程讲座之十一 2006-04-05 byxdaz

骨骼动画2 2004-11-30 zpxocivuby

特别推荐:
探索新兴务技术领域对IT专业人员的影响
本文将探索对一个新的 IT 领域的需要 IT专业人员如何能够将自己转变为业务技术人员

北邮软件学院2007(京/沪)6月热考
全国规模最大的通信软件工程硕士培养基地 ☆自主命题 ☆多项奖金 ☆优势课程 ☆100%就业

炎黄盈动AWS业务流程管理开发平台
提供最优秀的BPM业务流程管理开发平台及应用解决方 案和开放流程模型库。做领先的BPM民族软件厂商!

Solaris10的详情介绍
免费下载体验Solaris 10操作系统 毫无疑问,Solaris是业界最为优秀的操作系统

如何开发智能客户端应用
离线应用模块的合理利用



[align=center]<<对>的一些理解和疑问,欢迎大家一起讨论! | 帧内预测matlab程序 >>[/align]

没有评论。


添加新评论

大名Please enter your name
网址 
评论  Please enter a comment
Copyright ©2007 zhizhu666 蜘蛛777 模板提供:沪江博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息