I=imread('0294.jpg'); I1=RGB2Lab(I); L1 = double(I1(:,:,1)); L2 = double(I1(:,:,2)); L3 = double(I1(:,:,3)); PL1=mean(L1(:)); PL2=mean(L2(:)); PL3=mean(L3(:)); [m,n]=size(L1); for i=1:m for j=1:n LL1(i,j)=abs(L1(i,j)-PL1); end end for i=1:m for j=1:n LL2(i,j)=abs(L2(i,j)-PL2); end end for i=1:m for j=1:n LL3(i,j)=abs(L3(i,j)-PL3); end end LLL1=reshape(LL1,1,[]); SL1=std(LLL1); LLL2=reshape(LL2,1,[]); SL2=std(LLL2); LLL3=reshape(LL3,1,[]); SL3=std(LLL3); %比较标准差最大 SL=max(max(SL1,SL2),SL3); G = fspecial('gaussian', [5 5], 1); GL1=imfilter(LL1, G, 'circular'); hist=imhist(GL1)/prod(size(GL1)); G1=find(hist); H1=-hist(G1)'*log2(hist(G1)); GL2=imfilter(LL2, G, 'circular'); hist=imhist(GL2)/prod(size(GL2)); G2=find(hist); H2=-hist(G2)'*log2(hist(G2)); GL3=imfilter(LL3, G, 'circular'); hist=imhist(GL3)/prod(size(GL3)); G3=find(hist); H3=-hist(G3)'*log2(hist(G3)); %比较二维熵最小的 H=min(min(H1,H2),H3); if(SL==SL1) ZL=LL1; end if(SL==SL2) ZL=LL2; end if(SL==SL3) ZL=LL3; end if(H==H1) HL=LL1; end if(H==H2) HL=LL2; end if(H==H3) HL=LL3; end %计算初始显著图 C=0.35*ZL+0.65*HL; [Z E]=lrr(C,0.01);%全局低秩Z为低秩部分E为稀疏部分 ZZ=(C-Z).*C; figure,imshow(ZZ,[]);运行代码时报错矩阵维度必须一致。 出错 Untitled3 (line 69) ZZ=(C-Z).*C;如何修正
时间: 2023-06-15 22:04:14 浏览: 137
根据错误提示,矩阵维度必须一致,说明在执行`ZZ=(C-Z).*C`这一行代码时,矩阵C和矩阵Z的维度不同。
在这段代码中,矩阵C的维度是由LL1、LL2、LL3中的一个确定的,而矩阵Z是通过`[Z E]=lrr(C,0.01)`计算得到的,因此可能存在矩阵维度不同的情况。
解决方法是检查矩阵C和矩阵Z的维度,确保它们的维度一致。可以通过使用`size()`函数检查矩阵的维度,或者在调试时查看变量的值,找到维度不同的原因并进行调整。
相关问题
I=imread('0294.jpg'); I=imresize(I,[300 300]); I1=RGB2Lab(I); L1 = double(I1(:,:,1)); L2 = double(I1(:,:,2)); L3 = double(I1(:,:,3)); PL1=mean(L1(:)); PL2=mean(L2(:)); PL3=mean(L3(:)); [m,n]=size(L1); for i=1:m for j=1:n LL1(i,j)=abs(L1(i,j)-PL1); end end如何调整代码使其在处理图片时最终输出的图片不会改变大小
可以将imresize函数的第二个参数去掉,这样就不会改变图片的大小。修改后的代码如下:
```
I=imread('0294.jpg');
I1=RGB2Lab(I);
L1 = double(I1(:,:,1));
L2 = double(I1(:,:,2));
L3 = double(I1(:,:,3));
PL1=mean(L1(:));
PL2=mean(L2(:));
PL3=mean(L3(:));
[m,n]=size(L1);
for i=1:m
for j=1:n
LL1(i,j)=abs(L1(i,j)-PL1);
end
end
```
a=imread('lena.jpg') I1=uint8(zeros(256)) I2=I1,I3=a(:,:,3) A=cat(3,I1,I2,I3) subplot(2,2,3), imshow(A) 修改代码’
你可以修改代码如下:
```python
a = imread('lena.jpg')
I1 = uint8(zeros(256))
I2 = I1
I3 = a[:,:,3]
A = cat(3, I1, I2, I3)
subplot(2, 2, 3)
imshow(A)
```
这样就完成了代码的修改。
阅读全文