中易网

matlab 代码问题 Undefined function or method 'zoom3' for input arguments of type 'uint8&a

答案:1  悬赏:0  
解决时间 2021-04-27 13:27
  • 提问者网友:房东的猫
  • 2021-04-27 10:14
clear all;
clc;
A=imread('C:\Users\hwy\Desktop\Miss.bmp');
%A = rgb2gray(a);
[B1]=zoom3(A); %最邻近插值算法 3倍放大函数
[B2]=zoom3x(A); %双线性插值算法 3倍倍放大函数
Function [I]=zoom3(A)
h=length(A(:,1));
l=length(A(1,:));
B=zeros(3*h,3*l); %扩充得到一个三倍矩阵
for i=1:h
for j=1:l
B(3*i,j*3)=double(A(i,j)); %把原图的每一列采样值作为目的图的3倍列数
B(3*i,3*j-1)=double(A(i,j));%把3倍列数的值付给他的前两列
B(3*i,j*3-2)=double(A(i,j));
end
B(3*i-1,:)=B(3*i,:); %把3倍行数值赋给她的前面两行
B(3*i-2,:)=B(3*i,:);
end
I=mat2gray(B); % 把图转化为灰度图
imshow(A); %显示图像
figure(2);
imshow(I);

%双线性插值算法 3倍放大函数
Function [Out]=zoom3x(A)
[clos,rows]=size(A);
width=3*clos;
height=3*rows;
Out=zeros(width,height);
for x=3:width-3
for y=3:height-3
oldX=x/3;
oldY=y/3;
if (oldX/double(uintl6(oldX))==1.0)&&(oldY/double(uintl6(oldY))==1.0)
Out(x,y)=A(oldX,oldY);
else
a=double(fix(oldX));
b=double(fix(oldY));
x11=double(A(a,b));
x12=double(A(a,b+1));
x21=double(A(a+1,b));
x22=double(A(a+1,b+1));
Out(x,y)=((b+1-oldY)*((oldX-a)*x21+(a+1-oldX)*x11)+(oldY -b)*((oldX-a)*x22+(a+1-oldX)*x12));
end
end
end
imshow(A);
title('原始图像')
figure(2);
Out=mat2gray(Out);
imshow(Out);
size(Out);
最佳答案
  • 二级知识专家网友:晨与橙与城
  • 2021-04-27 10:57
zoom3不是matlab程序自带的function,很可能是你自己写的或者是别人写的一个自编script,因此你需要查验一下它是否被add path并能够被调用了。
解决办法:
step1) 用which zoom3查看zoom3这个函数的路径,如果不能找到,那么就说明没有被add path,需要你自己找到这个zoom3的script并add path;
或者是doc zoom3命令也可以,如果存在zoom3这个函数并可以调用的话,这个命令执行后将弹出一个界面,里面讲解了这个函数的用法
step2) 如果which zoom3返回了路径,那说明zoom3是可以调用的,那你就需要查看在这个script中zoom3的输入参数是否符合要求了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息