当然可以啦,其实图像就是数字矩阵,图像的拼接就是矩阵的拼接,横着拼得行数相等,竖着拼得列数相等就行
例子
clc;
clear;
a=imread('我的jpg');
[m n t]=size(a);
b=a(1:fix(m/2),:,:);%取图像的上半部分
c=a(fix(m/2)+1:end,:,:);%取图像的下半部分
figure(1);
imshow(b);
figure(2);
imshow(c);
%注意,上下拼接要求两幅图的列数要相同
%左右拼行数要相同
figure(3);
d=[b;c];%把b,c拼起来,若左右拼接d=[b,c];
imshow(d);
取两BMP文件头,获得两的Height值。然后将两的Height相加获得新的Height。配合其他参数(文件Size等)组成新的文件头。然后将两文件的点阵以两个数组取出来先后存到新的文件的点阵区。
宽度不同:
以比较宽的为准,对点阵行 *** 作,不足的以底色补位。
模式相同、色深不同:
以色深比较大的为准,色深少的以乘法放大插值。
索引色到RGB:
以索引表过滤取得RGB,写到新文件里。
matlab读进来的一般是rgb三通道的(以这个举例),是一个三维矩阵(第三维度为3),只要设一个大的矩阵,把各个小矩阵按位置赋值过去就行了。
比如100个为img(i),i为1~100,每张尺寸大小2828(或者你读的时候,size或者看一下的大小)
image = ones(2810,2810,3);
count = 0;
for i = 1:10
for j = 1:10
count = count + 1;
image((i28-28+1):i28, (j28-28+1):j28,:) = img(count);end
end
12000×12000=144M个像素左右。
你如果合理控制的话,应当是可以的。
32位的MATLAB:
单个数组最大为: 677 MB
MATLAB所有总数组最大为:1602 MB
A=zeros(12000,12000)); %这个出错,一个浮点是8字节,A占内存:144M8=12G左右。超过了。
不过:
R=uint8(zeros(12000,12000));
G=uint8(zeros(12000,12000));
B=uint8(zeros(12000,12000));
这三个RGB没有问题。
也就是说你RGB组合12000×12000是没有问题的。
你多走一弯路,应当可以的。
如果超出总内存的话,适当的时候,你就clear 一些变量。
以上就是关于利用matlab可以拼图吗就是把两幅图像拼成一副图像全部的内容,包括:利用matlab可以拼图吗就是把两幅图像拼成一副图像、如何在MATLAB图像中将左右两幅图合并到一起、请问如何用matlab拼接100幅图片,就是把幅图片上下左右拼成一幅10*10的图。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)