2014-04-23 5 views
0

이미지에 슬라이딩 창이 있습니다. 해당 창 내의 평균 강도가> 210이면 GLCM 피쳐가 해당 창에서 계산됩니다. GLCM 기능이 if 문에서 조건을 충족하면이 슬라이딩 창 주위에 사각형을 그려야합니다. 그러나 사각형을 이미지의 올바른 위치에 있지 않은 다음 코드를 사용하여이 시도했다. 잘못된 위치에 직사각형을 그리는 코드를 넣었는지 또는 잘못된 좌표를 전달했는지 확신 할 수 없습니다. 누구든지 이걸 좀 도와 주실 래요?Matlab- 이미지에 사각형을 넣으십시오.

N2=8; 
info2 = repmat(struct, ceil(size(Z, 1)/N2), ceil(size(Z, 2)/N2)); 
for row1 = 1:N2:size(Z, 1)%loop through each pixel in the 8x8 window 
    for col1 = 1:N2:size(Z, 2) 
     x = (row1 - 1)/N2 + 1; 
     y = (col1 - 1)/N2 + 1; 

     imgWindow2 = Z(row1:min(end,row1+N2-1), col1:min(end,col1+N2-1)); 
     average2 = mean(imgWindow2(:)); 
     window2(x,y).average=average2; 

     if average2>210 
      offsets0 = [0 1]; 
      glcms = graycomatrix(imgWindow2,'Offset',offsets0); 
      stats = graycoprops(glcms,'all'); 

      correlation=[stats.Correlation]; 
      contrast=[stats.Contrast]; 
      homogeneity=[stats.Homogeneity]; 
      energy=[stats.Energy]; 

      %if these conditions are met then this window contains an ROI 
      if (homogeneity > 0.9) 
       if (contrast<0.2) 
        if (energy>0.6)              
         %%show the ROI on the original image%% 
         Z1 = insertShape(Z, 'rectangle', [x y 32 32]); 
         figure(2);  
         imshow(Z1); 
        end                       
       end 
      end 
     end % end if>210 
    end 
end % window 

답변

0

[x y 32 32] 대신 [col1 row1 32 32]를 사용해보세요. 나는 당신이 x와 y를 계산하는 이유를 이해하지 못한다. x와 y가 바뀌면 결국 픽셀이 아니라 "셀"에있게됩니다.