首页 新闻 会员 周边 捐助

程序运行出错,求指教!

0
[待解决问题]

这段程序的最后一行调用了一个minfilt2函数,但是每次运行到这里就出错,我的MATLAB版本是2014a,师兄的MATLAB是MATLAB7版本,他的就可以运行,请各位同学老师帮忙看看,我这是哪里出现错误了,错误在下边,我贴出来了。
clc;
clear all;
tic
img_name=imread('ny1.bmp');
% 原始图像
I=double(img_name)/255;
figure,imshow(I)
% 获取图像大小
[h,w,c]=size(I);
win_size = 7;
img_size=w*h;
win_dark=zeros(h,w);
k=0.01;
w0=0.95;
t0=0.1;
for y=1:h

    for x=1:w

        win_dark(y,x) = min(I(y,x,:));

    end

end
figure,imshow(win_dark), title('Min(R,G,B)');
win_dark1 = minfilt2(win_dark, [win_size,win_size]);

运行到这里之后,MATLAB提示错误如下:
未定义与 'double' 类型的输入参数相对应的函数 'vanherk'。

出错 minfilt2 (line 29)
Y = vanherk(X,S(1),'min',shape);

出错 sunxiaoming1 (line 26)
win_dark1 = minfilt2(win_dark, [win_size,win_size]);

minfilt2的程序如下:
function Y = minfilt2(X,varargin)
%  MINFILT2    Two-dimensional min filter
%
%     Y = MINFILT2(X,[M N]) performs two-dimensional minimum
%     filtering on the image X using an M-by-N window. The result
%     Y contains the minimun value in the M-by-N neighborhood around
%     each pixel in the original image. 
%     This function uses the van Herk algorithm for min filters.
%
%     Y = MINFILT2(X,M) is the same as Y = MINFILT2(X,[M M])
%
%     Y = MINFILT2(X) uses a 3-by-3 neighborhood.
%
%     Y = MINFILT2(..., 'shape') returns a subsection of the 2D
%     filtering specified by 'shape' :
%        'full'  - Returns the full filtering result,
%        'same'  - (default) Returns the central filter area that is the
%                   same size as X,
%        'valid' - Returns only the area where no filter elements are outside
%                  the image.
%
%     See also : MAXFILT2, VANHERK
%

% Initialization
[S, shape] = parse_inputs(varargin{:});

% filtering
Y = vanherk(X,S(1),'min',shape);
Y = vanherk(Y,S(2),'min','col',shape);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [S, shape] = parse_inputs(varargin)
shape = 'same';
flag = [0 0]; % size shape

for i = 1 : nargin
   t = varargin{i};
   if strcmp(t,'full') & flag(2) == 0
      shape = 'full';
      flag(2) = 1;
   elseif strcmp(t,'same') & flag(2) == 0
      shape = 'same';
      flag(2) = 1;
   elseif strcmp(t,'valid') & flag(2) == 0
      shape = 'valid';
      flag(2) = 1;
   elseif flag(1) == 0
      S = t;
      flag(1) = 1;
   else
      error(['Too many / Unkown parameter : ' t ])
   end
end

if flag(1) == 0
   S = [3 3];
end
if length(S) == 1;
   S(2) = S(1);
end
if length(S) ~= 2
   error('Wrong window size parameter.')
end

zbs19890223的主页 zbs19890223 | 菜鸟二级 | 园豆:204
提问于:2016-10-17 17:15
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册