cc=imread('<a href=“http://upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Pavlovsk_Railing_of_bridge_Yellow_palace_Winter.jpg/250px-Pavlovsk_Railing_of_bridge_Yellow_palace_Winter.jpg”>wintersm.jpg</a>');
c=rgb2gray(cc);
x=ones(256,1)*[1:256];
c2=double(c).*(x/2+50)+(1-double(c)).*x/2;
c3=uint8(255*mat2gray(c2));
t=graythresh(c3);
ct=im2bw(c3,t);
这是一个代码,我已经写了阈值的图像,但不能执行,因为错误" ==>次矩阵尺寸必须一致。"。我是matlab新手,我不知道如何解决这个问题。请帮助。
我看了看图片,它的大小是169x250
。因此是size(c) = [169 250]
,而size(x) = [256 256]
。由于.*
在c
和x
之间的操作需要它们都是相同的大小,因此它给出了错误。
重新定义x
,使其大小与c
的大小匹配
我运行了你的代码,但在c2=double(c).*(x/2+50)+(1-double(c)).*x/2;
之前添加了以下行,我添加了这个:
size(x)
size(c)
,你会得到以下打印:
ans =
256 256
ans =
169 250
本质上说,图像不是你想象的那么大,你把你的矩阵大小混在一起了。