다양한 표지판이있는 RGB 이미지가 있습니다. 나의 주요 목표는 이미지 테두리와 접촉하는 표시를 세는 것입니다.
접근과 문제
이미지를로드하여 시작했습니다 [그림. 1] 그런 다음 그레이 스케일로 변환하고 중간 필터를 적용하여 약간의 노이즈를 제거했습니다 [그림. 2]. 그런 다음 0.2의 임계 값으로 이진화하여 그림 3을 얻었습니다. 현재 이진화 된 이미지를 얻었지만 문제는 동일한 부호에 속하는 일부 부분이 하나가 아닌 여러 영역에 나타납니다. 이제 내 목표는 동일한 객체에 속한 영역을 병합하는 것이므로 bwlabel
이미지에 몇 개의 표시가 있는지 계산 imclearborder
하고 테두리에있는 표시를 없애고 bwlabel
다시 사용 하여 차이점을 얻을 수 있습니다. 둘.
나의 접근 방식은 사용하는 것이 었습니다 bwmorph
, Dilate
그들을 채우기 위해 시도하십시오 개체를 팽창하고 imfill
, holes
. 그러나 문제는 그것들을 조금만 팽창 시키면 [그림. 4], imfill
그것들을 다량으로 확장하면 [그림 5] 모든 객체가 병합되기 시작합니다.
암호
img=im2double(imread('image.png')); figure, imshow(img)
img_gray=rgb2gray(img); imshow(img_gray);
img_mediana=medfilt2(img_gray, [3 3]); figure, imshow(img_mediana);
img_bin=im2bw(img_mediana, 0.2); imshow(img_bin)
img_dilate=bwmorph(img_bin, 'Dilate', 10); imshow(img_dilate)
img_fill=imfill(img_dilate, 'Holes'); figure, imshow(img_fill)
피규어
그림 1 :
그림 1 http://dl.dropbox.com/u/5272012/1.png
그림 2 :
그림 2 http://dl.dropbox.com/u/5272012/2.png
그림 3 :
그림 3 http://dl.dropbox.com/u/5272012/3.png
그림 4 :
그림 4 http://dl.dropbox.com/u/5272012/4.png
그림 5 :