2017-12-14 18 views
0

먼저 서핑 기능을 추출하여 클러스터링에 사용하는 것이 사실입니까? 유사한 객체를 이미지에 포함 시키려고합니까? (각 이미지는 하나의 객체를 포함합니다)계층 형 클러스터링에서 서핑 기능을 사용하는 방법

그렇다면 어떻게 가능합니까? 는이 같은 기능을 추출 :

I = imread('cameraman.tif'); 
points = detectSURFFeatures(I); 
[features, valid_points] = extractFeatures(I, points); 

특징 벡터 아니고 'detectSURFFeatures'가 다른 화상에서 차이 추출 점 matrix.Also 번호이다. 기능을 사용하려면 어떻게해야합니까?

답변

1

먼저 SIFT 기능이 아닌 SURF 기능을 감지합니다 (동일한 기본 목적을 제공하지만). 여러 가지 SURF 기능을 사용하는 이유는 SURF가 로컬 이미지 기능 즉, 이미지의 일부만 설명하기 때문입니다. 일반적으로 단일 이미지에서 여러 기능이 감지됩니다. 클러스터링을하기 전에 이러한 기능을 단일 이미지 설명자에 결합하는 방법을 찾고 싶을 것입니다.

이러한 기능을 결합하는 일반적인 방법은 Bag-of-words입니다.

자발적인 학습을하고있는 것처럼 보이므로 먼저 코드북을 배워야합니다. 가장 많이 사용되는 방법은 모든 이미지에서 추출한 모든 서핑 기능에 k-means clustering을 사용하는 것입니다.

이러한 클러스터를 사용하여 각 이미지에 대해 "코드 워드 모양"의 막대 그래프를 만들어 k 차원 이미지 설명자를 생성합니다. 이 경우 클러스터 당 하나의 "코드 워드"가 있습니다. SURF 기능이 연관된 클러스터에 속할 때마다 코드 워드가 "표시"됩니다.

코드 워드의 히스토그램은 각 이미지에 대한 이미지 설명자의 역할을합니다. 비슷한 이미지를 찾기 위해 이미지 디스크립터에 클러스터링을 적용 할 수 있습니다. 이미지 디스크립터를 일정한 표준으로 정규화하거나 k- 평균 클러스터링을 사용하는 경우 코사인 유사성 메트릭 (kmeans(X,k,'Distance','cosine'), MATLAB에서)을 사용하는 것이 좋습니다. 말했다


, 더 잘 작동 할 가능성이 솔루션은 이미지 디스크립터들을 사용 (ImageNet 같은) 매우 큰, 다양한 데이터 세트에 훈련 된 길쌈 신경 네트워크를 사용하여 깊은 특징을 추출하는 것입니다.

+0

답장을 보내 주셔서 감사합니다. 나는 [link] (https://stackoverflow.com/questions/44914225/clustering-surf-features-of-an-image-dataset-using-k-means-algorithm?rq=1)를 먼저 사용하지만, 코드 워드의 히스토그램을 어떻게 작성해야 사용할 수 있습니까? –

+0

각 이미지에 대해 해당 이미지의 피처에 해당하는'assignments '에있는 값의 서브 세트에 대해'histogram' 함수를 실행하십시오. 히스토그램 빈 가장자리를 항상 '0.5 : (k + 1)'로 정의하십시오. – jodag