matlab imresize
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab imresize相关的知识,希望对你有一定的参考价值。
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);
应该怎样改?
往回推是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)返回空矩阵情况的容错处理。本回答被提问者采纳 参考技术B 。。。我运行了 好用
matlab函数之imresize()
B = imresize(A,scale)
返回图像 B
= imresize(A
,scale
)B
,它是将 A
的长宽大小缩放 scale
倍之后的图像。输入图像 A
可以是灰度、RGB 或二值图像。如果 A
有两个以上维度,则 imresize
只调整前两个维度的大小。如果 scale
在 [0, 1] 范围内,则 B
比 A
小。如果 scale
大于 1,则 B
比 A
大。默认情况下,imresize
使用双三次插值。
举例:
I = imread(‘ngc6543a.jpg‘);
%将图像的长宽缩小二分之一。
J = imresize(I, 0.5);
%显示原始图像和调整大小后的图像。
figure(2); imshow(I);
figure(3); imshow(J);
来源:https://ww2.mathworks.cn/help/matlab/ref/imresize.html?searchHighlight=imresize&s_tid=doc_srchtitle
以上是关于matlab imresize的主要内容,如果未能解决你的问题,请参考以下文章