⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dist_transform.m

📁 一个学习自然场景类别的贝叶斯模型、基于“词袋”模型的目标分类。来源于Feifei Li的论文。是近年来的目标识别模型热点之一。
💻 M
字号:
function [out,location]=dist_transform(cost_function,x_multiply,y_multiply,z_multiply)%% Wrapper function for the distance transform % Depending on the size of cost_function it will implement 1,2, or 3-D% versions of the distance transform. %% Running out of time to comment this fully.....    % The actual transform is performed by the dist_transform_1d function  % and is based on the methods described in:%%% Felzenszwalb, P. and Huttenlocher, D. "Pictorial Structures for Object%% Recognition", Intl. Journal of Computer Vision, 61(1), pp. 55-79, January 2005.    %  % R.Fergus 6/10/05 (fergus@csail.mit.edu)    if (nargin==1)   x_multiply = 1;   y_multiply = 1;     z_multiply = 1;   endif (nargin==2)   y_multiply = 1;     z_multiply = 1;   end   if (nargin==3)   z_multiply = 1;   end   [size_y, size_x, size_z]=size(cost_function);if ndims(cost_function)>3   error('Can only handle 1,2 or 3-D cost functions');endif ((size_y==1) | (size_x==1))   %%% 1-D   mode = '1D';   if (size_y>size_x)      cost_function = cost_function';      [size_y, size_x, size_z]=size(cost_function);   end   elseif (size_z==1)   mode = '2D';else   mode = '3D';   endif strcmp(mode,'1D');      [out,location] = dist_transform_1d(cost_function*x_multiply,size_x); elseif strcmp(mode,'2D')   out = zeros(size_y,size_x);   location = zeros(size_y,size_x,2);      for row=1:size_y            [out(row,:),location(row,:,1)] = dist_transform_1d(cost_function(row,:)*x_multiply,size_x);         end      for col=1:size_x            [out(:,col),location(:,col,2)] = dist_transform_1d(out(:,col)/x_multiply*y_multiply,size_y);         end      out = out / y_multiply;   else %%% 3-D mode      out = zeros(size_y,size_x,size_z);   location = zeros(size_y,size_x,size_z,3);       for depth = 1:size_z         for row=1:size_y	 	 [out(row,:,depth),location(row,:,depth,1)] = dist_transform_1d(cost_function(row,:,depth)*x_multiply,size_x);	       end            for col=1:size_x	 	 [out(:,col,depth),location(:,col,depth,2)] = dist_transform_1d(out(:,col,depth)/x_multiply*y_multiply,size_y);	       end      end      for col=1:size_x      for row=1:size_y	 	 [out(row,col,:),location(row,col,:,3)] = dist_transform_1d(out(row,col,:)/y_multiply*z_multiply,size_z);            end   end        out = out / z_multiply;   end               

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -