所以我有一堆代码需要花费大约一分钟的时间来运行,将它跟踪到自适应阈值,特别是一行。关于如何加速或解释为什么这是不可避免的任何建议?“mIM = medfilt2(IM,[ws ws]);”是一切放缓的地方。MATLAB自适应阈值超慢

function bw=adaptivethreshold(IM,ws,C,tm)

%ADAPTIVETHRESHOLD An adaptive thresholding algorithm that seperates the

%foreground from the background with nonuniform illumination.

% bw=adaptivethreshold(IM,ws,C) outputs a binary image bw with the local

% threshold mean-C or median-C to the image IM.

% ws is the local window size.

% tm is 0 or 1, a switch between mean and median. tm=0 mean(default); tm=1 median.

%

% Contributed by ...

% at Tsinghua University, Beijing, China.

%

% For more information, please see

% http://homepages.inf.ed.ac.uk/rbf/HIPR2/adpthrsh.htm

if (nargin<3)

error('You must provide the image IM, the window size ws, and C.');

elseif (nargin==3)

tm=0;

elseif (tm~=0 && tm~=1)

error('tm must be 0 or 1.');

end

IM=mat2gray(IM);

disp(strcat('100: ',datestr(now)))

if tm==0

mIM=imfilter(IM,fspecial('average',ws),'replicate');

else

mIM=medfilt2(IM,[ws ws]);

end

sIM=mIM-IM-C;

bw=im2bw(sIM,0);

bw=imcomplement(bw);

+0

你尝试'gpuArray '在GPU上执行操作?您的函数似乎与gpuArrays兼容,当您读取图像时使用类似'gpuArray(imread(...))'的方法 –

2015-04-02 20:35:40

+0

中值滤波是一种非线性操作,这是很正常的,需要很长时间。我并不感到惊讶,特别是如果图像很大或者“ws”很大。 –

2015-04-02 20:43:47

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐