资源描述
Matlab7.0与数字图像处理
绪论作业1
作业要求:
用Matlab编程实现:
1)将附件图片1进行颜色转换,得到新的颜色。
2)程获得附件图片2、3所示的颜色表。
3)画出图4的像素灰度统计图。
参考知识
林宇星的参考程序
Matlab 矩阵操作
1、构造数组的方法:增量发和linspace(first,last,num)first和last为起始和终止数,num为需要的数组元素个数。
2、构造矩阵的方法:可以直接用[ ]来输入数组,也可以用以下提供的函数来生成矩阵。
ones() 创建一个所有元素都为1的矩阵,其中可以制定维数,1,2….个变量
zeros() 创建一个所有元素都为0的矩阵
eye() 创建对角元素为1,其他元素为0的矩阵
diag() 根据向量创建对角矩阵,即以向量的元素为对角元素
magic() 创建魔方矩阵
rand() 创建随机矩阵,服从均匀分布
randn() 创建随机矩阵,服从正态分布
randperm() 创建随机行向量
horcat C=[A,B],水平聚合矩阵,还可以用cat(1,A,B)
vercat C=[A;B],垂直聚合矩阵, 还可以用cat(2,A,B)
repmat(M,v,h) 将矩阵M在垂直方向上聚合v次,在水平方向上聚合h次
blkdiag(A,B) 以A,和B为块创建块对角矩阵
length 返回矩阵最长维的的长度
ndims 返回维数
numel 返回矩阵元素个数
size 返回每一维的长度,[rows,cols]=size(A)
reshape 重塑矩阵,reshape(A,2,6),将A变为2×6的矩阵,按列排列
rot90 旋转矩阵90度,逆时针方向
fliplr 沿垂轴翻转矩阵
flipud 沿水平轴翻转矩阵
transpose 沿主对角线翻转矩阵
ctranspose 转置矩阵,也可用A’或A.’,这仅当矩阵为复数矩阵时才有区别
inv 矩阵的逆
det 矩阵的行列式值
trace 矩阵对角元素的和
norm 矩阵或矢量的范数,norm(a,1),norm(a,Inf)…….
normest 估计矩阵的最大范数矢量
chol 矩阵的cholesky分解
cholinc 不完全cholesky分解
lu LU分解
luinc 不完全LU分解
qr 正交分解
kron(A,B) A为m×n,B为p×q,则生成mp×nq的矩阵,A的每一个元素都会乘上B,并占据p×q大小的空间
rank 求出矩阵的刺
pinv 求伪逆矩阵
A^p 对A进行操作
A.^P 对A中的每一个元素进行操作
matlab冒号的用法总结:
matlab如何读入多幅bmp格式的图片
for i=1:100
for j=1:25
img=imread(['d:\',num2str(i),filesep,num2str(j),'.bmp']); %文件位于d盘下面组号文件夹下面的文件,注意命名的时候,如果有补零的话,num2str那里要加参数。
%处理
end
end
BMP数据格式
BMP格式的数据存储在一个3维矩阵中,此3维矩阵为3层,每层由二维像素矩阵组成。
第一层为红色Red的灰度
第二层为绿色Green的灰度
第三层为蓝色Blue的灰度
绘图函数
将矩阵以表格输出
xlswrite
Write Microsoft Excel spreadsheet file (.xls)
xlswrite('filename', M)
绘制矩阵的三维数据统计图
meshgrid;mesh;
[X,Y] = meshgrid(-3:.125:3);
Z = peaks(X,Y);
meshc(X,Y,Z);
axis([-3 3 -3 3 -10 5])
作业源代码
1) 将附件图片1进行颜色转换,得到新的颜色。
function Homework_of_introduction
Image1=imread('E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\1.bmp');
Red_layer=Image1(:,:,1);%提取Red层灰度值
Green_layer=Image1(:,:,2);%提取Green层灰度值
Blue_layer=Image1(:,:,3);%提取Blue层灰度值
imwrite(Red_layer,'E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\Red层灰度值.bmp');
imwrite(Green_layer,'E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\Green层灰度值.bmp');
imwrite(Blue_layer,'E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\Blue层灰度值.bmp');
RG_mix=Image1;
RG_mix(:,:,3)=0;%RG混合图
RB_mix=Image1;
RB_mix(:,:,2)=0;%RB混合图
BG_mix=Image1;
BG_mix(:,:,1)=0;%BG混合图
imwrite(RG_mix,'E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\RG混合图.bmp');
imwrite(RB_mix,'E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\RB混合图.bmp');
imwrite(BG_mix,'E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\BG混合图.bmp');
2) 程获得附件图片2、3所示的颜色表
function Homework_of_introduction2
Image2=imread('E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\2.bmp');
Image3=imread('E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\3.bmp');
layer1=Image2(:,:,1);%提取第一层
layer2=Image2(:,:,2);%提取第二层
layer3=Image2(:,:,3);%提取第三层
imwrite(layer1,'E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\2提取第一层.bmp');%以图像形式输出
imwrite(layer2,'E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\2提取第二层.bmp');%以图像形式输出
imwrite(layer3,'E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\2提取第三层.bmp');%以图像形式输出
xlswrite('E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\2提取第一层.xls',layer1);%以表格数据形式输出图像数据
xlswrite('E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\2提取第二层.xls',layer2);%以表格数据形式输出图像数据
xlswrite('E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\2提取第三层.xls',layer3);%以表格数据形式输出图像数据
layer1=Image3(:,:,1);%提取第一层
layer2=Image3(:,:,2);%提取第二层
layer3=Image3(:,:,3);%提取第三层
imwrite(layer1,'E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\3提取第一层.bmp');%以图像形式输出
imwrite(layer2,'E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\3提取第二层.bmp');%以图像形式输出
imwrite(layer3,'E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\3提取第三层.bmp');%以图像形式输出
xlswrite('E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\3提取第一层.xls',layer1);%以表格数据形式输出图像数据
xlswrite('E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\3提取第二层.xls',layer2);%以表格数据形式输出图像数据
xlswrite('E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\3提取第三层.xls',layer3);%以表格数据形式输出图像数据
3) 画出图4的像素灰度统计图
function Homework_of_introduction3
Image4=imread('E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\4.bmp');
layer1=Image4(:,:,1);%提取第一层
layer2=Image4(:,:,2);%提取第二层
layer3=Image4(:,:,3);%提取第三层
imwrite(layer1,'E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\4提取第一层.bmp');%以图像形式输出
imwrite(layer2,'E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\4提取第二层.bmp');%以图像形式输出
imwrite(layer3,'E:\研究生课题\研究生课程学习\数字图像处理\绪论作业1\4提取第三层.bmp');%以图像形式输出
statis_table=zeros(65536,3);
k=1;
for i=1:256;
for j=1:256;
statis_table(k,1)=i;
statis_table(k,2)=j;
statis_table(k,3)=layer1(i,j);
k=k+1;
end
end%灰度值图像输出
meshc(statis_table)
展开阅读全文