< Superpixel algorithm >

여러분들도 알다시피, 이미지는 그리드하게 픽셀로 이루어져 있습니다. 단일채널 또는 RGB채널 등으로 이루어져 있죠.

보통 이 알고리즘은 face detection이라던가 roadcrack에서 또는 다른 분야에서의 deep learning(이미지 분할)에 사용됩니다.

이 알고리즘에 의해서 얻을 수 있는 대략적인 이미지는 이렇습니다.

(이 이미지는 reference의 논문에 실려있습니다.)

이렇게 이미지를 pixel별로 구분하고, 후에는 grouping하여 사용할 수 있습니다.

이 grouping을 통해 이미지에서 일정 class나 object별로 구분지을 수 있겠죠?

(아래 그림은 두번째 논문에서 가져왔습니다.)

예를 들어, 밑 그림에서 색이 진한부분은 도로의 crack에 해당합니다.

 

 

https://ttic.uchicago.edu/~xren/research/superpixel/

에 따라 superpixel의 장점은 다음과 같습니다.

< properties of superpixel >

1. 계산 효율성: 위의 두 가지 예시처럼 각각 pixel을 grouping하는 것은 계산량이 꽤나 들것이라고 생각될 수도 있지만, 사실 이 알고리즘은 이미지의 복잡성을 수십 또는 수백만 픽셀 단위로 줄일 수 있습니다. 

2. 의미 공유: 이미지 안의 pixel은 단일 pixel로서의 의미는 가지지 않지만, superpixel로서의 pixel은 각각 그룹의 공통점을 공유하여 의미를 가지게 됩니다.

3. : 이미지에서의 객체 간 의미있는 바운더리를 찾아 분류할 수 있습니다. 이렇다 보면 사소한 특징을 분류할 수 없게 되기도 하지만, 위의 이미지와 같이 parameter(64, 256, 1024)을 통해 긍정적인 결과를 얻을 수 있습니다.

4. 표현 효율성(Representationally efficient) : 위의 말과 동일하게, 이미지를 단일 픽셀로 구분하게 되다보면 의미적으로, 계산적으로 상당히 비효율적입니다. 이에 반해서 이 알고리즘은 pixel 단위를 좀더 크게하여 좀 더 큰 의미를 가지는 pixel group을 형성하여 더욱 효율적으로 pixel끼리 상호작용할 수 있게 합니다. 

   

이 알고리즘은 크게 그래프 기반, gradient기반으로 이루어져 있습니다. 

  • graph-based : 각 픽셀을 그래프의 한 노드로, 노드 간 에지는 픽셀간 유사도에 비례하게 설정하여 그래프를 구성한다. 그리고 이 그래프의 cost를 최소화하는 상태를 선택하여 알고리즘을 실행한다. 
  • gradient-based : 미리 대충 나눠진 픽셀들에 대해서 클러스터링을 갱신하여 원하는 결과가 얻어질때까지 시행한다.

자세한 내용 및 식이나 알고리즘에 관한 설명은 이 곳을 참고하자.

 

Reference

Achanta, R., Shaji, A., Smith, K., Lucchi, A., Fua, P., & Süsstrunk, S. (2012). SLIC superpixels compared to state-of-the-art superpixel methods. IEEE transactions on pattern analysis and machine intelligence, 34(11), 2274-2282.
Varadharajan, S., Jose, S., Sharma, K., Wander, L., & Mertz, C. (2014, March). Vision for road inspection. In IEEE Winter Conference on Applications of Computer Vision (pp. 115-122). IEEE.
http://www.navisphere.net/1803/slic-superpixels-compared-to-state-of-the-art-superpixel-methods/
https://www.pyimagesearch.com/2014/07/28/a-slic-superpixel-tutorial-using-python/