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);
应该怎样改?

参考技术A 从出错信息上看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)返回空矩阵情况的容错处理。本回答被提问者采纳
参考技术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的主要内容,如果未能解决你的问题,请参考以下文章

matlab那个版本可以进行点云

matlab 函数,matlab 语法1

matlab怎么保存 matlab如何保存

github里面有matlab吗

matlab激活问题

matlab编译com问题多多