2014-09-15 3 views
0

질문 : imread() 함수로로드 된 이미지와 함께 matlab에서 subclust() 함수를 사용하는 방법은 무엇입니까? 나는 코드를 가지고있다matlab에 서브 클러스터를 사용하는 방법

이 이미지에 클러스터 센터를 가져와야하므로 결과적으로 이미지의 픽셀을 분류해야한다. 하지만 오류가 있습니다

Error using .* 
Integers can only be combined with integers of the same class, or scalar doubles. 

Error in subclust (line 169) 
    dx = (thePoint - X) .* new_accumMultp; 

Error in lab_1 (line 3) 
[c, s] = subclust(gr, 0.3); 

무엇 나는 claster 센터를 찾으려면 어떻게해야합니까? 사전

+1

당신이 이미지를 업로드 할 수 없습니다 : 귀하의 경우

im = imread('cameraman.tif'); %// Image already grayscale [c,s] = subclust(double(im), 0.3); 

, 당신이해야 할 것입니다 : 예를 들어, 내가 MATLAB의 시스템 경로의 일부 cameraman.tif를 사용? 또한 전체 [도움말 페이지] (http://www.mathworks.com/help/fuzzy/subclust.html)가 도움이되지 않는다고 말하는 것입니까? –

+0

@ Dev-iL 이미지를 업로드 할 수는 있지만 인터넷의 임의 이미지입니다. 내 전체 코드 'rgb = imread ('test.jpg'); gr = rgb2gray (rgb); [c, s] = subclust (gr, 0.3); imshow (gr); ' 하지만 오류가 있습니다. '오류 사용. * 정수는 동일한 클래스 또는 스칼라 복식의 정수와 결합 될 수 있습니다. 서브 클러스터의 오류 (줄 169) \t dx = (thePoint - X). * new_accumMultp; lab_1 (3 호선) 오류 [c, s] = subclust (gr, 0.3); ' – loki

+0

그리고 전에 matlab을 사용 해본 적이 없습니다 ... 내 질문에 어리 석게 여겨지면 죄송합니다. – loki

답변

1

subclust 때문에 uint8 (또는 내가 생각 정수 ...)입니다 입력을 지원하지 않습니다되어 작동하지 않는 이유에

감사합니다. 내 생각에 내부적으로 subclust 배열/행렬을 double 형식으로 만드는 경우 해당 배열/행렬을 사용하여 작업을 수행하려고하면 오류가 발생합니다. 다른 변수 유형을 혼합하여 수행 된 작업은 오류로 암시되므로 허용되지 않습니다.

이와 같이 이미지를 double으로 전송 한 다음 코드를 다시 실행하십시오. 이것은 실제 숫자를 변경하지 않지만 대신 변수 클래스를 변경합니다 (double). 나는 이것을했고 그것은 나를 위해 일했다.

rgb = imread('6_rubets.jpg'); 
gr = rgb2gray(rgb); 
[c, s] = subclust(double(gr), 0.3); 
관련 문제