2011-04-07 10 views
-1

동전 이미지가있는 이미지가 있습니다. 동전의 모양은 직사각형, 정사각형, 원형, 타원형 등이 될 수 있습니다. 사각형 위에 동전을 그려서 배경에서 동전을 조각하고 싶습니다. 코인은 이미지의 어느 곳에 나있을 수 있기 때문에 사각형의 x 또는 y 값을 줄 수는 없습니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까?Matlab을 사용하여 대상 위에 사각형을 그립니다.

+1

이진 이미지입니까? 즉, 동전이 다른 곳에있는 동전? 아니면 하나로 변환 될 수 있습니까? – abcd

+0

@R. M. 원래 하나는 컬러 이미지이고 그 이미지의 바이너리 버전도 가지고 있습니다. –

+0

동전 위에 직사각형을 그리기를 원하면 동전이 들어있는 작은 영역을 선택한 다음이 작은 이미지에서 세분화를 수행하겠습니까? – Ghaul

답변

0

먼저 MathWorks advice on pattern recognition을 읽어보십시오. 정확히 어떻게 문제를 해결할 수 있습니까? 예 :

  • 동전 이외의 다른 이미지는 무엇입니까?

  • 은 모두 같은 색이나 다른 색상의 동전입니까?

  • 식별 된 동전 위치가있는 일련의 이미지가 있습니까? 아래

1

내 대답은 이미 동전을 발견했다고 가정 당신은 당신이 작업 할 수있는 청소 이미지 (바이너리가 좋은 것)이있다.

enter image description here

coin=load('penny.mat'); %#load matlab's stock image 
img=zeros(256,256); 
img(65:192,65:192)=coin.P;%# this is an approximation to the sort of image that I think you have 

이제 우리는 경계 사각형의 크기를 알기 위해 이미지의 확장이 필요합니다. 배열은 이미지가 있고 다른 곳에 0이 아닌 0이 아니므로, 다음은 변의 길이를 나타냅니다.

sideX=sum(sum(img,1)>0); 
sideY=sum(sum(img,2)>0); 

kmeans을 사용하여 이미지의 중심을 찾습니다.

[indX,indY]=ind2sub(size(img),find(img(:)>0)); 
[~,centroid]=kmeans([indX,indY],1); 

마지막으로 이미지 위에 사각형을 오버레이합니다.

imagesc(img);colormap(gray);hold on 
rectangle('Position',([centroid,sideX,sideY]-[sideX,sideY,0,0]/2),'EdgeColor','w');hold off 

결과 : 당신이 시끄러운 이미지가있는 경우

enter image description here

(즉, 그것은 이미지 외부 균일 제로 아닙니다, 당신은 경계 상자를 찾기 위해 임계 값을 설정해야 할 것이다)

관련 문제