回 帖 发 新 帖 刷新版面

主题:[讨论]Matlab图像特征提取程序请教

哪位高人能帮帮小弟解决一下这个程序出现的问题?拜托拜托,小弟毕业设计等着用的
% Usage:                 cim = harris(im, sigma)
%                [cim, r, c] = harris(im, sigma, thresh, radius, disp)
%  [cim, r, c, rsubp, csubp] = harris(im, sigma, thresh, radius, disp)
%
% Arguments:   
%            im     - image to be processed.
%            sigma  - standard deviation of smoothing Gaussian. Typical
%                     values to use might be 1-3.
%            thresh - threshold (optional). Try a value ~1000.
%            radius - radius of region considered in non-maximal
%                     suppression (optional). Typical values to use might
%                     be 1-3.
%            disp   - optional flag (0 or 1) indicating whether you want
%                     to display corners overlayed on the original
%                     image. This can be useful for parameter tuning. This
%                     defaults to 0
%
% Returns:
%            cim    - binary image marking corners.
%            r      - row coordinates of corner points.
%            c      - column coordinates of corner points.
%            rsubp  - If five return values are requested sub-pixel
%            csubp  - localization of feature points is attempted and
%                     returned as an additional set of floating point
%                     coords. Note that you may still want to use the integer
%                     valued coords to specify centres of correlation windows
%                     for feature matching.



function [cim, r, c, rsubp, csubp] = harris(im, sigma, thresh, radius, disp)
    
    error(nargchk(2,5,nargin));
    if nargin == 4
    disp = 0;
    end
    
    if ~isa(im,'double')
    im = double(im);
    end

    subpixel = nargout == 5;
    
    dx = [-1 0 1; -1 0 1; -1 0 1];   % Derivative masks
    dy = dx';
    
    Ix = conv2(im, dx, 'same');      % Image derivatives
    Iy = conv2(im, dy, 'same');    

    % Generate Gaussian filter of size 6*sigma (+/- 3sigma) and of
    % minimum size 1x1.
    g = fspecial('gaussian',max(1,fix(6*sigma)), sigma);
    
    Ix2 = conv2(Ix.^2, g, 'same'); % Smoothed squared image derivatives
    Iy2 = conv2(Iy.^2, g, 'same');
    Ixy = conv2(Ix.*Iy, g, 'same');
    cim = (Ix2.*Iy2 - Ixy.^2)./(Ix2 + Iy2 + eps); % My preferred  measure.
    if nargin > 2   % We should perform nonmaximal suppression and threshold

    if disp  % Call nonmaxsuppts to so that image is displayed
        if subpixel
        [r,c,rsubp,csubp] = nonmaxsuppts(cim, radius, thresh, im);
        else
        [r,c] = nonmaxsuppts(cim, radius, thresh, im);        
        end
    else     % Just do the nonmaximal suppression
        if subpixel
        [r,c,rsubp,csubp] = nonmaxsuppts(cim, radius, thresh);
        else
        [r,c] = nonmaxsuppts(cim, radius, thresh);        
        end
    end
    end


出现的问题是:??? Error using ==> harris
Not enough input arguments.
小弟一直想不清楚,还望高人能指点一二,十分感激啦[em2][em2][em2]

回复列表 (共2个回复)

沙发

不好意思,看不出来

板凳


可有偿提供提供代码解决方案

我来回复

您尚未登录,请登录后再回复。点此登录或注册