2014-03-04 2 views
0

Matlab에서 GUI를 만들어야합니다. 두 이미지의 스폿을 식별하고 그 사이의 거리를 계산해야합니다.Matlab GUI 배열 배열

나는 하나의 지점을 찾아 내고 둘러싸는 코드를 얻었다. 그것은 다음과 같다 : 아래 그림과 같이

function [meanx,meany] = centroid(pic) 
[x,y,z] = size(pic); 
if(z==1) 
    ; 
else 
    pic = rgb2gray(pic); 
end 

% N=2; 
% image = interp2(double(pic),N,'spline'); 
image = sort(sort(pic,1),2); 
image =reshape(image,1,numel(image)); 
i=0; 
while(i<3) 
     if(image(end)==image(end-1)) 
       image(end)=[]; 
     else 
      image(end)=[]; 
      i=i+1; 
     end 
end 
    threshold = image(end); 
     pic2 =(pic>=threshold); 
pic=(pic-threshold).*uint8(pic2); 
% % image=(pic-threshold+1).*uint8(image);  %minus threshold 


[rows,cols] = size(pic); 
x = ones(rows,1)*[1:cols]; 
y = [1:rows]'*ones(1,cols); 

area = sum(sum(pic)); 
if area ~= 0 
    meanx = sum(sum(double(pic).*x))/area; 
    meany = sum(sum(double(pic).*y))/area; 
else 
    meanx = cols/2; 
    meany = rows/2; 
end 

을하지만, 내가 여러 지점을 위해 일해야합니다

http://imgur.com/oEe0mRV,UAnbH5y#1

http://imgur.com/oEe0mRV,UAnbH5y#0

지금까지, 나는이 함께 올라와있다, 그러나 그것은 단 하나의 동그라미와 동그라미가 아닙니다. 제발 도와주세요 - 적어도 10X10 관광 명소를 둘러싸고 그들의 값을 저장할 필요가 위에서 설명한 두 이미지에 대해, 그리고 그들 사이의 거리를 찾으십시오!

img1 = imread('r0.bmp'); 
centroidmat=zeros(10,10,2); 
for numx=1:2 
    for numy=1:2 
     single_spot=img1((numx*220+780):((numx+1)*220+780),(numy*220+1272):((numy+1)*220+1272),:); 
     figure 
     imshow(single_spot); 
     figure 

     [cx,cy] = centroid(single_spot); 
     centroidmat(numx,numy,1)=cx; 
     centroidmat(numx,numy,2)=cy; 
     imshow(single_spot); 
     hold on; 
     plot(cx,cy,'og') 

    end 
end 

제발 도와주세요! 어떤 도움을 주셔서 감사합니다!

답변

0

이 방법이 유용할까요? -

centroidmat=zeros(10,10,2); 
for numx=1:2 
    for numy=1:2 
     single_spot=img1((numx*220+780):((numx+1)*220+780),(numy*220+1272):((numy+1)*220+1272),:); 

     [cx,cy] = centroid(single_spot); 
     centroidmat(numx,numy,1)=cx; 
     centroidmat(numx,numy,2)=cy; 

     figure, 
     imshow(single_spot); 
     hold on; 
     plot(cx,cy,'og') 
    end 
end 

난 단지 중복 그림imshow (single_spot)을 제거했다; 루프의 시작 부분에이 나타나며, 나중에 같은 루프 내부에서 다시 나타납니다.