利用matlab可以拼图吗就是把两幅图像拼成一副图像

利用matlab可以拼图吗就是把两幅图像拼成一副图像,第1张

当然可以啦,其实图像就是数字矩阵,图像的拼接就是矩阵的拼接,横着拼得行数相等,竖着拼得列数相等就行

例子

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的图。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10057723.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存