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

📄 do_vq.m

📁 一个学习自然场景类别的贝叶斯模型、基于“词袋”模型的目标分类。来源于Feifei Li的论文。是近年来的目标识别模型热点之一。
💻 M
字号:
function do_vq(config_file)%% Function takes the regions in interest_points directory, along with%% their descirptors and vector-quantizes them using the codebook%% specified in the VQ structure.  %% The VQ label is then stored in the interest_point/interest_xxxx.mat%% file in the descriptor_vq variable. A histogram over codebook%% entries is also computed and stored.%% Before running this, you must have run:%%    do_random_indices - to generate random_indices.mat file%%    do_preprocessing - to get the images that the operator will run on  %%    do_interest_op  - to get extract interest points (x,y,scale) from each image%%    do_representation - to get appearance descriptors of the regions   %% You must also have either: (a) run do_form_codebook to generate a codebook file%%                        or: (b) already have a valid codebook file in%% CODEBOOK_DIR, matching the VQ.Codebook_Type tag and of size VQ.Codebook_Size.  %% R.Fergus (fergus@csail.mit.edu) 03/10/05.               %% Evaluate global configuration fileeval(config_file);%% If no VQ structure specifying codebook%% give some defaultsif ~exist('VQ')  %% use default codebook family  VQ.Codebook_Type = 'generic';  %% 1000 words is standard setting  VQ.Codebook_Size = 1000;end%% Evaluate global configuration fileeval(config_file); %% Get list of interest point file namesip_file_names =  genFileNames({Global.Interest_Dir_Name},[1:Categories.Total_Frames],RUN_DIR,Global.Interest_File_Name,'.mat',Global.Num_Zeros); %% How many images are we processing?nImages = Categories.Total_Frames;%% Now load up codebookcodebook_name = [CODEBOOK_DIR , '/', VQ.Codebook_Type ,'_', num2str(VQ.Codebook_Size) , '.mat'];load(codebook_name);tic;    %%% Loop over all images....  for i=1:nImages        if (mod(i,10)==0)      fprintf('.%d',i);    end        %%% Load up interest point file    load(ip_file_names{i});        %%% Find number of points per image    nPoints = length(scale);        %%% Set distance matrix to all be large values    distance = Inf * ones(nPoints,VQ.Codebook_Size);        %%% Loop over all centers and all points and get L2 norm btw. the two.    for p = 1:nPoints      for c = 1:VQ.Codebook_Size        distance(p,c) = norm(centers(:,c) - double(descriptor(:,p)));      end    end        %%% Now find the closest center for each point    [tmp,descriptor_vq] = min(distance,[],2);    %%% Now compute histogram over codebook entries for image    histogram = zeros(1,VQ.Codebook_Size);        for p = 1:nPoints      histogram(descriptor_vq(p)) = histogram(descriptor_vq(p)) + 1;    end        %%% transpose to match other variables    descriptor_vq = descriptor_vq';        %%% append descriptor_vq variable to file....    save(ip_file_names{i},'descriptor_vq','histogram','-append');      end  total_time=toc;fprintf('\nFinished running VQ process\n');fprintf('Total number of images: %d, mean time per image: %f secs\n',nImages,total_time/nImages);

⌨️ 快捷键说明

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