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

📄 dispfeat.m

📁 hopfield neural network for binary image recognition
💻 M
字号:
% DISPFEAT - Displays feature types as detected by PHASECONG.%% This function provides a visualisation of the feature types as detected% by PHASECONG.%% Usage:  im = dispfeat(ft, edgeim, 'l')%% Arguments:  ft     - A complex valued image giving the weighted mean %                      phase angle at every point in the image for the %                      orientation having maximum energy.%             edgeim - A binary edge image (typically obtained via%                      non-maxima suppression and thresholding).%                      This is used as a `mask' to specify which bits of%                      the phase data should be displayed.%                      Alternatively you can supply a phase congruency%                      image in which case it is used to control the%                      saturation of the colour coding%             l      - An optional parameter indicating that a line plot%                      encoded by line style should also be produced. If%                      this is the case then `edgeim' really should be an%                      edge image.% % Returns:    im     - An edge image with edges colour coded according to%                      feature type. %% Two or three plots are generated:% 1. An edge image with edges colour coded according to feature type.% 2. A histogram of the frequencies at which the different feature types%    occur.% 3. Optionally a black/white edge image with edges coded by different line%    styles.  Not as pretty as the first plot, but it is something that can%    be put in a paper and reproduced in black and white.% Copyright (c) 2001 Peter Kovesi% School of Computer Science & Software Engineering% The University of Western Australia% http://www.csse.uwa.edu.au/% % Permission is hereby granted, free of charge, to any person obtaining a copy% of this software and associated documentation files (the "Software"), to deal% in the Software without restriction, subject to the following conditions:% % The above copyright notice and this permission notice shall be included in % all copies or substantial portions of the Software.%% The Software is provided "as is", without warranty of any kind.% June 2001function im = dispfeat(ft, edgeim)% Construct the colour coded image    maxhue = 0.7;             % Hues vary from 0 (red) indicating line feature to 		              % 0.7 (blue) indicating a step feature.    nhues = 50;         phaseang = angle(ft);     % Extract phase angles.		        % Map -ve phase angles to 0-pi    negphase = phaseang<0;    phaseang = negphase.*(-phaseang) + ~negphase.*phaseang;         % Then map angles > pi/2 to 0-pi/2    x = phaseang>(pi/2);                          phaseang = x.*(pi-phaseang) + ~x.*phaseang;        % Now set up a HSV image and convert to RGB    hsvim(:,:,1) = (pi/2-phaseang)/(pi/2)*maxhue;    hsvim(:,:,2) = edgeim;           % saturation    hsvim(:,:,3) = 1;        hsvim(1,:,3) = 0;    hsvim(end,:,3) = 0;        hsvim(:,1,3) = 0;    hsvim(:,end,3) = 0;                im = hsv2rgb(hsvim);    % Set up the colour key bar    keybar(:,:,1) = [maxhue:-maxhue/nhues:0]';    keybar(:,:,2) = 1;    keybar(:,:,3) = 1;    keybar = hsv2rgb(keybar);    % Plot the results    figure(1), clf    subplot('position',[.05 .1 .75 .8]), imshow(im)    subplot('position',[.8 .1 .1 .8]), imshow(keybar)    text(3,2,'step feature');    text(3,nhues/2,'step/line');    text(3,nhues,'line feature');% Construct the histogram of feature types    figure(2),clf    data = phaseang(find(edgeim));  % find phase angles just at edge points    Nbins = 32;    bincentres = [0:pi/2/Nbins:pi/2];    hdata = histc(data(:), bincentres);    bar(bincentres+pi/4/Nbins, hdata)      % plot histogram    ymax = max(hdata);    xlabel('phase angle'); ylabel('frequency');    ypos = -.12*ymax;    axis([0 pi/2 0 1.05*ymax])if nargin == 3    % Construct the feature type image coded using different line styles    % Generate a phase angle image with non-zero values only at edge    % points.  An offset of eps is added to differentiate points having 0    % phase from non edge points.    featedge = (phaseang+eps).*double(edgeim);    % Now construct feature images over specified phase ranges    f1 = featedge >= eps    & featedge < pi/6;    f2 = featedge >= pi/6   & featedge < pi/3;    f3 = featedge >= pi/3   & featedge <= pi/2;        fprintf('Linking edges for plots...\n');    [f1edgelst dum] = edgelink(f1,2);    [f2edgelst dum] = edgelink(f2,2);    [f3edgelst dum] = edgelink(f3,2);    figno = 3;    figure(figno), clf    % Construct a legend by first drawing some dummy, zero length, lines    % with the appropriate linestyles in the right order    line([0 0],[0 0],'LineStyle','-');    line([0 0],[0 0],'LineStyle','--');    line([0 0],[0 0],'LineStyle',':');    legend('step', 'step/line', 'line',3);    % Now do the real plots    plotedgelist(f1edgelst, figno, '-');    plotedgelist(f2edgelst, figno, '--');    plotedgelist(f3edgelst, figno, ':');    % Draw a border around the whole image    [r c] = size(edgeim);    line([0 c c 0 0],[0 0 r r 0]);    axis([0 c 0 r])    axis equal    axis ij    axis off    end%------------------------------------------------------------------------    % Internal function to plot an edgelist as generated by edgelink using a% specified linestylefunction plotedgelist(elist, figno, linestyle)    figure(figno);    for e = 1:length(elist)       line(elist{e}(:,2), elist{e}(:,1), 'LineStyle', linestyle, ...	    'LineWidth',1);    end

⌨️ 快捷键说明

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