ordfilt2:查找需要变量大小调整

时间:2016-04-19 09:58:12

标签: c++ matlab image-processing matlab-coder vivado

我想从以下Matlab函数(Harris角点检测)生成c ++代码,该函数检测图像中的角点。我的约束是我必须在C ++中生成静态库没有可变大小支持。 因此,我已禁用设置中的可变大小支持,并且还选择了目标平台作为未指定的32位处理器。 通过这种方式,我将能够在Vivado HLS中将其用于FPGA项目。

但是,当我生成代码时,包含 ordfilt2 函数的行会抛出 FIND需要变量大小调整的错误。

如果有解决此问题的方法,请帮助我。我在此处发布了类似的问题Matlab error "Find requires variable sizing"。但我不确定这是如何适用于我的情况。谢谢。

以下是代码:

function [cim] = harris(im , thresh)

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.
sigma = 1.5;
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); % Harris corner measure

% Extract local maxima by performing a grey scale morphological
% dilation and then finding points in the corner strength image that
% match the dilated image and are also greater than the threshold.

radius = 1.5;
sze = 2*radius+1;                   % Size of mask.


mx = ordfilt2(cim,sze^2,ones(sze)); % Grey-scale dilate.

cim = (cim==mx)&(cim>thresh);       % Find maxima.


end

 And here's the error

0 个答案:

没有答案