2014-09-22 2 views
2

내 세그먼트 작업에 그래프 컷 메서드를 적용하려고합니다. Graph_Cut_Demo에 몇 가지 예제 코드가 있습니다. 코드의Matlab을 사용한 그래프 잘라 내기

부분은 사용 된 방법은 그래프 초기화 데이터 기간 DC를 얻을 클러스터링 K-수단 보인다

img = im2double(imread([ImageDir 'cat.jpg'])); 
[ny,nx,nc] = size(img); 
d = reshape(img, ny*nx, nc); 
k = 2; % number of clusters 
[l0 c] = kmeans(d, k); 
l0 = reshape(l0, ny, nx); 

% For each class, the data term Dc measures the distance of 
% each pixel value to the class prototype. For simplicity, standard 
% Euclidean distance is used. Mahalanobis distance (weighted by class 
% covariances) might improve the results in some cases. Note that the 
% image intensity values are in the [0,1] interval, which provides 
% normalization. 

Dc = zeros(ny, nx, k); 
for i = 1:k 
    dif = d - repmat(c(i,:), ny*nx,1); 
    Dc(:,:,i) = reshape(sum(dif.^2,2), ny, nx); 
end 

아래 도시된다. 그러나, 나는 그들이이 데이터 용어를 어떻게 계산하는지 이해하지 못한다. 그들이 의견 네에서

dif = d - repmat(c(i,:), ny*nx,1); 

를 사용하는 이유는 데이터 용어를 Dc 측정 클래스 프로토 타입에 각 픽셀 값의 거리를 말했다. 수업 프로토 타입은 무엇이며 왜 k-means 라벨로 결정할 수 있습니까?

다른 구현 Graph_Cut_Demo2, 그것은이 나에게 많은 혼란
% calculate the data cost per cluster center 
Dc = zeros([sz(1:2) k],'single'); 
for ci=1:k 
    % use covariance matrix per cluster 
    icv = inv(cov(d(l0==ci,:)));  
    dif = d- repmat(c(ci,:), [size(d,1) 1]); 
    % data cost is minus log likelihood of the pixel to belong to each 
    % cluster according to its RGB value 
    Dc(:,:,ci) = reshape(sum((dif*icv).*dif./2,2),sz(1:2)); 
end 

을 사용했다. 왜 그들은 공분산 행렬을 계산하고 어떻게 마이너스 로그 가능도를 사용하여 데이터 항을 형성 했습니까? 이러한 구현에 사용할 수있는 모든 논문 또는 설명?

고마워요.

답변

2

그래프 컷 세그먼트 화 예제는 모두 강력하게 관련되어 있습니다. Image Processing, Analysis, and Machine Vision: A MATLAB Companion book (첫 번째 예)의 저자는 Shai Bagon (작성자의 허가가 자연 스럽습니다)의 그래프 잘라 내기 래퍼 코드를 사용했습니다. 두 번째 예입니다.

어쨌든 데이터 용어는 무엇입니까?
데이터 용어는 각 픽셀 이 어떻게 독립적으로 각 레이블에 속하는지를 나타냅니다. 이것이 로그 가능성 (log-likelihood) 용어가 사용되는 이유입니다.

보다 구체적으로,이 예제에서는 이미지를 색상을 기준으로 세그먼트를 k으로 분할하려고합니다. 이미지에 dom37 색상이 있다고 가정합니다 (실제적인 가정은 아니지만 교육 목적으로는 충분 함). k을 사용하면 -이 두 색이 무엇인지 알아보십시오. k의 출력은 - 즉, k "대표적인"색 인 RGB 공간에 센터가 k 인 것을 의미합니다. 각 픽셀이 k 중심에 속할 확률은 대표 값 k 번째 중심에서 픽셀의 거리 (색상 공간에서)에 반비례합니다. 거리가 클수록 픽셀이 속하는 가능성이 적습니다. k - 중심에서,이 픽셀을 k 번째 클러스터에 할당하려면 단항 에너지 패널티가 높을수록 "지불"해야합니다.
두 번째 예제는이 개념을 한 발 앞선 것으로 간주하고 k 클러스터가 색 공간에서 서로 다른 밀도를 가질 수 있다고 가정하고 각 클러스터의 공분산 행렬을 사용하여이 2 차 동작을 모델링합니다.

실제로는 각 세그먼트에 대해 더 정교한 색상 모델을 사용합니다. 일반적으로 가우시안이 혼합되어 있습니다. 그것에 대해서는 GrabCut (3 절)의 정액 보고서에서 읽을 수 있습니다.

추신 :
다음번에 Shai Bagon에게 이메일을 보내실 수 있습니다.