2014-06-11 2 views
-1

Matlab에서 도로 표지 인식 프로그램을 수행하고 있는데 원형 도로 표지를 인식하고 싶습니다. 따라서 나는 matlab 함수 imfindcircles를 사용한다. 원형 도로 표지 만 자르고 분리 된 그림에 넣고 싶습니다. 그러나 우리는 각 그림 (삼각형 또는 사각형)마다 다른 roadsigns을 가지고 있지만 나는 그것들을 원하지 않습니다. 나는 이것을 어떻게하는지 모른다. 여기에 내 코드 :imfindcircles로 이미지의 원 자르기

[im_bw,map] = imread('roadsign.JPG'); %image black and white 

S = regionprops(im_bw,'Extrema','Centroid','BoundingBox'); 

[centers, radii] = imfindcircles(im_bw,[12 40]); 

for k = 1:length(S) 

    im_cercle = imcrop(im_bw, S(k).BoundingBox); 
    im_cercle = padarray(im_cercle, [20 20]); % put each roadsigns in a small figure 

     if radii(k) ~= 0 % Error 

    figure,imshow(im_cercle); title 'Circle spotted'; % Show every circular roadsigns in a figure 

     else 

    figure('visible','off'),imshow(im_cercle); title 'wrong raodsign'; 

     end 

end 

나는 센터와 반경과 다른 조건을 시도했지만 내가 코드를 실행할 때, 나는 차원의 오류를 얻거나 때때로 나를 원이 아닌 모양을 보여줍니다. 또한 서클을 찾을 때만 설정하는 변수를 시도했지만 결과는 표시하지 않았습니다. 도와 줄수있으세요 ?

미리 감사드립니다.

+1

이미지를 추가 할 수 있으면 도움이 될 것입니다. – bla

답변

0

regionprops의 출력을 예상 하시겠습니까? 서클을 골라 내지 않고 모든 "영역"(연결 영역 인 것은 im_bw)을 선택합니다. 또한 imfindcircles은 다른 것들과 겹치는 원을 찾을 수 있지만 regionprops은 겹치는 부분을 하나의 객체로 감지합니다.

한편, imfindcircles을 호출 한 다음 출력을 수행하지 않습니다.

오히려 regionprops으로 아무것도 아닌 단지 표시/화상 중 해당 영역 (임의로 추가적인 패딩) 각각의 검출 원 작물 주위에 경계 박스를 정의하고 저장 centers, radii의 값을 사용한다.

관련 문제