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

📄 mydetgmc.m

📁 基于matlab写的对人体的分割程序
💻 M
字号:
function [m,theta] = mydetGMc(im,sigma,nbins)
% function [m,theta] = mydetGM(im,sigma,nbins)
%
% Compute image gradient magnitude.
%
% INPUT
%	im	Image.
%	sigma	Scale at which to compute image derivatives.
%
% OUTPUT
%	m	Gradient magnitude.
%	theta	Orientation of gradient + pi/2 
%		(i.e. edge orientation).
%
% David R. Martin <dmartin@eecs.berkeley.edu>
% March 2003

if nargin < 3,
    nbins = 8;
    nbins = 24;
end

%if isrgb(im), im=rgb2gray(im); end
%idiag = norm(size(im));

%if nargin<2, sigma=2; end
%sigma = max(0.5,sigma);

% compute x and y image derivatives
% use elongated Gaussian derivative filters
%fb = cell(2,1);
fb1 = oeFilterc(sigma*[1 1],3,pi/2,1);
fb2 = fb1';
im = double(im);
[sizy sizx sizz] = size(im);

[dx,dy] = deal(zeros(size(im)));
for i = 1:sizz
  dx(:,:,i) = filter2(fb1,im(:,:,i));
  dy(:,:,i) = filter2(fb2,im(:,:,i));
end
m = sqrt(dx.^2 + dy.^2);

if sizz == 3,
    [m,I] = max(m,[],3);
    inds = sizy*sizx*(I - 1) + reshape([1:(sizy*sizx)],sizy,sizx);
    dx = dx(inds);
    dy = dy(inds);
end
theta = mod(atan2(dy,dx)+pi/2,pi);
m = nonmax(m,theta);
step = 2*pi/nbins;
thets = [0:step:2*pi-step];
[binu,binv] = pol2cart(thets,1);
[dummy, I] = min(dx(:)*binu + dy(:)*binv,[],2);
theta = reshape(I,size(dx));

%Zero-out border effects
r = floor(size(fb1,1)/2);
m([1:r end-r:end],:) = 0;
m(:,[1:r end-r:end]) = 0;

⌨️ 快捷键说明

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