히비스서커스의 블로그

[Technique] Graph cut 본문

Theory/Bio-Medical

[Technique] Graph cut

HibisCircus 2021. 10. 3. 21:54
728x90

이 내용은 edwith Medical Image Analysis강의를 참조하였음을 미리 밝힙니다.

 

의료영상 segmentation에서 주로 쓰이는 기법으로 Graph cut Active contour model이 많이 쓰이고 있다. 그 중 graph cut에 대해서 자세히 알아보자.

 

핵심아이디어

 

 

먼저, 주어진 이미지에서 각 픽셀에 대한 컬러값 observation으로 zi로 표기하며 segmentation의 label값xi이라 하자. 이제 zi들과 xi들은 변수로 작용하여 graph model에 적용하여 이들간의 상호 의존관계를 식(P(x1,x2,...,xn|z1,z2,...,zn))으로 표현할 수 있게 된다.

 

 

이 graph model의 식을 최적화하는 과정에서 Min cut / Max flow 방법을 통해 segmentatioin result를 구하는 방법graph cut이다.

 

최적화 과정 

 

zi가 주어질 때 xi의 확률을 구하는 것이므로 위의 식을 사후 확률(posterior probability)로 볼 수 있다. 이럴 경우 Bayes' rule에 의하여 가능도(likelihood = P(z1,z2,...,z9|x1,x2,...,x9))사전 확률(prior probability = P(x1,x2,...,x9))의 곱P(z1,z2,...,z9)로 나눈 식으로 변환이 가능하다. 우리는 사후 확률을 최대화 시키는 xi의 값들에 관심이 있는 것이기 때문에 고정되어 있는 P(z1,z2,...,zn)들의 값을 제외하고 가능도와 사전확률을 최대화 시키는 값을 고려하면 된다. 

 

가능도 (likelihood)

P(z1,z2,...,z9|x1,x2,...,x9) => Naive bayes assumption => P(zi|xi)

가능도의 값을 구하는 것도 복잡한 과정이기에 하나의 가정을 추가한다. 바로 xi들이 서로 독립적이라는 가정이라는 Naive bayes assumption이다. 이를 통해 가능도의 식은 P(zi|xi)와 같이 나타낼 수 있게 된다.

 

사전확률 (prior probability)

P(x1,x2,...,x9) => Markov reception field => (i,j)P(xi,xj)

사전확률을 구하는 과정도 내부에 많은 변수들이 존재하기 때문에 구하는 과정이 복잡하다. 따라서, xi의 값 하나를 구할 때 xi의 주변에 있는 값들 xi1, xi+1 등을 고려해주는 Markov random field를 적용해준다.

 

이를 적용해줌으로써 한 label의 상하좌우 대각선 label이 1값을 갖으나 중심의 label이 0이 되는 상황을 방지할 수 있도록 해준다. 

 

전반적으로 다시 한번 식을 보게 되면 zi라는 관측값들이 주어짐과 동시에 xi라는 label들이 값을 갖게 되고 (= likelihood term), 이때 xi들의 label값들이 smooth하게 되어야 한다는 것(= prior term)이다. 

 

위의 사후확률을 최대화하는 xi값들만 구하는 것이기에 사후확률의 식을 단조증가함수나 단조감소함수를 통해 나타내어도 상관이 없다. 사후확률의 식을 아래와 같이 지수로 나타내면

곱으로 나타내어지던 가능도와 사전확률이 합으로 나타내게 되어진다. 이를 통해 좀 더 쉽게 접근할 수 있게 되었다.

 

likelihood term

픽셀의 값(zi)이 blue일 때 label(xi)의 값이 0일 것이라는 하나의 가정하에서 xi의 값이 0인 경우 값이 작아지도록 likelihood term이 나오게 된다.

 

prior term

boundary(픽셀값들의 차이가 큰 경우)에서는 값이 작아지고 아닌 경우에는 작아지도록 prior term이 나오게 된다.

 

Min cut / Max flow

픽셀값들을 노드로 하여 그래프 모델에 적용해보자. 픽셀값들에 대한 label이 0이 나오는 경우는 source1이 나오는 경우는 target 보면 아래의 그림과 같이 나타낼 수 있다.

source에서 물을 흘려보내주어 아래로 침수되는 과정을 생각해보자. 중간의 노드들간에 이동이 이루어질 수 있다. 

 

노드들 간의 이동이 이루어질 수 있는 횟수가 있는데 0이 되면 cut이 된다. 최종적으로 이들의 cut된 부분segmentation이 이루어지는 것이다.

 

 

 

 

-히비스서커스-

 

728x90