누구든지 Mean Shift 세분화가 실제로 어떻게 작동하는지 이해하도록 도와 주시겠습니까?
방금 만든 8×8 행렬이 있습니다.
103 103 103 103 103 103 106 104
103 147 147 153 147 156 153 104
107 153 153 153 153 153 153 107
103 153 147 96 98 153 153 104
107 156 153 97 96 147 153 107
103 153 153 147 156 153 153 101
103 156 153 147 147 153 153 104
103 103 107 104 103 106 103 107
위의 행렬을 사용하여 평균 이동 세분화가 세 가지 다른 수준의 숫자를 분리하는 방법을 설명 할 수 있습니까?
답변
우선 기본 사항 :
평균 이동 세분화는 지역화 된 객체의 음영 또는 색조 차이를 감쇠하는 데 매우 유용한 로컬 균질화 기술입니다. 예는 여러 단어보다 낫습니다.
조치 : 각 픽셀을 range-r 이웃에 있고 값이 거리 d 내에있는 픽셀의 평균으로 대체합니다.
평균 이동은 일반적으로 3 개의 입력을 사용합니다.
- 픽셀 간의 거리를 측정하는 거리 기능입니다. 일반적으로 유클리드 거리이지만 잘 정의 된 다른 거리 함수를 사용할 수 있습니다. 맨하탄 거리 때로는 또 다른 유용한 선택이 될 것입니다.
- 반경. 이 반경 내의 모든 픽셀 (위의 거리에 따라 측정 됨)이 계산에 포함됩니다.
- 가치 차이. 반지름 r 내부의 모든 픽셀에서 값이이 차이 내에있는 픽셀 만 평균을 계산합니다.
알고리즘은 경계에서 잘 정의되어 있지 않으므로 다른 구현은 다른 결과를 제공합니다.
적절한 수학적 표기법 없이는 표시 할 수없고 StackOverflow에서 사용할 수 없으며 다른 곳에서 좋은 소스에서 찾을 수 있기 때문에 여기에서는 피투성이 수학적 세부 사항에 대해 논의하지 않겠습니다 .
행렬의 중심을 살펴 보겠습니다.
153 153 153 153
147 96 98 153
153 97 96 147
153 153 147 156
반경과 거리를 합리적으로 선택하면 4 개의 중앙 픽셀은 97 (평균) 값을 갖게되며 인접한 픽셀과는 다른 형태가됩니다.
Mathematica 에서 계산해 봅시다 . 실제 숫자를 표시하는 대신 색상 코딩을 표시하므로 무슨 일이 일어나고 있는지 더 쉽게 이해할 수 있습니다.
매트릭스의 색상 코딩은 다음과 같습니다.
그런 다음 합리적인 평균 이동을 취합니다.
MeanShiftFilter[a, 3, 3]
그리고 우리는 :
모든 중심 요소가 동일한 경우 (97, BTW).
보다 균일 한 색상을 얻기 위해 평균 이동을 여러 번 반복 할 수 있습니다. 몇 번의 반복 후에 안정적인 비 등방성 구성에 도달합니다.
이때 Mean Shift를 적용한 후 얻을 수있는 “색상”수를 선택할 수 없음이 분명해야합니다. 그럼, 어떻게하는지 보여 드리겠습니다. 질문의 두 번째 부분이기 때문입니다.
미리 출력 클러스터 수를 설정하기 위해 필요한 것은 Kmeans 클러스터링 과 같은 것 입니다.
매트릭스에 대해 다음과 같이 실행됩니다.
b = ClusteringComponents[a, 3]
{{1, 1, 1, 1, 1, 1, 1, 1},
{1, 2, 2, 3, 2, 3, 3, 1},
{1, 3, 3, 3, 3, 3, 3, 1},
{1, 3, 2, 1, 1, 3, 3, 1},
{1, 3, 3, 1, 1, 2, 3, 1},
{1, 3, 3, 2, 3, 3, 3, 1},
{1, 3, 3, 2, 2, 3, 3, 1},
{1, 1, 1, 1, 1, 1, 1, 1}}
또는:
이는 이전 결과와 매우 유사하지만 보시다시피 이제 출력 레벨이 3 개뿐입니다.
HTH!
답변
Mean-Shift 세분화는 다음과 같이 작동합니다.
이미지 데이터는 기능 공간으로 변환됩니다.
귀하의 경우에는 강도 값만 있으면되므로 기능 공간은 1 차원 일뿐입니다. (예를 들어 일부 텍스처 기능을 계산하면 기능 공간이 2 차원이되고 강도 와 텍스처를 기반으로 분할됩니다 )
검색 창은 기능 공간에 배포됩니다.
이 예에서 창 수, 창 크기 및 초기 위치는 임의적입니다. 특정 응용 프로그램에 따라 미세 조정할 수 있습니다.
Mean-Shift 반복 :
1.) 각 창 내 데이터 샘플의 MEAN이 계산됩니다.
2.) 창은 이전에 계산 된 평균과 동일한 위치로 이동됩니다.
수렴 될 때까지 1 단계와 2 단계가 반복됩니다. 즉, 모든 창이 최종 위치에 고정됩니다.
같은 위치에있는 창은 병합됩니다.
데이터는 창 순회에 따라 클러스터링됩니다.
… 예를 들어, “2”위치에 도달 한 창에 의해 순회 된 모든 데이터는 해당 위치와 관련된 클러스터를 형성합니다.
따라서이 세분화는 (동시에) 세 그룹을 생성합니다. 이러한 그룹을 원래 이미지 형식으로 보는 것은 belisarius의 답변의 마지막 그림과 비슷할 수 있습니다. 다른 창 크기와 초기 위치를 선택하면 다른 결과가 생성 될 수 있습니다.