matlab编程 图像相加矩阵不匹配

来源:百度知道 编辑:UC知道 时间:2024/06/20 17:37:37
[a,map]=imread('kuang.jpg','jpg');
[b,map]=imread('xiang.jpg','jpg');
[c,d]=size(a);
[e,f]=size(b);
x(:,:,1)=b(1:197,1:180,1);
x(:,:,2)=b(1:197,1:180,2);
x(:,:,3)=b(1:197,1:180,3);
for i=1:197
for j=1:180
if(a(i,j,1)<15&a(i,j,2)<15&a(i,j,3)<15)
new(i,j,1)=1;
new(i,j,2)=1;
new(i,j,3)=1;
else
new(i,j,1)=0;
new(i,j,2)=0;
new(i,j,3)=0;
end
end
end
new=uint8(new);
new1(:,:,1)=x(:,:,1).*new(:,:,1);
new2(:,:,1)=new1(:,:,1)+a(:,:,1);
new1(:,:,2)=x(:,:,2).*new(:,:,2);
new2(:,:,2)=new1(:,:,2)+a(:,:,2);
new1(:,:,3)=x(:,:,3).*new(:,:,3);
new2(:,:,3)=new1(:,:,3)+a(:,:,3);
subplot(2,2,1)
imshow(a)
subplot(2,2,2)
imshow(b)
subplot(2,2,3)
imshow(new2)
这是把两个图像相加,

因为你的这个程序主要是new1的长和宽是197,180,而a的长和宽还是原始图像kuang.jpg的长和宽,你看看c和d的值,因为你用[c,d]=size(a)求出来了,肯定是不等于197,180了;最简单的办法就是把197改成c,180改成d。或者你在
x(:,:,1)=b(1:197,1:180,1);
x(:,:,2)=b(1:197,1:180,2);
x(:,:,3)=b(1:197,1:180,3);
后面加一句a=a(1:197,1:180,:);