Реализация потока средней кривизны (MCF) для изображения в Matlab - PullRequest
0 голосов
/ 21 июня 2011

Мне нужно написать программу Matlab, в которой мне нужно иметь возможность рассчитать гауссовский градиент изображения, а затем вычислить поток средней кривизны (MCF) по следующей формуле:

k = {[(Ix^2)(Iyy)] - [2IxIyIxy] + [(Iy^2)(Ixx)]} / {[(Ix^2)(Iy^2)]^ 3/2}

Я могу рассчитать градиент Гаусса, но мне нужна помощь, чтобы понять эту формулу и предложения о том, как я мог бы реализовать это с помощью Matlab. Любое руководство / помощь, которую я могу получить по этому вопросу, высоко ценится!

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Вы можете проверить Обнаружение угла Харриса часть (которая очень похожа на вашу в плане реализации) функций Питера Ковеси MATLAB для Computer Vision . Особенно эта часть:

% Compute derivatives and elements of the structure tensor.
[Ix, Iy] = derivative5(im, 'x', 'y');
Ix2 = gaussfilt(Ix.^2,  sigma);
Iy2 = gaussfilt(Iy.^2,  sigma);    
Ixy = gaussfilt(Ix.*Iy, sigma);    

Я надеюсь, что они дадут вам интуицию для реализации формулы, которую вы даете.

0 голосов
/ 05 января 2017

Может быть, это может вам помочь.

%mean curvature

function H = MeanCurvature(im)

  Ix = Dx(im); 
  Iy = Dy(im);
  Ixx = Dx(Ix);
  Iyy = Dy(Iy);    
  Ixy = Dx(Iy);
  H = ((1 + Ix.^2).*Iyy - 2*Ix.*Iy.*Ixy+(1 + Iy.^2).*Ixx)./(2*(1 + Ix.^2 + Iy.^2))^(3/2);

end

function d = Dx(u)

  [row,column,p] = size(u);
  d = zeros(row,column,p); 
  d(:,2:column,:) = u(:,1:column-1,:) - u(:,2:column,:);
  d(:,1,:) = u(:,1,:) - u(:,column,:);

end

function d = Dy(u)

  [row, column, p] = size(u);
  d = zeros(row, column, p);
  d(2:row,:,:) = u(1:row-1,:,:) - u(2:row,:,:);
  d(1,:,:) = u(1,:,:)-u(row,:,:);

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...