0

나는 이것에 아주 새롭다; 텍스처를 결함이 있거나 결함이없는 것으로 분류하려고합니다. 저는 Gabor 필터 뱅크를 Matlab과 함께 사용했습니다. Matlab은 이미지의 Gabor 피처의 열 벡터를 출력합니다. 나는 결함이없는 이미지와 결함있는 이미지의 데이터 세트를 가지고있다.특징 벡터에서 분류

내 질문은 텍스처를 분류하기 위해이 (또는이) 특성 벡터를 사용하여 지금 무엇을 할 수 있습니까? 여러 가지 유형의 분류에 대해 읽었지만 유사한 유형의 구현을 찾지 못해 내가하는 일에 대한 아이디어를 얻을 수있었습니다. 많은 감사합니다.

+0

이 질문은 스택 오버플로에 적합한 형식이 아닙니다. 즉, 코드 문제는 아닙니다. http://stats.stackexchange.com/ 또는 http://dsp.stackexchange.com/에서 질문하는 것을 고려해야합니다. – Dan

+0

@Dan 감사합니다. 나는 DSP에 대해 물어볼 것입니다. –

답변

1

SVM (Support Vector Machine) 또는 신경망을 사용할 수 있습니다. SVM은 널리 사용되며 훌륭한 결과를 제공합니다. Matlab에서 사용하는 방법의 예.

  1. 먼저 '교육'및 '테스트'설정으로 데이터를 나누어야합니다.
  2. '교육'설정은 귀하가 알고있는 즉, 어떤 질감에 결함이 있고 어떤 것이 결함인지를 아는 것입니다.
  3. '테스트'집합은 분류 방법을 테스트하려는 집합입니다.

행렬 training 행렬에는 각 행이 이미지의 특징 벡터 (전치 된 열 벡터)에 해당하는 모든 학습 세트 이미지의 가보 (Gabor) 피처가 포함되어 있습니다. 처음 25 개는 결함이없고 다음 25 개는 결함이 있다고 가정합니다. 이제 결함이있는 SVM과 그렇지 않은 SVM을 알려주는 group 행렬을 만들어야합니다.따라서

group = [ones(25,1); -1*ones(25,1)]; // non-defective = 1, defective = -1  
SVMStruct = svmtrain(training, group); 

SVMStruct은 '테스트'데이터를 분류하는 데 사용할 지원 벡터입니다. 이전에 Gabor 기능이 testing 행렬에 포함되어 있습니다.

results = svmclassify(SVMStruct, testing); 

results 1 -1 포함 이루어진 결정에 따라 최종 결정 행렬이다.

+0

+1 당신의 예에서 알 수 있듯이, 당신은 50 이미지의 훈련 집합을 가지고 : 25 결함과 25 불량. 전치 된 특징 벡터의 학습 행렬로 SVM을 학습한다. 나는 svmtrain이하는 일에 대해 약간 확신하지 못한다. 학습 매트릭스를 그룹 매트릭스와 어떻게 연관 시키는가? –

+1

그룹 매트릭스는 SVM에 결함이있는 기능과 결함이없는 기능을 알려줍니다. 따라서 예제 그룹 (1) = 1에서 '훈련'행렬의 첫 번째 행은 결함이없는 이미지의 피쳐입니다. 다른 모든 행에 대해서도 마찬가지입니다. – articuno

+1

정보를 제공해 주셔서 감사합니다. 매우 도움이됩니다. –

1

특징 벡터를 추출한 경우 여러 가지 방법이 있습니다.

  • 예를 들어 두 클래스의 샘플에 svm 접근법을 사용할 수 있습니다.

  • 간단한 방법은 가장 가까운 이웃, 가까운 무게 중심 등을 포함 편집

:

나는이 코멘트가 될 것입니다하지만 너무 길어 지 고 생각했다. 귀하의 샘플의 분리 가능성에 관하여

: 선형 분리 성을 결정하는

  • 한 가지 방법은 (당신이 선형으로 붙어 있도록 어쨌든 시간 efiiciency에 대해 우려하지 않는 한)을 경계로 선형 SVM을 사용하는 것입니다. 이 SVM 모델은 오버 트레인이 아니며 분리 가능성에 대한 단서를 제공 할 수 있습니다.
  • 다른 옵션으로 샘플을 더 적은 치수로 투사 할 수있는 pca가 포함되어 있으며 이러한 축소 된 치수 샘플을 시각적으로 쉽게 그려 볼 수 있습니다. 이 방법은 시각적 인 검사의 장점이 있지만 샘플의 분리 가능성을 얼마나 잘 나타내는가에 따라 달라집니다. 어쩌면 분리 가능성이 비 주성분 (즉, 샘플의 차원)에 놓여 있고 그 다음에 pca가 실패 할 수도 있습니다.
  • 거친 근사로 나는 종종 내 표본의 무작위 치수를 함께 정리하여 신속하게 (그리고 아마도 부정확 한) 표정을 얻는다. 예를 들어 100 차원의 샘플이있는 경우 두 개의 클래스가 크게 충돌하는지 확인하기 위해 처음 2 차원 만 플로팅 할 수 있습니다 (2D 샘플이있는 경우처럼). 그럴 경우 다른 차원을 확인할 수 있지만 그렇지 않은 경우 적어도 차원에 따라 분리 할 수 ​​있다는 것을 알고 있습니다.
+0

제안을 주셔서 감사합니다 (+1). 그러나 이미이 기술에 대해 알고 있습니다. 프로그래밍 방법에 대한 이해와 어떤 분류가 가장 적합한 지에 대한 실제적인 예를 더 찾고 있습니다. –

+0

데이터에 따라 분류되는 분류입니다. 데이터가 충분히 분리 할 수 ​​없다면 어떤 기법도 속임수를 쓰지 않을 것입니다. 성능을 확인하기 위해 다른 매개 변수를 시도 할 수 있습니다. – Eypros

+0

데이터 분리 가능성을 알 수있는 방법이 있습니까? 이미지 크기에 따라, 내가 가지고있는 특성 벡터는 30,000에서 2,360,000 개의 요소까지 가질 수 있습니다. –