matlab imresize

来源:百度知道 编辑:UC知道 时间:2024/09/24 18:21:16
clear all;
for kk=0:19
p1=ones(16,16);
m=strcat(int2str(kk),'.bmp');
x=imread(m,'bmp');
bw=im2bw(x,0.5);
[i,j]=find(bw==0);
imin=min(i);
imax=max(i);
jmin=min(j);
jmax=max(j);
bw1=bw(imin:imax,jmin:jmax);
rate=16/max(size(bw1));
bw1=imresize(bw1,rate);
运行到这儿出现错误:
??? Error using ==> iptcheckinput
Function IMRESIZE expected its first input, A, to be nonempty.

Error in ==> imresize>parsePreMethodArgs at 354
iptcheckinput(A, {'numeric', 'logical'}, {'nonsparse', 'nonempty'},
mfilename, 'A', 1);

Error in ==> imresize>parseInputs at 259
[params.A, params.map, params.scale, params.output_size] = ...

Error in ==> imresize at 136
params = parseInputs(varargin{:});

Error in ==> PT at 14
bw1=imresize(bw1,rate);
应该怎样改

从出错信息上看imresize的第一个参数A被赋值为空矩阵了,也就是bw1为空。

往回推是find(bw==0)返回的是空矩阵,也就是说bw的值都是1。

而bw是由bw=im2bw(x,0.5)赋值的,

这个函数的作用是把彩色或者灰度级的图像变为黑白图像。
0表示黑色,1表示白色。

第二个参数的0.5表示从0到1的灰度级的什么地方划分开,
灰度级大于0.5的就转变为白色1,小于0.5的就变为黑色0。
当然,这个参数不一定取0.5,可以取0到1的任意值。

现在find(bw==0)返回空,就是说bw的值都是1,
那么说明原来的图像x各点在灰度级上更接近于白色,没有比0.5小的。
或者说图像都是亮色调的,没有暗色调的。

所以看看是不是你的bmp图像是亮颜色的,换个颜色对比比较大的图像试试。
为了避免再出错,最好加上对find(bw==0)返回空矩阵情况的容错处理。

。。。我运行了 好用