MATLAB에서 이미지 테두리가 교차하는 객체 수 계산


9

다양한 표지판이있는 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 :

그림 5 http://dl.dropbox.com/u/5272012/5.png


내 질문은 표지판이 깨 졌다는 것을 정확하게 알려주는 것입니까? 실제로 출력을 어떻게 하시겠습니까? 내 말은-당신은 잘라 모든 표지판을 Colorize 원하십니까? 또는 각 기호를 나열하고 잘라 내기 / 전체를 분류 하시겠습니까?
Dipan Mehta

답변:


3

제 생각에 팽창 침식은 매우 기본적인 도구입니다. 그러한 결정을 내리기 위해서는 매우 강력한 정보 기반과 상당히 적절한 입력 이미지가 있습니다.

여기 내 견해가 있습니다 :

  1. 그림 1에서 3까지의 합리적인 성공을 보여 주면 개별 표지판을 식별하고 분류 할 수 있습니다.

  2. 이전에 징후를 알고 있다고 가정하면 적절한 알고리즘을 적용하여 패턴 일치를 수행 할 수 있습니다. 정확한 패턴을 모르는 경우 패턴의 외부 모양 만 식별하면됩니다.

  3. 분류를 기반으로 항상 일치하는 각 패턴의 중심과 해당 너비와 높이를 정의 할 수 있습니다. 만약 중심 X, Y 위치가 경계에 너무 가까우면 즉, 또는 가장자리를 벗어나면 Y 축에도 적용 할 수 있습니다.centroid(x)<0centroid(x)>imagewidthshapewidth

  4. 가장자리에 떨어지는 것에 대해서만 걱정할 경우 각 가장자리로 시작하여 패턴 일치를 시작해야합니다. 부분 패턴 / 모양과 일치하고 시작 부분 패턴 / 형상이 일치하는 않는 경우, 오브젝트는 IS 가장자리에 절단되고.

다음은 문제를 잘 정리하는 데 도움이 될만한 참고 자료입니다.

이 백서는 다루고있는 Signs / Token에 대한 많은 기본 사항을 이해하는 데 매우 좋습니다.

Anil K. Jain 및 Aditya Vailaya 형태 기반 검색 : 상표 이미지 데이터베이스를 사용한 사례 연구 패턴 인식 1998, vol. 31, 9, pp. 1369-1390

부분 또는 폐색 된 모양 / 패턴 일치를 다루는 많은 연구 요소가 있습니다.

Eli Saber, Yaowu Xu, A. Murat Tekalp 부분 매칭 안내 이미지 라벨링을위한 서브 매트릭스 매칭에 의한 부분 형상 인식 패턴 인식 38 (2005) 1560 – 1573

이 방법을 사용하면보다 구체적인 쿼리에 대해이 답변을 확장합니다.


야! 패턴 일치를 사용할 수 없습니다. 시간이 너무 오래 걸리고 계산 작업이 너무 많기 때문입니다. 또한 물체 (표지)의 규모는 가변적 일 수 있습니다 (교수는 우리에게 부호가 +30 %에서 -30 % 사이의 배율을 가질 수있는 임의의 이미지를 제공하므로 패턴 일치가 쓸모가 없습니다. 이 문제를 해결하기 위해
Rui Trovisco

@RuiTrovisco 나는 이것을 이해한다. 그렇기 때문에 내가 쓴 이유는 귀하의 의견에 따라 답변을 개선하는 것입니다. 귀하의 질문에 의견을 남겼습니다. 거기로 돌아가십시오.
Dipan Mehta

1

여기 당신이 추구하는 것과 반대되는 작은 영감이 있습니다.

fig3로 시작하십시오.

% Find background
labels = bwlabel(~fig3);
[n,idx] = hist(labels(:),0:max(labels(:)));
[bgrSize bgrLableIdx] = max(n);
bgr = (labels == idx(bgrLableIdx));
bgr = imopen(bgr,strel('disk',3));

% Remove border objects and cleanup
borderCleared = imclearborder(~bgr);
borderCleared = imopen(borderCleared,strel('disk',3));

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.